Build log:
Mock Version: 5.5
Mock Version: 5.5
Mock Version: 5.5
ENTER ['do_with_status'](['bash', '--login', '-c', '/usr/bin/rpmbuild -bs --noclean --target noarch --nodeps /builddir/build/SPECS/copr-frontend.spec'], chrootPath='/var/lib/mock/f41-build-49469772-5882760/root'env={'TERM': 'vt100', 'SHELL': '/bin/bash', 'HOME': '/builddir', 'HOSTNAME': 'mock', 'PATH': '/usr/bin:/bin:/usr/sbin:/sbin', 'PROMPT_COMMAND': 'printf "\\033]0;<mock-chroot>\\007"', 'PS1': '<mock-chroot> \\s-\\v\\$ ', 'LANG': 'C.UTF-8'}shell=Falselogger=<mockbuild.trace_decorator.getLog object at 0x7fff8487f0b0>timeout=201600uid=1000gid=425user='mockbuild'nspawn_args=['--capability=cap_ipc_lock', '--bind=/tmp/mock-resolv.duyh4tau:/etc/resolv.conf', '--bind=/dev/btrfs-control', '--bind=/dev/mapper/control', '--bind=/dev/fuse', '--bind=/dev/loop-control', '--bind=/dev/loop0', '--bind=/dev/loop1', '--bind=/dev/loop2', '--bind=/dev/loop3', '--bind=/dev/loop4', '--bind=/dev/loop5', '--bind=/dev/loop6', '--bind=/dev/loop7', '--bind=/dev/loop8', '--bind=/dev/loop9', '--bind=/dev/loop10', '--bind=/dev/loop11']unshare_net=TrueprintOutput=False)
Using nspawn with args ['--capability=cap_ipc_lock', '--bind=/tmp/mock-resolv.duyh4tau:/etc/resolv.conf', '--bind=/dev/btrfs-control', '--bind=/dev/mapper/control', '--bind=/dev/fuse', '--bind=/dev/loop-control', '--bind=/dev/loop0', '--bind=/dev/loop1', '--bind=/dev/loop2', '--bind=/dev/loop3', '--bind=/dev/loop4', '--bind=/dev/loop5', '--bind=/dev/loop6', '--bind=/dev/loop7', '--bind=/dev/loop8', '--bind=/dev/loop9', '--bind=/dev/loop10', '--bind=/dev/loop11']
Executing command: ['/usr/bin/systemd-nspawn', '-q', '-M', '788ff2ea090745c593930d8739d607ba', '-D', '/var/lib/mock/f41-build-49469772-5882760/root', '-a', '-u', 'mockbuild', '--capability=cap_ipc_lock', '--bind=/tmp/mock-resolv.duyh4tau:/etc/resolv.conf', '--bind=/dev/btrfs-control', '--bind=/dev/mapper/control', '--bind=/dev/fuse', '--bind=/dev/loop-control', '--bind=/dev/loop0', '--bind=/dev/loop1', '--bind=/dev/loop2', '--bind=/dev/loop3', '--bind=/dev/loop4', '--bind=/dev/loop5', '--bind=/dev/loop6', '--bind=/dev/loop7', '--bind=/dev/loop8', '--bind=/dev/loop9', '--bind=/dev/loop10', '--bind=/dev/loop11', '--console=pipe', '--setenv=TERM=vt100', '--setenv=SHELL=/bin/bash', '--setenv=HOME=/builddir', '--setenv=HOSTNAME=mock', '--setenv=PATH=/usr/bin:/bin:/usr/sbin:/sbin', '--setenv=PROMPT_COMMAND=printf "\\033]0;<mock-chroot>\\007"', '--setenv=PS1=<mock-chroot> \\s-\\v\\$ ', '--setenv=LANG=C.UTF-8', '--resolv-conf=off', 'bash', '--login', '-c', '/usr/bin/rpmbuild -bs --noclean --target noarch --nodeps /builddir/build/SPECS/copr-frontend.spec'] with env {'TERM': 'vt100', 'SHELL': '/bin/bash', 'HOME': '/builddir', 'HOSTNAME': 'mock', 'PATH': '/usr/bin:/bin:/usr/sbin:/sbin', 'PROMPT_COMMAND': 'printf "\\033]0;<mock-chroot>\\007"', 'PS1': '<mock-chroot> \\s-\\v\\$ ', 'LANG': 'C.UTF-8', 'SYSTEMD_NSPAWN_TMPFS_TMP': '0', 'SYSTEMD_SECCOMP': '0'} and shell False
Building target platforms: noarch
Building for target noarch
setting SOURCE_DATE_EPOCH=1709510400
Wrote: /builddir/build/SRPMS/copr-frontend-1.204-1.fc41.src.rpm
Child return code was: 0
ENTER ['do_with_status'](['bash', '--login', '-c', '/usr/bin/rpmbuild -bb --noclean --target noarch --nodeps /builddir/build/SPECS/copr-frontend.spec'], chrootPath='/var/lib/mock/f41-build-49469772-5882760/root'env={'TERM': 'vt100', 'SHELL': '/bin/bash', 'HOME': '/builddir', 'HOSTNAME': 'mock', 'PATH': '/usr/bin:/bin:/usr/sbin:/sbin', 'PROMPT_COMMAND': 'printf "\\033]0;<mock-chroot>\\007"', 'PS1': '<mock-chroot> \\s-\\v\\$ ', 'LANG': 'C.UTF-8'}shell=Falselogger=<mockbuild.trace_decorator.getLog object at 0x7fff8487f0b0>timeout=201600uid=1000gid=425user='mockbuild'nspawn_args=['--capability=cap_ipc_lock', '--bind=/tmp/mock-resolv.duyh4tau:/etc/resolv.conf', '--bind=/dev/btrfs-control', '--bind=/dev/mapper/control', '--bind=/dev/fuse', '--bind=/dev/loop-control', '--bind=/dev/loop0', '--bind=/dev/loop1', '--bind=/dev/loop2', '--bind=/dev/loop3', '--bind=/dev/loop4', '--bind=/dev/loop5', '--bind=/dev/loop6', '--bind=/dev/loop7', '--bind=/dev/loop8', '--bind=/dev/loop9', '--bind=/dev/loop10', '--bind=/dev/loop11']unshare_net=TrueprintOutput=False)
Using nspawn with args ['--capability=cap_ipc_lock', '--bind=/tmp/mock-resolv.duyh4tau:/etc/resolv.conf', '--bind=/dev/btrfs-control', '--bind=/dev/mapper/control', '--bind=/dev/fuse', '--bind=/dev/loop-control', '--bind=/dev/loop0', '--bind=/dev/loop1', '--bind=/dev/loop2', '--bind=/dev/loop3', '--bind=/dev/loop4', '--bind=/dev/loop5', '--bind=/dev/loop6', '--bind=/dev/loop7', '--bind=/dev/loop8', '--bind=/dev/loop9', '--bind=/dev/loop10', '--bind=/dev/loop11']
Executing command: ['/usr/bin/systemd-nspawn', '-q', '-M', '6c30a805385c4e6691c3c66242c0423e', '-D', '/var/lib/mock/f41-build-49469772-5882760/root', '-a', '-u', 'mockbuild', '--capability=cap_ipc_lock', '--bind=/tmp/mock-resolv.duyh4tau:/etc/resolv.conf', '--bind=/dev/btrfs-control', '--bind=/dev/mapper/control', '--bind=/dev/fuse', '--bind=/dev/loop-control', '--bind=/dev/loop0', '--bind=/dev/loop1', '--bind=/dev/loop2', '--bind=/dev/loop3', '--bind=/dev/loop4', '--bind=/dev/loop5', '--bind=/dev/loop6', '--bind=/dev/loop7', '--bind=/dev/loop8', '--bind=/dev/loop9', '--bind=/dev/loop10', '--bind=/dev/loop11', '--console=pipe', '--setenv=TERM=vt100', '--setenv=SHELL=/bin/bash', '--setenv=HOME=/builddir', '--setenv=HOSTNAME=mock', '--setenv=PATH=/usr/bin:/bin:/usr/sbin:/sbin', '--setenv=PROMPT_COMMAND=printf "\\033]0;<mock-chroot>\\007"', '--setenv=PS1=<mock-chroot> \\s-\\v\\$ ', '--setenv=LANG=C.UTF-8', '--resolv-conf=off', 'bash', '--login', '-c', '/usr/bin/rpmbuild -bb --noclean --target noarch --nodeps /builddir/build/SPECS/copr-frontend.spec'] with env {'TERM': 'vt100', 'SHELL': '/bin/bash', 'HOME': '/builddir', 'HOSTNAME': 'mock', 'PATH': '/usr/bin:/bin:/usr/sbin:/sbin', 'PROMPT_COMMAND': 'printf "\\033]0;<mock-chroot>\\007"', 'PS1': '<mock-chroot> \\s-\\v\\$ ', 'LANG': 'C.UTF-8', 'SYSTEMD_NSPAWN_TMPFS_TMP': '0', 'SYSTEMD_SECCOMP': '0'} and shell False
Building target platforms: noarch
Building for target noarch
setting SOURCE_DATE_EPOCH=1709510400
Executing(%prep): /bin/sh -e /var/tmp/rpm-tmp.rhGz7e
+ umask 022
+ cd /builddir/build/BUILD
+ cd /builddir/build/BUILD
+ rm -rf copr-frontend-1.204
+ /usr/lib/rpm/rpmuncompress -x /builddir/build/SOURCES/copr-frontend-1.204.tar.gz
+ STATUS=0
+ '[' 0 -ne 0 ']'
+ cd copr-frontend-1.204
+ rm -rf /builddir/build/BUILD/copr-frontend-1.204-SPECPARTS
+ /usr/bin/mkdir -p /builddir/build/BUILD/copr-frontend-1.204-SPECPARTS
+ /usr/bin/chmod -Rf a+rX,u+w,g-w,o-w .
+ RPM_EC=0
++ jobs -p
+ exit 0
Executing(%build): /bin/sh -e /var/tmp/rpm-tmp.Hi4Y2Z
+ umask 022
+ cd /builddir/build/BUILD
+ CFLAGS='-O2 -flto=auto -ffat-lto-objects -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=3 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1  -m64 -mcpu=power8 -mtune=power8 -fasynchronous-unwind-tables -fstack-clash-protection '
+ export CFLAGS
+ CXXFLAGS='-O2 -flto=auto -ffat-lto-objects -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=3 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1  -m64 -mcpu=power8 -mtune=power8 -fasynchronous-unwind-tables -fstack-clash-protection '
+ export CXXFLAGS
+ FFLAGS='-O2 -flto=auto -ffat-lto-objects -fexceptions -g -grecord-gcc-switches -pipe -Wall -Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=3 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1  -m64 -mcpu=power8 -mtune=power8 -fasynchronous-unwind-tables -fstack-clash-protection -I/usr/lib/gfortran/modules '
+ export FFLAGS
+ FCFLAGS='-O2 -flto=auto -ffat-lto-objects -fexceptions -g -grecord-gcc-switches -pipe -Wall -Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=3 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1  -m64 -mcpu=power8 -mtune=power8 -fasynchronous-unwind-tables -fstack-clash-protection -I/usr/lib/gfortran/modules '
+ export FCFLAGS
+ VALAFLAGS=-g
+ export VALAFLAGS
+ RUSTFLAGS='-Copt-level=3 -Cdebuginfo=2 -Ccodegen-units=1 -Cstrip=none -Cforce-frame-pointers=yes'
+ export RUSTFLAGS
+ LDFLAGS='-Wl,-z,relro -Wl,--as-needed   -Wl,-z,now -specs=/usr/lib/rpm/redhat/redhat-hardened-ld-errors -specs=/usr/lib/rpm/redhat/redhat-hardened-ld -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1  -Wl,--build-id=sha1  '
+ export LDFLAGS
+ LT_SYS_LIBRARY_PATH=/usr/lib:
+ export LT_SYS_LIBRARY_PATH
+ CC=gcc
+ export CC
+ CXX=g++
+ export CXX
+ cd copr-frontend-1.204
+ RPM_EC=0
++ jobs -p
+ exit 0
Executing(%install): /bin/sh -e /var/tmp/rpm-tmp.xU7RaP
+ umask 022
+ cd /builddir/build/BUILD
+ '[' /builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch '!=' / ']'
+ rm -rf /builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch
++ dirname /builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch
+ mkdir -p /builddir/build/BUILDROOT
+ mkdir /builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch
+ CFLAGS='-O2 -flto=auto -ffat-lto-objects -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=3 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1  -m64 -mcpu=power8 -mtune=power8 -fasynchronous-unwind-tables -fstack-clash-protection '
+ export CFLAGS
+ CXXFLAGS='-O2 -flto=auto -ffat-lto-objects -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=3 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1  -m64 -mcpu=power8 -mtune=power8 -fasynchronous-unwind-tables -fstack-clash-protection '
+ export CXXFLAGS
+ FFLAGS='-O2 -flto=auto -ffat-lto-objects -fexceptions -g -grecord-gcc-switches -pipe -Wall -Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=3 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1  -m64 -mcpu=power8 -mtune=power8 -fasynchronous-unwind-tables -fstack-clash-protection -I/usr/lib/gfortran/modules '
+ export FFLAGS
+ FCFLAGS='-O2 -flto=auto -ffat-lto-objects -fexceptions -g -grecord-gcc-switches -pipe -Wall -Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=3 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1  -m64 -mcpu=power8 -mtune=power8 -fasynchronous-unwind-tables -fstack-clash-protection -I/usr/lib/gfortran/modules '
+ export FCFLAGS
+ VALAFLAGS=-g
+ export VALAFLAGS
+ RUSTFLAGS='-Copt-level=3 -Cdebuginfo=2 -Ccodegen-units=1 -Cstrip=none -Cforce-frame-pointers=yes'
+ export RUSTFLAGS
+ LDFLAGS='-Wl,-z,relro -Wl,--as-needed   -Wl,-z,now -specs=/usr/lib/rpm/redhat/redhat-hardened-ld-errors -specs=/usr/lib/rpm/redhat/redhat-hardened-ld -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1  -Wl,--build-id=sha1  '
+ export LDFLAGS
+ LT_SYS_LIBRARY_PATH=/usr/lib:
+ export LT_SYS_LIBRARY_PATH
+ CC=gcc
+ export CC
+ CXX=g++
+ export CXX
+ cd copr-frontend-1.204
+ install -d /builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/etc/copr
+ install -d /builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend
+ install -d /builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/var/lib/copr/data/openid_store
+ install -d /builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/var/lib/copr/data/openid_store/associations
+ install -d /builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/var/lib/copr/data/openid_store/nonces
+ install -d /builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/var/lib/copr/data/openid_store/temp
+ install -d /builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/var/lib/copr/data/whooshee
+ install -d /builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/var/lib/copr/data/whooshee/copr_user_whoosheer
+ install -d /builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/var/lib/copr/data/srpm_storage
+ install -d /builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/etc/cron.hourly
+ install -d /builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/etc/cron.daily
+ install -d /builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch//usr/bin
+ install -d /builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/lib/systemd/system
+ install -d /builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/libexec
+ install -p -m 755 conf/cron.hourly/copr-frontend conf/cron.hourly/copr-frontend-optional /builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/etc/cron.hourly
+ install -p -m 755 conf/cron.daily/copr-frontend conf/cron.daily/copr-frontend-optional /builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/etc/cron.daily
+ install -p -m 755 coprs_frontend/run/copr_dump_db.sh /builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/libexec
+ cp -a coprs_frontend/CONTRIBUTION_GUIDELINES coprs_frontend/alembic coprs_frontend/alembic.ini coprs_frontend/application coprs_frontend/commands coprs_frontend/config coprs_frontend/coprs coprs_frontend/coprs.conf.example coprs_frontend/generate_colorscheme coprs_frontend/manage.py coprs_frontend/pagure_events.py coprs_frontend/run coprs_frontend/tests /builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend
+ rm -rf /builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/tests
+ sed -i s/__RPM_BUILD_VERSION/1.204-1.fc41/ /builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/coprs/templates/layout.html
+ mv /builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/coprs.conf.example ./
+ mv /builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/config/chroots.conf /builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/config/copr.conf /builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/config/copr_devel.conf /builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/config/copr_unit_test.conf /builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/etc/copr
+ rm /builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/CONTRIBUTION_GUIDELINES
+ touch /builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/var/lib/copr/data/copr.db
+ install -d /builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/var/log/copr-frontend
+ install -d /builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/etc/logrotate.d
+ cp -a conf/logrotate /builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/etc/logrotate.d/copr-frontend
+ touch /builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/var/log/copr-frontend/frontend.log
+ ln -fs /usr/share/copr/coprs_frontend/manage.py /builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch//usr/bin/copr-frontend
++ dirname /usr/share/copr/copr-flavor-filelist
+ mkdir -p /builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch//usr/share/copr
+ cat
+ mkdir -p /builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/lib/rpm/macros.d
+ cat
+ [[ /usr/bin/python3 =~  - ]]
+ clamp_source_mtime /usr/bin/python3 /builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/coprs
+ python_binary='env /usr/bin/python3'
+ bytecode_compilation_path=/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/coprs
+ PYTHONPATH=/usr/lib/rpm/redhat
+ env /usr/bin/python3 -s -B -m clamp_source_mtime /builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/coprs
Listing '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/coprs'...
Clamping mtime of '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/coprs/__init__.py'
Clamping mtime of '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/coprs/auth.py'
Clamping mtime of '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/coprs/config.py'
Clamping mtime of '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/coprs/constants.py'
Clamping mtime of '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/coprs/context_processors.py'
Clamping mtime of '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/coprs/error_handlers.py'
Clamping mtime of '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/coprs/exceptions.py'
Clamping mtime of '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/coprs/filters.py'
Clamping mtime of '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/coprs/forms.py'
Clamping mtime of '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/coprs/helpers.py'
Clamping mtime of '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/coprs/log.py'
Listing '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/coprs/logic'...
Clamping mtime of '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/coprs/logic/__init__.py'
Clamping mtime of '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/coprs/logic/actions_logic.py'
Clamping mtime of '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/coprs/logic/api_logic.py'
Clamping mtime of '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/coprs/logic/backend_logic.py'
Clamping mtime of '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/coprs/logic/batches_logic.py'
Clamping mtime of '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/coprs/logic/builds_logic.py'
Clamping mtime of '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/coprs/logic/complex_logic.py'
Clamping mtime of '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/coprs/logic/coprs_logic.py'
Clamping mtime of '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/coprs/logic/dist_git_logic.py'
Clamping mtime of '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/coprs/logic/helpers.py'
Clamping mtime of '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/coprs/logic/modules_logic.py'
Clamping mtime of '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/coprs/logic/outdated_chroots_logic.py'
Clamping mtime of '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/coprs/logic/packages_logic.py'
Clamping mtime of '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/coprs/logic/stat_logic.py'
Clamping mtime of '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/coprs/logic/users_logic.py'
Clamping mtime of '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/coprs/mail.py'
Clamping mtime of '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/coprs/measure.py'
Clamping mtime of '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/coprs/models.py'
Clamping mtime of '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/coprs/oidc.py'
Clamping mtime of '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/coprs/redis_session.py'
Clamping mtime of '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/coprs/request.py'
Listing '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/coprs/static'...
Listing '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/coprs/static/chroot_logodir'...
Listing '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/coprs/static/components'...
Listing '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/coprs/static/components/c3'...
Listing '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/coprs/static/components/c3/extensions'...
Listing '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/coprs/static/components/c3/extensions/exporter'...
Listing '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/coprs/static/components/c3/extensions/js'...
Listing '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/coprs/static/components/d3'...
Listing '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/coprs/static/css'...
Listing '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/coprs/static/fonts'...
Listing '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/coprs/static/img'...
Listing '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/coprs/static/js'...
Listing '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/coprs/static/status_images'...
Listing '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/coprs/templates'...
Listing '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/coprs/templates/admin'...
Listing '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/coprs/templates/batches'...
Listing '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/coprs/templates/coprs'...
Listing '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/coprs/templates/coprs/detail'...
Listing '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/coprs/templates/coprs/detail/add_build'...
Listing '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/coprs/templates/coprs/detail/monitor'...
Listing '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/coprs/templates/coprs/detail/settings'...
Listing '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/coprs/templates/coprs/show'...
Listing '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/coprs/templates/groups'...
Listing '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/coprs/templates/recent'...
Listing '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/coprs/templates/rss'...
Listing '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/coprs/templates/status'...
Listing '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/coprs/views'...
Clamping mtime of '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/coprs/views/__init__.py'
Listing '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/coprs/views/admin_ns'...
Clamping mtime of '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/coprs/views/admin_ns/__init__.py'
Clamping mtime of '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/coprs/views/admin_ns/admin_general.py'
Listing '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/coprs/views/api_ns'...
Clamping mtime of '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/coprs/views/api_ns/__init__.py'
Clamping mtime of '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/coprs/views/api_ns/api_general.py'
Listing '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/coprs/views/apiv3_ns'...
Clamping mtime of '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/coprs/views/apiv3_ns/__init__.py'
Clamping mtime of '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/coprs/views/apiv3_ns/apiv3_build_chroots.py'
Clamping mtime of '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/coprs/views/apiv3_ns/apiv3_builds.py'
Clamping mtime of '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/coprs/views/apiv3_ns/apiv3_general.py'
Clamping mtime of '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/coprs/views/apiv3_ns/apiv3_mock_chroots.py'
Clamping mtime of '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/coprs/views/apiv3_ns/apiv3_modules.py'
Clamping mtime of '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/coprs/views/apiv3_ns/apiv3_monitor.py'
Clamping mtime of '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/coprs/views/apiv3_ns/apiv3_packages.py'
Clamping mtime of '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/coprs/views/apiv3_ns/apiv3_permissions.py'
Clamping mtime of '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/coprs/views/apiv3_ns/apiv3_project_chroots.py'
Clamping mtime of '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/coprs/views/apiv3_ns/apiv3_projects.py'
Clamping mtime of '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/coprs/views/apiv3_ns/apiv3_rpmrepo.py'
Clamping mtime of '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/coprs/views/apiv3_ns/apiv3_webhooks.py'
Clamping mtime of '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/coprs/views/apiv3_ns/json2form.py'
Listing '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/coprs/views/apiv3_ns/schema'...
Clamping mtime of '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/coprs/views/apiv3_ns/schema/__init__.py'
Clamping mtime of '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/coprs/views/apiv3_ns/schema/docs.py'
Clamping mtime of '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/coprs/views/apiv3_ns/schema/fields.py'
Clamping mtime of '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/coprs/views/apiv3_ns/schema/schemas.py'
Listing '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/coprs/views/backend_ns'...
Clamping mtime of '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/coprs/views/backend_ns/__init__.py'
Clamping mtime of '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/coprs/views/backend_ns/backend_general.py'
Listing '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/coprs/views/batches_ns'...
Clamping mtime of '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/coprs/views/batches_ns/__init__.py'
Clamping mtime of '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/coprs/views/batches_ns/coprs_batches.py'
Listing '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/coprs/views/coprs_ns'...
Clamping mtime of '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/coprs/views/coprs_ns/__init__.py'
Clamping mtime of '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/coprs/views/coprs_ns/coprs_builds.py'
Clamping mtime of '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/coprs/views/coprs_ns/coprs_chroots.py'
Clamping mtime of '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/coprs/views/coprs_ns/coprs_general.py'
Clamping mtime of '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/coprs/views/coprs_ns/coprs_packages.py'
Clamping mtime of '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/coprs/views/coprs_ns/pagination_redirect.py'
Clamping mtime of '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/coprs/views/explore_ns.py'
Listing '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/coprs/views/groups_ns'...
Clamping mtime of '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/coprs/views/groups_ns/__init__.py'
Clamping mtime of '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/coprs/views/groups_ns/groups_general.py'
Clamping mtime of '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/coprs/views/memory_analyzer.py'
Clamping mtime of '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/coprs/views/misc.py'
Listing '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/coprs/views/recent_ns'...
Clamping mtime of '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/coprs/views/recent_ns/__init__.py'
Clamping mtime of '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/coprs/views/recent_ns/recent_general.py'
Listing '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/coprs/views/rss_ns'...
Clamping mtime of '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/coprs/views/rss_ns/__init__.py'
Clamping mtime of '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/coprs/views/rss_ns/rss_general.py'
Listing '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/coprs/views/stats_ns'...
Clamping mtime of '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/coprs/views/stats_ns/__init__.py'
Clamping mtime of '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/coprs/views/stats_ns/stats_receiver.py'
Listing '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/coprs/views/status_ns'...
Clamping mtime of '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/coprs/views/status_ns/__init__.py'
Clamping mtime of '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/coprs/views/status_ns/status_general.py'
Listing '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/coprs/views/tmp_ns'...
Clamping mtime of '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/coprs/views/tmp_ns/__init__.py'
Clamping mtime of '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/coprs/views/tmp_ns/tmp_general.py'
Listing '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/coprs/views/user_ns'...
Clamping mtime of '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/coprs/views/user_ns/__init__.py'
Clamping mtime of '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/coprs/views/user_ns/user_general.py'
Listing '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/coprs/views/webhooks_ns'...
Clamping mtime of '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/coprs/views/webhooks_ns/__init__.py'
Clamping mtime of '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/coprs/views/webhooks_ns/webhooks_general.py'
Clamping mtime of '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/coprs/whoosheers.py'
++ /usr/bin/python3 -c 'import sys; sys.stdout.write('\''{0.major}{0.minor}'\''.format(sys.version_info))'
+ python_version=312
+ '[' 312 -ge 39 ']'
+ py39_byte_compile /usr/bin/python3 /builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/coprs
+ python_binary='env PYTHONHASHSEED=0 /usr/bin/python3'
+ bytecode_compilation_path=/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/coprs
+ env PYTHONHASHSEED=0 /usr/bin/python3 -s -B -m compileall -j8 -o 0 -o 1 -s /builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch -p / --hardlink-dupes --invalidation-mode=timestamp /builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/coprs
Listing '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/coprs'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/coprs/constants.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/coprs/error_handlers.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/coprs/log.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/coprs/logic/api_logic.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/coprs/logic/backend_logic.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/coprs/logic/dist_git_logic.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/coprs/logic/modules_logic.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/coprs/logic/stat_logic.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/coprs/mail.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/coprs/measure.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/coprs/models.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/coprs/views/admin_ns/admin_general.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/coprs/views/apiv3_ns/apiv3_modules.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/coprs/views/apiv3_ns/apiv3_webhooks.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/coprs/views/apiv3_ns/schema/fields.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/coprs/views/groups_ns/__init__.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/coprs/views/memory_analyzer.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/coprs/views/status_ns/__init__.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/coprs/views/tmp_ns/tmp_general.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/coprs/config.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/coprs/helpers.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/coprs/oidc.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/coprs/redis_session.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/coprs/views/__init__.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/coprs/views/apiv3_ns/apiv3_general.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/coprs/views/apiv3_ns/apiv3_project_chroots.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/coprs/views/coprs_ns/__init__.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/coprs/views/coprs_ns/coprs_chroots.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/coprs/views/recent_ns/__init__.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/coprs/views/rss_ns/__init__.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/coprs/views/status_ns/status_general.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/coprs/__init__.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/coprs/context_processors.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/coprs/filters.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/coprs/logic/actions_logic.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/coprs/logic/outdated_chroots_logic.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/coprs/logic/users_logic.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/coprs/request.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/coprs/views/apiv3_ns/__init__.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/coprs/views/apiv3_ns/schema/__init__.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/coprs/views/backend_ns/__init__.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/coprs/views/coprs_ns/pagination_redirect.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/coprs/views/misc.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/coprs/views/stats_ns/stats_receiver.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/coprs/auth.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/coprs/logic/complex_logic.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/coprs/views/admin_ns/__init__.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/coprs/views/apiv3_ns/apiv3_mock_chroots.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/coprs/views/apiv3_ns/apiv3_rpmrepo.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/coprs/views/batches_ns/__init__.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/coprs/views/coprs_ns/coprs_builds.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/coprs/views/webhooks_ns/__init__.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/coprs/logic/helpers.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/coprs/logic/packages_logic.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/coprs/views/apiv3_ns/apiv3_builds.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/coprs/views/apiv3_ns/apiv3_projects.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/coprs/views/coprs_ns/coprs_general.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/coprs/forms.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/coprs/views/api_ns/api_general.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/coprs/views/apiv3_ns/apiv3_monitor.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/coprs/views/apiv3_ns/schema/docs.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/coprs/views/backend_ns/backend_general.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/coprs/views/explore_ns.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/coprs/views/recent_ns/recent_general.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/coprs/views/rss_ns/rss_general.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/coprs/views/user_ns/user_general.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/coprs/logic/__init__.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/coprs/logic/builds_logic.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/coprs/views/api_ns/__init__.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/coprs/views/apiv3_ns/apiv3_packages.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/coprs/views/apiv3_ns/schema/schemas.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/coprs/views/groups_ns/groups_general.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/coprs/views/stats_ns/__init__.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/coprs/views/tmp_ns/__init__.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/coprs/whoosheers.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/coprs/exceptions.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/coprs/logic/batches_logic.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/coprs/logic/coprs_logic.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/coprs/views/apiv3_ns/apiv3_build_chroots.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/coprs/views/apiv3_ns/apiv3_permissions.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/coprs/views/apiv3_ns/json2form.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/coprs/views/batches_ns/coprs_batches.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/coprs/views/coprs_ns/coprs_packages.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/coprs/views/user_ns/__init__.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/coprs/views/webhooks_ns/webhooks_general.py'...
Listing '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/coprs/logic'...
Listing '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/coprs/static'...
Listing '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/coprs/static/chroot_logodir'...
Listing '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/coprs/static/components'...
Listing '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/coprs/static/components/c3'...
Listing '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/coprs/static/components/c3/extensions'...
Listing '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/coprs/static/components/c3/extensions/exporter'...
Listing '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/coprs/static/components/c3/extensions/js'...
Listing '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/coprs/static/components/d3'...
Listing '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/coprs/static/css'...
Listing '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/coprs/static/fonts'...
Listing '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/coprs/static/img'...
Listing '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/coprs/static/js'...
Listing '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/coprs/static/status_images'...
Listing '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/coprs/templates'...
Listing '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/coprs/templates/admin'...
Listing '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/coprs/templates/batches'...
Listing '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/coprs/templates/coprs'...
Listing '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/coprs/templates/coprs/detail'...
Listing '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/coprs/templates/coprs/detail/add_build'...
Listing '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/coprs/templates/coprs/detail/monitor'...
Listing '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/coprs/templates/coprs/detail/settings'...
Listing '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/coprs/templates/coprs/show'...
Listing '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/coprs/templates/groups'...
Listing '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/coprs/templates/recent'...
Listing '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/coprs/templates/rss'...
Listing '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/coprs/templates/status'...
Listing '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/coprs/views'...
Listing '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/coprs/views/admin_ns'...
Listing '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/coprs/views/api_ns'...
Listing '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/coprs/views/apiv3_ns'...
Listing '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/coprs/views/apiv3_ns/schema'...
Listing '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/coprs/views/backend_ns'...
Listing '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/coprs/views/batches_ns'...
Listing '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/coprs/views/coprs_ns'...
Listing '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/coprs/views/groups_ns'...
Listing '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/coprs/views/recent_ns'...
Listing '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/coprs/views/rss_ns'...
Listing '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/coprs/views/stats_ns'...
Listing '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/coprs/views/status_ns'...
Listing '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/coprs/views/tmp_ns'...
Listing '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/coprs/views/user_ns'...
Listing '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/coprs/views/webhooks_ns'...
+ [[ /usr/bin/python3 =~  - ]]
+ clamp_source_mtime /usr/bin/python3 /builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/alembic
+ python_binary='env /usr/bin/python3'
+ bytecode_compilation_path=/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/alembic
+ PYTHONPATH=/usr/lib/rpm/redhat
+ env /usr/bin/python3 -s -B -m clamp_source_mtime /builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/alembic
Listing '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/alembic'...
Clamping mtime of '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/alembic/env.py'
Listing '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/alembic/versions'...
Clamping mtime of '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/alembic/versions/004a017535dc_add_packit_forge_projects_allowed_for_.py'
Clamping mtime of '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/alembic/versions/08dd42f4c304_connect_copr_to_actions.py'
Clamping mtime of '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/alembic/versions/0dbdd06fb850_multilib_knob_on_copr_public.py'
Clamping mtime of '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/alembic/versions/10029c92dd0d_add_with_without_columns_for_copr_chroot.py'
Clamping mtime of '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/alembic/versions/12abab545d7a_added_index_for_main_in_copr_dir.py'
Clamping mtime of '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/alembic/versions/1c67bc715d78_add_fedora_review_column_for_projects.py'
Clamping mtime of '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/alembic/versions/1f4e04bb3618_add_build_submitted_by_field.py'
Clamping mtime of '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/alembic/versions/1f94b22f70a1_change_module_version_to_bigint.py'
Clamping mtime of '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/alembic/versions/227f6bf8f10b_add_build_requires_to_build_chroot.py'
Clamping mtime of '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/alembic/versions/2318cc31444e_add_column_appstream.py'
Clamping mtime of '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/alembic/versions/24e9054d4155_fix_results_paths.py'
Clamping mtime of '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/alembic/versions/2561c13a3556_add_dist_git_instance_table.py'
Clamping mtime of '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/alembic/versions/26bf5b9a4dd0_indeces_for_faster_build_selection.py'
Clamping mtime of '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/alembic/versions/29c352bde564_separate_private_stuff_into_private_.py'
Clamping mtime of '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/alembic/versions/2d8b4722918b_remove_unused_module_md_name_and_module_.py'
Clamping mtime of '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/alembic/versions/2db1d0557b06_fill_ended_on_column_in_action_table.py'
Clamping mtime of '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/alembic/versions/33a73ed44f83_blacklist_denylist.py'
Clamping mtime of '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/alembic/versions/3576fc77fb31_added_source_status_to_build.py'
Clamping mtime of '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/alembic/versions/3637b9daf7e4_generate_main_copr_dirs.py'
Clamping mtime of '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/alembic/versions/38ea34def9a_add_proxy_column_to_user_table.py'
Clamping mtime of '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/alembic/versions/3b0851cb25fc_add_build_to_module_relation.py'
Clamping mtime of '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/alembic/versions/3b67c52f5277_add_repos_to_copr_chroot.py'
Clamping mtime of '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/alembic/versions/3cba3ffe2836_on_delete_cascade_for_table_build.py'
Clamping mtime of '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/alembic/versions/3d89a66848c5_follow_fedora_branching.py'
Clamping mtime of '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/alembic/versions/41763f7a5185_add_ssh_public_keys_column.py'
Clamping mtime of '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/alembic/versions/45d0515bdc3f_drop_proxy_column.py'
Clamping mtime of '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/alembic/versions/465202bfb9ce_update_db_functions.py'
Clamping mtime of '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/alembic/versions/484a1d4dd424_add_cancel_requests_table.py'
Clamping mtime of '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/alembic/versions/484e28958b27_deduplicate_packages.py'
Clamping mtime of '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/alembic/versions/4af9d157c4ea_add_unique_constraint_for_mock_chroots.py'
Clamping mtime of '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/alembic/versions/4d06318043d3_add_buildchroot_id_and_coprchroot_id.py'
Clamping mtime of '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/alembic/versions/4ed794df3bbb_add_module_hotfixes_column_for_copr_.py'
Clamping mtime of '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/alembic/versions/4edb1ca2a13f_remove_priority_columns.py'
Clamping mtime of '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/alembic/versions/50e68db97d0a_adjust_counterstat_name_length.py'
Clamping mtime of '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/alembic/versions/512ff2b9eb6c_unify_scm_source_types_for_packages.py'
Clamping mtime of '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/alembic/versions/51716ab39d37_package_chroot_blacklist.py'
Clamping mtime of '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/alembic/versions/55a07cb7bd68_add_table_for_pinnedcoprs.py'
Clamping mtime of '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/alembic/versions/55d1e8962a93_add_index_for_buildchrootresult_build_id.py'
Clamping mtime of '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/alembic/versions/58eab04e5afc_add_priority_column_for_actions.py'
Clamping mtime of '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/alembic/versions/58f7510f0fae_mockchroot_tags_property.py'
Clamping mtime of '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/alembic/versions/5ecebe072cb7_drop_config_name_column_from_krb_login.py'
Clamping mtime of '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/alembic/versions/63db6872060f_add_bootstrap_config_columns.py'
Clamping mtime of '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/alembic/versions/65a172e3f102_unquote_counter_stat_urls.py'
Clamping mtime of '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/alembic/versions/669ba46bf357_add_srpm_url_to_build_table.py'
Clamping mtime of '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/alembic/versions/67ba91dda3e3_add_module_toggle_to_copr_chroot.py'
Clamping mtime of '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/alembic/versions/6800e08934eb_add_comment_to_mock_chroot_table.py'
Clamping mtime of '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/alembic/versions/6866cd91c3c6_add_deleted_column_for_coprchroot.py'
Clamping mtime of '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/alembic/versions/69c5f19841a5_add_delete_after_and_delete_notify_.py'
Clamping mtime of '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/alembic/versions/6b48324e9264_disallow_dash_in_os_release.py'
Clamping mtime of '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/alembic/versions/6d0a02dc7de4_sync_desynced_migrations_with_models.py'
Clamping mtime of '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/alembic/versions/6f83ea2ba416_add_runtime_dependencies_to_copr.py'
Clamping mtime of '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/alembic/versions/6fed8655d074_remove_build_results_column.py'
Clamping mtime of '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/alembic/versions/745250baedaf_new_column_resubmitted_from_id.py'
Clamping mtime of '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/alembic/versions/7723d580c625_copy_private_data_to_private_tables.py'
Clamping mtime of '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/alembic/versions/7bb0c7762df0_make_new_prio_columns.py'
Clamping mtime of '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/alembic/versions/7d9f6f921fa0_add_repo_priority_field.py'
Clamping mtime of '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/alembic/versions/808912fe46d3_unique_name_in_copr.py'
Clamping mtime of '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/alembic/versions/878d9d5311b7_add_use_bootstrap_container_to_copr.py'
Clamping mtime of '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/alembic/versions/887cbbd6575e_scm_integration.py'
Clamping mtime of '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/alembic/versions/8ae65946df53_add_blocked_by_column_for_batch.py'
Clamping mtime of '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/alembic/versions/8bf844cc7135_add_index_for_delete_after_a_delete_.py'
Clamping mtime of '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/alembic/versions/8ea94673d6ee_index_coprchroot_deleted.py'
Clamping mtime of '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/alembic/versions/8fd7c4714189_isolation_option_for_chroot.py'
Clamping mtime of '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/alembic/versions/9409fc1d5895_build_batch_id_indexed.py'
Clamping mtime of '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/alembic/versions/9b7211be5017_add_reviewed_outdated_chroot_table.py'
Clamping mtime of '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/alembic/versions/9bc8681ed275_max_package_builds_per_copr_dir.py'
Clamping mtime of '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/alembic/versions/a8654abcec65_unify_scm_source_types.py'
Clamping mtime of '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/alembic/versions/a8ef299dcac8_add_indexes_to_actions.py'
Clamping mtime of '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/alembic/versions/ac5917e5c4fe_make_copr_dirs_unique_by_ownername.py'
Clamping mtime of '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/alembic/versions/acac8d3ae868_add_table_for_graph_statistics.py'
Clamping mtime of '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/alembic/versions/b0fd99505e37_fixup_unassigned_copr_chroots.py'
Clamping mtime of '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/alembic/versions/b14b27e4a795_adding_isolation_option.py'
Clamping mtime of '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/alembic/versions/b630bad8a01e_add_index_for_combination_of_build_id_.py'
Clamping mtime of '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/alembic/versions/b64659389c54_add_column_final_prunerepo_done_to_mock_.py'
Clamping mtime of '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/alembic/versions/b828274ddebf_temporary_project.py'
Clamping mtime of '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/alembic/versions/b8a8a1345ed9_remove_now_private_columns_from_user_and_copr.py'
Clamping mtime of '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/alembic/versions/ba6ac0936bfb_rawhide_to_release.py'
Clamping mtime of '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/alembic/versions/bc29f080b915_drop_krb5_table.py'
Clamping mtime of '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/alembic/versions/bf4b5dc74740_map_mock_croots_to_dits_git_branch.py'
Clamping mtime of '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/alembic/versions/c28451aaed50_fix_defaults.py'
Clamping mtime of '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/alembic/versions/c6dd61c09256_buildchroot_tags.py'
Clamping mtime of '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/alembic/versions/ca76b7902c2f_remove_old_status_column.py'
Clamping mtime of '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/alembic/versions/cab566cc7dfb_add_batch_build_table.py'
Clamping mtime of '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/alembic/versions/cb928c34d36c_add_actionsstatistics_table.py'
Clamping mtime of '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/alembic/versions/code4beaf000_add_indexes3.py'
Clamping mtime of '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/alembic/versions/d230af5e05d8_drop_unused_pg_only_db_functions.py'
Clamping mtime of '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/alembic/versions/d2fbc2ab630d_drop_fedora_alembic_config.py'
Clamping mtime of '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/alembic/versions/d5990bd4aa46_index_build_id_per_dir.py'
Clamping mtime of '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/alembic/versions/d6cbf6cd74da_prefer_none_over_empty_string_in_email_.py'
Clamping mtime of '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/alembic/versions/d8a1062ee4cf_fixup_source_state.py'
Clamping mtime of '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/alembic/versions/daa62cd0743d_add_unique_constraint_to_fas_group.py'
Clamping mtime of '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/alembic/versions/dabab11132c1_initial_db_setup.py'
Clamping mtime of '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/alembic/versions/de903581465c_create_table_for_upvoting_and_.py'
Clamping mtime of '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/alembic/versions/deadbeafc0de_add_indexes2.py'
Clamping mtime of '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/alembic/versions/deaddeadc0de_add_indexes.py'
Clamping mtime of '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/alembic/versions/e183e12563ee_add_index_to_module_id.py'
Clamping mtime of '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/alembic/versions/e2b1cb42e6b7_add_namespace_for_fedora_distgit.py'
Clamping mtime of '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/alembic/versions/ec3528516b0c_add_status_reason_column.py'
Clamping mtime of '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/alembic/versions/efec6b1aa9a2_add_buildchrootresults.py'
Clamping mtime of '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/alembic/versions/f61a5c930abf_unique_constraint_on_modules.py'
Clamping mtime of '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/alembic/versions/fdec9947f8a1_add_web_hook_source_type_index.py'
++ /usr/bin/python3 -c 'import sys; sys.stdout.write('\''{0.major}{0.minor}'\''.format(sys.version_info))'
+ python_version=312
+ '[' 312 -ge 39 ']'
+ py39_byte_compile /usr/bin/python3 /builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/alembic
+ python_binary='env PYTHONHASHSEED=0 /usr/bin/python3'
+ bytecode_compilation_path=/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/alembic
+ env PYTHONHASHSEED=0 /usr/bin/python3 -s -B -m compileall -j8 -o 0 -o 1 -s /builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch -p / --hardlink-dupes --invalidation-mode=timestamp /builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/alembic
Listing '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/alembic'...
Listing '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/alembic/versions'...
/usr/share/copr/coprs_frontend/alembic/versions/65a172e3f102_unquote_counter_stat_urls.py:25: SyntaxWarning: invalid escape sequence '\%'
/usr/share/copr/coprs_frontend/alembic/versions/65a172e3f102_unquote_counter_stat_urls.py:25: SyntaxWarning: invalid escape sequence '\%'
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/alembic/versions/3d89a66848c5_follow_fedora_branching.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/alembic/versions/512ff2b9eb6c_unify_scm_source_types_for_packages.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/alembic/versions/65a172e3f102_unquote_counter_stat_urls.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/alembic/versions/7723d580c625_copy_private_data_to_private_tables.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/alembic/versions/887cbbd6575e_scm_integration.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/alembic/versions/b630bad8a01e_add_index_for_combination_of_build_id_.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/alembic/versions/c28451aaed50_fix_defaults.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/alembic/versions/d5990bd4aa46_index_build_id_per_dir.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/alembic/versions/deadbeafc0de_add_indexes2.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/alembic/versions/efec6b1aa9a2_add_buildchrootresults.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/alembic/versions/1f4e04bb3618_add_build_submitted_by_field.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/alembic/versions/2d8b4722918b_remove_unused_module_md_name_and_module_.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/alembic/versions/465202bfb9ce_update_db_functions.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/alembic/versions/50e68db97d0a_adjust_counterstat_name_length.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/alembic/versions/67ba91dda3e3_add_module_toggle_to_copr_chroot.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/alembic/versions/6b48324e9264_disallow_dash_in_os_release.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/alembic/versions/7bb0c7762df0_make_new_prio_columns.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/alembic/versions/ac5917e5c4fe_make_copr_dirs_unique_by_ownername.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/alembic/versions/bc29f080b915_drop_krb5_table.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/alembic/versions/d230af5e05d8_drop_unused_pg_only_db_functions.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/alembic/versions/d8a1062ee4cf_fixup_source_state.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/alembic/versions/e183e12563ee_add_index_to_module_id.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/alembic/versions/2db1d0557b06_fill_ended_on_column_in_action_table.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/alembic/versions/3cba3ffe2836_on_delete_cascade_for_table_build.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/alembic/versions/51716ab39d37_package_chroot_blacklist.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/alembic/versions/6f83ea2ba416_add_runtime_dependencies_to_copr.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/alembic/versions/745250baedaf_new_column_resubmitted_from_id.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/alembic/versions/878d9d5311b7_add_use_bootstrap_container_to_copr.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/alembic/versions/8ea94673d6ee_index_coprchroot_deleted.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/alembic/versions/9bc8681ed275_max_package_builds_per_copr_dir.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/alembic/versions/b8a8a1345ed9_remove_now_private_columns_from_user_and_copr.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/alembic/versions/cb928c34d36c_add_actionsstatistics_table.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/alembic/versions/de903581465c_create_table_for_upvoting_and_.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/alembic/versions/004a017535dc_add_packit_forge_projects_allowed_for_.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/alembic/versions/3b0851cb25fc_add_build_to_module_relation.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/alembic/versions/4af9d157c4ea_add_unique_constraint_for_mock_chroots.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/alembic/versions/55d1e8962a93_add_index_for_buildchrootresult_build_id.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/alembic/versions/63db6872060f_add_bootstrap_config_columns.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/alembic/versions/669ba46bf357_add_srpm_url_to_build_table.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/alembic/versions/6866cd91c3c6_add_deleted_column_for_coprchroot.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/alembic/versions/7d9f6f921fa0_add_repo_priority_field.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/alembic/versions/a8654abcec65_unify_scm_source_types.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/alembic/versions/b14b27e4a795_adding_isolation_option.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/alembic/versions/c6dd61c09256_buildchroot_tags.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/alembic/versions/d6cbf6cd74da_prefer_none_over_empty_string_in_email_.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/alembic/versions/deaddeadc0de_add_indexes.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/alembic/versions/ec3528516b0c_add_status_reason_column.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/alembic/env.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/alembic/versions/0dbdd06fb850_multilib_knob_on_copr_public.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/alembic/versions/12abab545d7a_added_index_for_main_in_copr_dir.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/alembic/versions/1c67bc715d78_add_fedora_review_column_for_projects.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/alembic/versions/227f6bf8f10b_add_build_requires_to_build_chroot.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/alembic/versions/24e9054d4155_fix_results_paths.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/alembic/versions/33a73ed44f83_blacklist_denylist.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/alembic/versions/4d06318043d3_add_buildchroot_id_and_coprchroot_id.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/alembic/versions/5ecebe072cb7_drop_config_name_column_from_krb_login.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/alembic/versions/6d0a02dc7de4_sync_desynced_migrations_with_models.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/alembic/versions/9409fc1d5895_build_batch_id_indexed.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/alembic/versions/b64659389c54_add_column_final_prunerepo_done_to_mock_.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/alembic/versions/cab566cc7dfb_add_batch_build_table.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/alembic/versions/e2b1cb42e6b7_add_namespace_for_fedora_distgit.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/alembic/versions/08dd42f4c304_connect_copr_to_actions.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/alembic/versions/1f94b22f70a1_change_module_version_to_bigint.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/alembic/versions/2561c13a3556_add_dist_git_instance_table.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/alembic/versions/38ea34def9a_add_proxy_column_to_user_table.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/alembic/versions/45d0515bdc3f_drop_proxy_column.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/alembic/versions/4ed794df3bbb_add_module_hotfixes_column_for_copr_.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/alembic/versions/4edb1ca2a13f_remove_priority_columns.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/alembic/versions/58f7510f0fae_mockchroot_tags_property.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/alembic/versions/6fed8655d074_remove_build_results_column.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/alembic/versions/8fd7c4714189_isolation_option_for_chroot.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/alembic/versions/a8ef299dcac8_add_indexes_to_actions.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/alembic/versions/ba6ac0936bfb_rawhide_to_release.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/alembic/versions/bf4b5dc74740_map_mock_croots_to_dits_git_branch.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/alembic/versions/d2fbc2ab630d_drop_fedora_alembic_config.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/alembic/versions/fdec9947f8a1_add_web_hook_source_type_index.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/alembic/versions/10029c92dd0d_add_with_without_columns_for_copr_chroot.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/alembic/versions/26bf5b9a4dd0_indeces_for_faster_build_selection.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/alembic/versions/29c352bde564_separate_private_stuff_into_private_.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/alembic/versions/3637b9daf7e4_generate_main_copr_dirs.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/alembic/versions/41763f7a5185_add_ssh_public_keys_column.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/alembic/versions/484e28958b27_deduplicate_packages.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/alembic/versions/58eab04e5afc_add_priority_column_for_actions.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/alembic/versions/6800e08934eb_add_comment_to_mock_chroot_table.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/alembic/versions/8ae65946df53_add_blocked_by_column_for_batch.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/alembic/versions/b0fd99505e37_fixup_unassigned_copr_chroots.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/alembic/versions/ca76b7902c2f_remove_old_status_column.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/alembic/versions/code4beaf000_add_indexes3.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/alembic/versions/daa62cd0743d_add_unique_constraint_to_fas_group.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/alembic/versions/f61a5c930abf_unique_constraint_on_modules.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/alembic/versions/2318cc31444e_add_column_appstream.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/alembic/versions/3576fc77fb31_added_source_status_to_build.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/alembic/versions/3b67c52f5277_add_repos_to_copr_chroot.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/alembic/versions/484a1d4dd424_add_cancel_requests_table.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/alembic/versions/55a07cb7bd68_add_table_for_pinnedcoprs.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/alembic/versions/69c5f19841a5_add_delete_after_and_delete_notify_.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/alembic/versions/808912fe46d3_unique_name_in_copr.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/alembic/versions/8bf844cc7135_add_index_for_delete_after_a_delete_.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/alembic/versions/9b7211be5017_add_reviewed_outdated_chroot_table.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/alembic/versions/acac8d3ae868_add_table_for_graph_statistics.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/alembic/versions/b828274ddebf_temporary_project.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/alembic/versions/dabab11132c1_initial_db_setup.py'...
+ [[ /usr/bin/python3 =~  - ]]
+ clamp_source_mtime /usr/bin/python3 /builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/tests
+ python_binary='env /usr/bin/python3'
+ bytecode_compilation_path=/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/tests
+ PYTHONPATH=/usr/lib/rpm/redhat
+ env /usr/bin/python3 -s -B -m clamp_source_mtime /builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/tests
Listing '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/tests'...
Can't list '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/tests'
++ /usr/bin/python3 -c 'import sys; sys.stdout.write('\''{0.major}{0.minor}'\''.format(sys.version_info))'
+ python_version=312
+ '[' 312 -ge 39 ']'
+ py39_byte_compile /usr/bin/python3 /builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/tests
+ python_binary='env PYTHONHASHSEED=0 /usr/bin/python3'
+ bytecode_compilation_path=/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/tests
+ env PYTHONHASHSEED=0 /usr/bin/python3 -s -B -m compileall -j8 -o 0 -o 1 -s /builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch -p / --hardlink-dupes --invalidation-mode=timestamp /builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/tests
Listing '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/tests'...
Can't list '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc41.noarch/usr/share/copr/coprs_frontend/tests'
+ /usr/bin/find-debuginfo -j8 --strict-build-id -m -i --build-id-seed 1.204-1.fc41 --unique-debug-suffix -1.204-1.fc41.noarch --unique-debug-src-base copr-frontend-1.204-1.fc41.noarch --run-dwz --dwz-low-mem-die-limit 10000000 --dwz-max-die-limit 50000000 -S debugsourcefiles.list /builddir/build/BUILD/copr-frontend-1.204
find-debuginfo: starting
Extracting debug info from 0 files
Creating .debug symlinks for symlinks to ELF files
find: ‘debug’: No such file or directory
find-debuginfo: done
+ /usr/lib/rpm/check-buildroot
+ /usr/lib/rpm/redhat/brp-ldconfig
+ /usr/lib/rpm/brp-compress
+ /usr/lib/rpm/redhat/brp-strip-lto /usr/bin/strip
+ /usr/lib/rpm/brp-strip-static-archive /usr/bin/strip
+ /usr/lib/rpm/check-rpaths
+ /usr/lib/rpm/redhat/brp-mangle-shebangs
mangling shebang in /etc/cron.hourly/copr-frontend from /bin/sh to #!/usr/bin/sh
mangling shebang in /etc/cron.hourly/copr-frontend-optional from /bin/sh to #!/usr/bin/sh
mangling shebang in /etc/cron.daily/copr-frontend from /bin/sh to #!/usr/bin/sh
mangling shebang in /etc/cron.daily/copr-frontend-optional from /bin/sh to #!/usr/bin/sh
*** WARNING: ./usr/share/copr/coprs_frontend/commands/warning_banner.py is executable but has no shebang, removing executable bit
*** WARNING: ./usr/share/copr/coprs_frontend/coprs/templates/banner-include.html is executable but has no shebang, removing executable bit
*** WARNING: ./usr/share/copr/coprs_frontend/coprs/views/backend_ns/backend_general.py is executable but has no shebang, removing executable bit
mangling shebang in /usr/share/copr/coprs_frontend/run/copr_dump_db.sh from /bin/bash to #!/usr/bin/bash
mangling shebang in /usr/libexec/copr_dump_db.sh from /bin/bash to #!/usr/bin/bash
+ /usr/lib/rpm/brp-remove-la-files
+ env /usr/lib/rpm/redhat/brp-python-bytecompile '' 1 0 -j8
+ /usr/lib/rpm/redhat/brp-python-hardlink
Executing(%check): /bin/sh -e /var/tmp/rpm-tmp.nph7dX
+ umask 022
+ cd /builddir/build/BUILD
+ CFLAGS='-O2 -flto=auto -ffat-lto-objects -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=3 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1  -m64 -mcpu=power8 -mtune=power8 -fasynchronous-unwind-tables -fstack-clash-protection '
+ export CFLAGS
+ CXXFLAGS='-O2 -flto=auto -ffat-lto-objects -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=3 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1  -m64 -mcpu=power8 -mtune=power8 -fasynchronous-unwind-tables -fstack-clash-protection '
+ export CXXFLAGS
+ FFLAGS='-O2 -flto=auto -ffat-lto-objects -fexceptions -g -grecord-gcc-switches -pipe -Wall -Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=3 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1  -m64 -mcpu=power8 -mtune=power8 -fasynchronous-unwind-tables -fstack-clash-protection -I/usr/lib/gfortran/modules '
+ export FFLAGS
+ FCFLAGS='-O2 -flto=auto -ffat-lto-objects -fexceptions -g -grecord-gcc-switches -pipe -Wall -Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=3 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1  -m64 -mcpu=power8 -mtune=power8 -fasynchronous-unwind-tables -fstack-clash-protection -I/usr/lib/gfortran/modules '
+ export FCFLAGS
+ VALAFLAGS=-g
+ export VALAFLAGS
+ RUSTFLAGS='-Copt-level=3 -Cdebuginfo=2 -Ccodegen-units=1 -Cstrip=none -Cforce-frame-pointers=yes'
+ export RUSTFLAGS
+ LDFLAGS='-Wl,-z,relro -Wl,--as-needed   -Wl,-z,now -specs=/usr/lib/rpm/redhat/redhat-hardened-ld-errors -specs=/usr/lib/rpm/redhat/redhat-hardened-ld -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1  -Wl,--build-id=sha1  '
+ export LDFLAGS
+ LT_SYS_LIBRARY_PATH=/usr/lib:
+ export LT_SYS_LIBRARY_PATH
+ CC=gcc
+ export CC
+ CXX=g++
+ export CXX
+ cd copr-frontend-1.204
+ ./run_tests.sh -vv --no-cov
+ set -e
+ REDIS_PORT=7777
+ trap cleanup EXIT
+ ./build_aux/check-alembic-revisions
+ redis-server --port 7777
/builddir/build/BUILD/copr-frontend-1.204/./build_aux/check-alembic-revisions:28: SyntaxWarning: invalid escape sequence '\s'
  pattern = "^\s*{}\s*=\s*['\"](.*)['\"]\s*$"
dabab11132c1_initial_db_setup.py
3b67c52f5277_add_repos_to_copr_chroot.py
4af9d157c4ea_add_unique_constraint_for_mock_chroots.py
38ea34def9a_add_proxy_column_to_user_table.py
bf4b5dc74740_map_mock_croots_to_dits_git_branch.py
878d9d5311b7_add_use_bootstrap_container_to_copr.py
cab566cc7dfb_add_batch_build_table.py
227f6bf8f10b_add_build_requires_to_build_chroot.py
3d89a66848c5_follow_fedora_branching.py
669ba46bf357_add_srpm_url_to_build_table.py
fdec9947f8a1_add_web_hook_source_type_index.py
a8654abcec65_unify_scm_source_types.py
512ff2b9eb6c_unify_scm_source_types_for_packages.py
7bb0c7762df0_make_new_prio_columns.py
3b0851cb25fc_add_build_to_module_relation.py
f61a5c930abf_unique_constraint_on_modules.py
1f94b22f70a1_change_module_version_to_bigint.py
e183e12563ee_add_index_to_module_id.py
4edb1ca2a13f_remove_priority_columns.py
3576fc77fb31_added_source_status_to_build.py
26bf5b9a4dd0_indeces_for_faster_build_selection.py
465202bfb9ce_update_db_functions.py
24e9054d4155_fix_results_paths.py
10029c92dd0d_add_with_without_columns_for_copr_chroot.py
acac8d3ae868_add_table_for_graph_statistics.py
887cbbd6575e_scm_integration.py
ac5917e5c4fe_make_copr_dirs_unique_by_ownername.py
3637b9daf7e4_generate_main_copr_dirs.py
c28451aaed50_fix_defaults.py
51716ab39d37_package_chroot_blacklist.py
69c5f19841a5_add_delete_after_and_delete_notify_.py
6fed8655d074_remove_build_results_column.py
8bf844cc7135_add_index_for_delete_after_a_delete_.py
deaddeadc0de_add_indexes.py
deadbeafc0de_add_indexes2.py
code4beaf000_add_indexes3.py
ca76b7902c2f_remove_old_status_column.py
b64659389c54_add_column_final_prunerepo_done_to_mock_.py
29c352bde564_separate_private_stuff_into_private_.py
7723d580c625_copy_private_data_to_private_tables.py
b8a8a1345ed9_remove_now_private_columns_from_user_and_copr.py
b828274ddebf_temporary_project.py
9bc8681ed275_max_package_builds_per_copr_dir.py
8ae65946df53_add_blocked_by_column_for_batch.py
2d8b4722918b_remove_unused_module_md_name_and_module_.py
1f4e04bb3618_add_build_submitted_by_field.py
55a07cb7bd68_add_table_for_pinnedcoprs.py
3cba3ffe2836_on_delete_cascade_for_table_build.py
12abab545d7a_added_index_for_main_in_copr_dir.py
6800e08934eb_add_comment_to_mock_chroot_table.py
0dbdd06fb850_multilib_knob_on_copr_public.py
745250baedaf_new_column_resubmitted_from_id.py
4ed794df3bbb_add_module_hotfixes_column_for_copr_.py
2db1d0557b06_fill_ended_on_column_in_action_table.py
cb928c34d36c_add_actionsstatistics_table.py
a8ef299dcac8_add_indexes_to_actions.py
d230af5e05d8_drop_unused_pg_only_db_functions.py
2561c13a3556_add_dist_git_instance_table.py
67ba91dda3e3_add_module_toggle_to_copr_chroot.py
58eab04e5afc_add_priority_column_for_actions.py
d2fbc2ab630d_drop_fedora_alembic_config.py
6d0a02dc7de4_sync_desynced_migrations_with_models.py
6f83ea2ba416_add_runtime_dependencies_to_copr.py
4d06318043d3_add_buildchroot_id_and_coprchroot_id.py
b0fd99505e37_fixup_unassigned_copr_chroots.py
484a1d4dd424_add_cancel_requests_table.py
de903581465c_create_table_for_upvoting_and_.py
63db6872060f_add_bootstrap_config_columns.py
9b7211be5017_add_reviewed_outdated_chroot_table.py
b14b27e4a795_adding_isolation_option.py
d6cbf6cd74da_prefer_none_over_empty_string_in_email_.py
8fd7c4714189_isolation_option_for_chroot.py
1c67bc715d78_add_fedora_review_column_for_projects.py
6866cd91c3c6_add_deleted_column_for_coprchroot.py
6b48324e9264_disallow_dash_in_os_release.py
808912fe46d3_unique_name_in_copr.py
d8a1062ee4cf_fixup_source_state.py
efec6b1aa9a2_add_buildchrootresults.py
2318cc31444e_add_column_appstream.py
8ea94673d6ee_index_coprchroot_deleted.py
e2b1cb42e6b7_add_namespace_for_fedora_distgit.py
45d0515bdc3f_drop_proxy_column.py
d5990bd4aa46_index_build_id_per_dir.py
b630bad8a01e_add_index_for_combination_of_build_id_.py
33a73ed44f83_blacklist_denylist.py
55d1e8962a93_add_index_for_buildchrootresult_build_id.py
58f7510f0fae_mockchroot_tags_property.py
9409fc1d5895_build_batch_id_indexed.py
5ecebe072cb7_drop_config_name_column_from_krb_login.py
50e68db97d0a_adjust_counterstat_name_length.py
484e28958b27_deduplicate_packages.py
004a017535dc_add_packit_forge_projects_allowed_for_.py
65a172e3f102_unquote_counter_stat_urls.py
bc29f080b915_drop_krb5_table.py
ba6ac0936bfb_rawhide_to_release.py
7d9f6f921fa0_add_repo_priority_field.py
daa62cd0743d_add_unique_constraint_to_fas_group.py
08dd42f4c304_connect_copr_to_actions.py
c6dd61c09256_buildchroot_tags.py
ec3528516b0c_add_status_reason_column.py
41763f7a5185_add_ssh_public_keys_column.py
+ COVPARAMS=(--cov-report term-missing --cov run --cov coprs --cov commands)
+ KEEP_ARGS=()
+ for arg in "$@"
+ case $arg in
+ KEEP_ARGS+=("$arg")
+ for arg in "$@"
+ case $arg in
+ COVPARAMS=()
++ readlink -f ../common
+ common_path=/builddir/build/BUILD/common
+ run_path=/builddir/build/BUILD/copr-frontend-1.204/coprs_frontend/run
+ export PYTHONPATH=/builddir/build/BUILD/common:/builddir/build/BUILD/copr-frontend-1.204/coprs_frontend/run
+ PYTHONPATH=/builddir/build/BUILD/common:/builddir/build/BUILD/copr-frontend-1.204/coprs_frontend/run
+ export PATH=/builddir/build/BUILD/copr-frontend-1.204/coprs_frontend/run:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/sbin
+ PATH=/builddir/build/BUILD/copr-frontend-1.204/coprs_frontend/run:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/sbin
++ pwd
+ export COPR_CONFIG=/builddir/build/BUILD/copr-frontend-1.204/coprs_frontend/config/copr_unit_test.conf
+ COPR_CONFIG=/builddir/build/BUILD/copr-frontend-1.204/coprs_frontend/config/copr_unit_test.conf
+ cd coprs_frontend
+ ./manage.py test -vv
[2024-03-04 11:45:32,390] INFO in log: logging configuration finished
============================= test session starts ==============================
platform linux -- Python 3.12.2, pytest-7.4.3, pluggy-1.3.0 -- /usr/bin/python3
cachedir: .pytest_cache
rootdir: /builddir/build/BUILD/copr-frontend-1.204/coprs_frontend
collecting ... collected 480 items
tests/test_anitya.py::TestAnitya::test_pypi FAILED                       [  0%]
tests/test_anitya.py::TestAnitya::test_pypi ERROR                        [  0%]
tests/test_anitya.py::test_pre_release_matcher PASSED                    [  0%]
tests/test_auth.py::TestGroupAuth::test_group_names_ldap PASSED          [  0%]
tests/test_auth.py::TestGroupAuth::test_group_names_ldap ERROR           [  0%]
tests/test_comps.py::TestComps::test_edit_project_chroot_comps[api] ERROR [  0%]
tests/test_comps.py::TestComps::test_edit_project_chroot_comps[api] ERROR [  0%]
tests/test_comps.py::TestComps::test_edit_project_chroot_comps[webui] ERROR [  1%]
tests/test_comps.py::TestComps::test_edit_project_chroot_comps[webui] ERROR [  1%]
tests/test_config_overrides.py::TestConfigOverrides::test_valid_configuration_cases[case0-api] ERROR [  1%]
tests/test_config_overrides.py::TestConfigOverrides::test_valid_configuration_cases[case0-api] ERROR [  1%]
tests/test_config_overrides.py::TestConfigOverrides::test_valid_configuration_cases[case0-webui] ERROR [  1%]
tests/test_config_overrides.py::TestConfigOverrides::test_valid_configuration_cases[case0-webui] ERROR [  1%]
tests/test_config_overrides.py::TestConfigOverrides::test_valid_configuration_cases[case1-api] ERROR [  1%]
tests/test_config_overrides.py::TestConfigOverrides::test_valid_configuration_cases[case1-api] ERROR [  1%]
tests/test_config_overrides.py::TestConfigOverrides::test_valid_configuration_cases[case1-webui] ERROR [  1%]
tests/test_config_overrides.py::TestConfigOverrides::test_valid_configuration_cases[case1-webui] ERROR [  1%]
tests/test_config_overrides.py::TestConfigOverrides::test_valid_configuration_cases[case2-api] ERROR [  2%]
tests/test_config_overrides.py::TestConfigOverrides::test_valid_configuration_cases[case2-api] ERROR [  2%]
tests/test_config_overrides.py::TestConfigOverrides::test_valid_configuration_cases[case2-webui] ERROR [  2%]
tests/test_config_overrides.py::TestConfigOverrides::test_valid_configuration_cases[case2-webui] ERROR [  2%]
tests/test_config_overrides.py::TestConfigOverrides::test_valid_configuration_cases[case3-api] ERROR [  2%]
tests/test_config_overrides.py::TestConfigOverrides::test_valid_configuration_cases[case3-api] ERROR [  2%]
tests/test_config_overrides.py::TestConfigOverrides::test_valid_configuration_cases[case3-webui] ERROR [  2%]
tests/test_config_overrides.py::TestConfigOverrides::test_valid_configuration_cases[case3-webui] ERROR [  2%]
tests/test_config_overrides.py::TestConfigOverrides::test_valid_configuration_cases[case4-api] ERROR [  2%]
tests/test_config_overrides.py::TestConfigOverrides::test_valid_configuration_cases[case4-api] ERROR [  2%]
tests/test_config_overrides.py::TestConfigOverrides::test_valid_configuration_cases[case4-webui] ERROR [  3%]
tests/test_config_overrides.py::TestConfigOverrides::test_valid_configuration_cases[case4-webui] ERROR [  3%]
tests/test_config_overrides.py::TestConfigOverrides::test_isolation_override[case0-api] ERROR [  3%]
tests/test_config_overrides.py::TestConfigOverrides::test_isolation_override[case0-api] ERROR [  3%]
tests/test_config_overrides.py::TestConfigOverrides::test_isolation_override[case0-webui] ERROR [  3%]
tests/test_config_overrides.py::TestConfigOverrides::test_isolation_override[case0-webui] ERROR [  3%]
tests/test_config_overrides.py::TestConfigOverrides::test_isolation_override[case1-api] ERROR [  3%]
tests/test_config_overrides.py::TestConfigOverrides::test_isolation_override[case1-api] ERROR [  3%]
tests/test_config_overrides.py::TestConfigOverrides::test_isolation_override[case1-webui] ERROR [  3%]
tests/test_config_overrides.py::TestConfigOverrides::test_isolation_override[case1-webui] ERROR [  3%]
tests/test_config_overrides.py::TestConfigOverrides::test_isolation_override[case2-api] ERROR [  4%]
tests/test_config_overrides.py::TestConfigOverrides::test_isolation_override[case2-api] ERROR [  4%]
tests/test_config_overrides.py::TestConfigOverrides::test_isolation_override[case2-webui] ERROR [  4%]
tests/test_config_overrides.py::TestConfigOverrides::test_isolation_override[case2-webui] ERROR [  4%]
tests/test_config_overrides.py::TestConfigOverrides::test_isolation_override[case3-api] ERROR [  4%]
tests/test_config_overrides.py::TestConfigOverrides::test_isolation_override[case3-api] ERROR [  4%]
tests/test_config_overrides.py::TestConfigOverrides::test_isolation_override[case3-webui] ERROR [  4%]
tests/test_config_overrides.py::TestConfigOverrides::test_isolation_override[case3-webui] ERROR [  4%]
tests/test_config_overrides.py::TestConfigOverrides::test_isolation_override_by_chroot[case0-api] ERROR [  5%]
tests/test_config_overrides.py::TestConfigOverrides::test_isolation_override_by_chroot[case0-api] ERROR [  5%]
tests/test_config_overrides.py::TestConfigOverrides::test_isolation_override_by_chroot[case0-webui] ERROR [  5%]
tests/test_config_overrides.py::TestConfigOverrides::test_isolation_override_by_chroot[case0-webui] ERROR [  5%]
tests/test_config_overrides.py::TestConfigOverrides::test_isolation_override_by_chroot[case1-api] ERROR [  5%]
tests/test_config_overrides.py::TestConfigOverrides::test_isolation_override_by_chroot[case1-api] ERROR [  5%]
tests/test_config_overrides.py::TestConfigOverrides::test_isolation_override_by_chroot[case1-webui] ERROR [  5%]
tests/test_config_overrides.py::TestConfigOverrides::test_isolation_override_by_chroot[case1-webui] ERROR [  5%]
tests/test_config_overrides.py::TestConfigOverrides::test_isolation_override_by_chroot[case2-api] ERROR [  5%]
tests/test_config_overrides.py::TestConfigOverrides::test_isolation_override_by_chroot[case2-api] ERROR [  5%]
tests/test_config_overrides.py::TestConfigOverrides::test_isolation_override_by_chroot[case2-webui] ERROR [  6%]
tests/test_config_overrides.py::TestConfigOverrides::test_isolation_override_by_chroot[case2-webui] ERROR [  6%]
tests/test_config_overrides.py::TestConfigOverrides::test_isolation_override_by_chroot[case3-api] ERROR [  6%]
tests/test_config_overrides.py::TestConfigOverrides::test_isolation_override_by_chroot[case3-api] ERROR [  6%]
tests/test_config_overrides.py::TestConfigOverrides::test_isolation_override_by_chroot[case3-webui] ERROR [  6%]
tests/test_config_overrides.py::TestConfigOverrides::test_isolation_override_by_chroot[case3-webui] ERROR [  6%]
tests/test_copr_create.py::TestProjectCreate::test_invalid_contact[homepage-api] ERROR [  6%]
tests/test_copr_create.py::TestProjectCreate::test_invalid_contact[homepage-api] ERROR [  6%]
tests/test_copr_create.py::TestProjectCreate::test_invalid_contact[homepage-webui] ERROR [  6%]
tests/test_copr_create.py::TestProjectCreate::test_invalid_contact[homepage-webui] ERROR [  6%]
tests/test_copr_create.py::TestProjectCreate::test_invalid_contact[contact-api] ERROR [  7%]
tests/test_copr_create.py::TestProjectCreate::test_invalid_contact[contact-api] ERROR [  7%]
tests/test_copr_create.py::TestProjectCreate::test_invalid_contact[contact-webui] ERROR [  7%]
tests/test_copr_create.py::TestProjectCreate::test_invalid_contact[contact-webui] ERROR [  7%]
tests/test_copr_create.py::TestProjectCreate::test_valid_contact[homepage-api] ERROR [  7%]
tests/test_copr_create.py::TestProjectCreate::test_valid_contact[homepage-api] ERROR [  7%]
tests/test_copr_create.py::TestProjectCreate::test_valid_contact[homepage-webui] ERROR [  7%]
tests/test_copr_create.py::TestProjectCreate::test_valid_contact[homepage-webui] ERROR [  7%]
tests/test_copr_create.py::TestProjectCreate::test_valid_contact[contact-api] ERROR [  7%]
tests/test_copr_create.py::TestProjectCreate::test_valid_contact[contact-api] ERROR [  7%]
tests/test_copr_create.py::TestProjectCreate::test_valid_contact[contact-webui] ERROR [  8%]
tests/test_copr_create.py::TestProjectCreate::test_valid_contact[contact-webui] ERROR [  8%]
tests/test_exceptions.py::TestExceptionHandling::test_json_only_for_api PASSED [  8%]
tests/test_exceptions.py::TestExceptionHandling::test_json_only_for_api ERROR [  8%]
tests/test_exceptions.py::TestExceptionHandling::test_both_nonexisting_page_and_object FAILED [  8%]
tests/test_exceptions.py::TestExceptionHandling::test_both_nonexisting_page_and_object ERROR [  8%]
tests/test_exceptions.py::TestExceptionHandling::test_both_nonexisting_page_and_object_api PASSED [  8%]
tests/test_exceptions.py::TestExceptionHandling::test_both_nonexisting_page_and_object_api ERROR [  8%]
tests/test_exceptions.py::TestExceptionHandling::test_api_401 PASSED     [  8%]
tests/test_exceptions.py::TestExceptionHandling::test_api_401 ERROR      [  8%]
tests/test_exceptions.py::TestExceptionHandling::test_api_403 ERROR      [  9%]
tests/test_exceptions.py::TestExceptionHandling::test_api_403 ERROR      [  9%]
tests/test_exceptions.py::TestExceptionHandling::test_api_409 ERROR      [  9%]
tests/test_exceptions.py::TestExceptionHandling::test_api_409 ERROR      [  9%]
tests/test_exceptions.py::TestExceptionHandling::test_api_400 ERROR      [  9%]
tests/test_exceptions.py::TestExceptionHandling::test_api_400 ERROR      [  9%]
tests/test_exceptions.py::TestExceptionHandling::test_api_504 PASSED     [  9%]
tests/test_exceptions.py::TestExceptionHandling::test_api_504 ERROR      [  9%]
tests/test_exceptions.py::TestExceptionHandling::test_api_500 PASSED     [ 10%]
tests/test_exceptions.py::TestExceptionHandling::test_api_500 ERROR      [ 10%]
tests/test_exceptions.py::TestExceptionHandling::test_api_500_default_message PASSED [ 10%]
tests/test_exceptions.py::TestExceptionHandling::test_api_500_default_message ERROR [ 10%]
tests/test_exceptions.py::TestExceptionHandling::test_api_500_runtime_error PASSED [ 10%]
tests/test_exceptions.py::TestExceptionHandling::test_api_500_runtime_error ERROR [ 10%]
tests/test_exceptions.py::TestExceptionHandling::test_api_500_storage PASSED [ 10%]
tests/test_exceptions.py::TestExceptionHandling::test_api_500_storage ERROR [ 10%]
tests/test_exceptions.py::TestExceptionHandling::test_api_500_in_progress PASSED [ 10%]
tests/test_exceptions.py::TestExceptionHandling::test_api_500_in_progress ERROR [ 10%]
tests/test_forms.py::TestCoprsFormFactory::test_empty_chroots ERROR      [ 11%]
tests/test_forms.py::TestCoprsFormFactory::test_empty_chroots ERROR      [ 11%]
tests/test_forms.py::TestPinnedCoprsForm::test_limit ERROR               [ 11%]
tests/test_forms.py::TestPinnedCoprsForm::test_limit ERROR               [ 11%]
tests/test_forms.py::TestPinnedCoprsForm::test_unique_coprs ERROR        [ 11%]
tests/test_forms.py::TestPinnedCoprsForm::test_unique_coprs ERROR        [ 11%]
tests/test_forms.py::TestPinnedCoprsForm::test_invalid_choice ERROR      [ 11%]
tests/test_forms.py::TestPinnedCoprsForm::test_invalid_choice ERROR      [ 11%]
tests/test_forms.py::TestCreateModuleForm::test_successful_validate PASSED [ 11%]
tests/test_forms.py::TestCreateModuleForm::test_successful_validate ERROR [ 11%]
tests/test_forms.py::TestCreateModuleForm::test_unique_names PASSED      [ 12%]
tests/test_forms.py::TestCreateModuleForm::test_unique_names ERROR       [ 12%]
tests/test_forms.py::TestCreateModuleForm::test_profile_name_required PASSED [ 12%]
tests/test_forms.py::TestCreateModuleForm::test_profile_name_required ERROR [ 12%]
tests/test_forms.py::test_form_regexes PASSED                            [ 12%]
tests/test_helpers.py::TestHelpers::test_guess_package_name PASSED       [ 12%]
tests/test_helpers.py::TestHelpers::test_guess_package_name ERROR        [ 12%]
tests/test_helpers.py::TestHelpers::test_generate_repo_url PASSED        [ 12%]
tests/test_helpers.py::TestHelpers::test_generate_repo_url ERROR         [ 12%]
tests/test_helpers.py::TestHelpers::test_fix_protocol_for_backend PASSED [ 13%]
tests/test_helpers.py::TestHelpers::test_fix_protocol_for_backend ERROR  [ 13%]
tests/test_helpers.py::TestHelpers::test_fix_protocol_for_frontend PASSED [ 13%]
tests/test_helpers.py::TestHelpers::test_fix_protocol_for_frontend ERROR [ 13%]
tests/test_helpers.py::TestHelpers::test_pre_process_repo_url PASSED     [ 13%]
tests/test_helpers.py::TestHelpers::test_pre_process_repo_url ERROR      [ 13%]
tests/test_helpers.py::TestHelpers::test_parse_repo_params PASSED        [ 13%]
tests/test_helpers.py::TestHelpers::test_parse_repo_params ERROR         [ 13%]
tests/test_helpers.py::TestHelpers::test_parse_repo_params_pass_keys PASSED [ 13%]
tests/test_helpers.py::TestHelpers::test_parse_repo_params_pass_keys ERROR [ 13%]
tests/test_helpers.py::TestHelpers::test_subdir_match PASSED             [ 14%]
tests/test_helpers.py::TestHelpers::test_subdir_match ERROR              [ 14%]
tests/test_helpers.py::TestHelpers::test_raw_patch_parse PASSED          [ 14%]
tests/test_helpers.py::TestHelpers::test_raw_patch_parse ERROR           [ 14%]
tests/test_helpers.py::TestHelpers::test_pagure_html_diff_parser PASSED  [ 14%]
tests/test_helpers.py::TestHelpers::test_pagure_html_diff_parser ERROR   [ 14%]
tests/test_helpers.py::TestHelpers::test_orm_object_clone ERROR          [ 14%]
tests/test_helpers.py::TestHelpers::test_orm_object_clone ERROR          [ 14%]
tests/test_helpers.py::TestHelpers::test_being_server_admin ERROR        [ 15%]
tests/test_helpers.py::TestHelpers::test_being_server_admin ERROR        [ 15%]
tests/test_helpers.py::test_worklist_class PASSED                        [ 15%]
tests/test_helpers.py::test_pluralize PASSED                             [ 15%]
tests/test_logging.py::TestLoggingRequestUser::test_anon ERROR           [ 15%]
tests/test_logging.py::TestLoggingRequestUser::test_anon ERROR           [ 15%]
tests/test_logging.py::TestLoggingRequestUser::test_server ERROR         [ 15%]
tests/test_logging.py::TestLoggingRequestUser::test_server ERROR         [ 15%]
tests/test_logging.py::TestLoggingRequestUser::test_user ERROR           [ 16%]
tests/test_logging.py::TestLoggingRequestUser::test_user ERROR           [ 16%]
tests/test_logging.py::TestLoggingUsersLogic::test_user_get ERROR        [ 16%]
tests/test_logging.py::TestLoggingUsersLogic::test_user_get ERROR        [ 16%]
tests/test_logging.py::TestLoggingUsersLogic::test_raise_if_cant_update_copr ERROR [ 16%]
tests/test_logging.py::TestLoggingUsersLogic::test_raise_if_cant_update_copr ERROR [ 16%]
tests/test_logging.py::TestLoggingUsersLogic::test_raise_if_cant_build_in_copr ERROR [ 16%]
tests/test_logging.py::TestLoggingUsersLogic::test_raise_if_cant_build_in_copr ERROR [ 16%]
tests/test_logging.py::TestLoggingUsersLogic::test_raise_if_not_in_group ERROR [ 16%]
tests/test_logging.py::TestLoggingUsersLogic::test_raise_if_not_in_group ERROR [ 16%]
tests/test_logging.py::TestLoggingUsersLogic::test_delete_user_data ERROR [ 17%]
tests/test_logging.py::TestLoggingUsersLogic::test_delete_user_data ERROR [ 17%]
tests/test_logging.py::TestLoggingUsersLogic::test_create_user_wrapper ERROR [ 17%]
tests/test_logging.py::TestLoggingUsersLogic::test_create_user_wrapper ERROR [ 17%]
tests/test_logging.py::TestLoggingUsersLogic::test_user_data_dumper ERROR [ 17%]
tests/test_logging.py::TestLoggingUsersLogic::test_user_data_dumper ERROR [ 17%]
tests/test_logging.py::TestLoggingUserGeneral::test_delete_user_data ERROR [ 17%]
tests/test_logging.py::TestLoggingUserGeneral::test_delete_user_data ERROR [ 17%]
tests/test_logging.py::TestLoggingCoprPermissionsLogic::test_update_permissions ERROR [ 17%]
tests/test_logging.py::TestLoggingCoprPermissionsLogic::test_update_permissions ERROR [ 17%]
tests/test_logging.py::TestLoggingCoprPermissionsLogic::test_update_permissions_by_applier ERROR [ 18%]
tests/test_logging.py::TestLoggingCoprPermissionsLogic::test_update_permissions_by_applier ERROR [ 18%]
tests/test_logging.py::TestLoggingCoprPermissionsLogic::test_set_permissions ERROR [ 18%]
tests/test_logging.py::TestLoggingCoprPermissionsLogic::test_set_permissions ERROR [ 18%]
tests/test_logging.py::TestLoggingCoprPermissionsLogic::test_request_permission ERROR [ 18%]
tests/test_logging.py::TestLoggingCoprPermissionsLogic::test_request_permission ERROR [ 18%]
tests/test_logging.py::TestLoggingAuth::test_create_or_login ERROR       [ 18%]
tests/test_logging.py::TestLoggingAuth::test_create_or_login ERROR       [ 18%]
tests/test_logging.py::TestLoggingAuth::test_logout ERROR                [ 18%]
tests/test_logging.py::TestLoggingAuth::test_logout ERROR                [ 18%]
tests/test_logging.py::TestLoggingAuth::test_api_login_required_invalid ERROR [ 19%]
tests/test_logging.py::TestLoggingAuth::test_api_login_required_invalid ERROR [ 19%]
tests/test_logging.py::TestLoggingUsingAdminPermissions::test_update_copr ERROR [ 19%]
tests/test_logging.py::TestLoggingUsingAdminPermissions::test_update_copr ERROR [ 19%]
tests/test_logging.py::TestLoggingUsingAdminPermissions::test_update_copr_chroot ERROR [ 19%]
tests/test_logging.py::TestLoggingUsingAdminPermissions::test_update_copr_chroot ERROR [ 19%]
tests/test_logging.py::TestLoggingUsingAdminPermissions::test_update_package_webui ERROR [ 19%]
tests/test_logging.py::TestLoggingUsingAdminPermissions::test_update_package_webui ERROR [ 19%]
tests/test_logging.py::TestLoggingUsingAdminPermissions::test_update_package_apiv3 ERROR [ 20%]
tests/test_logging.py::TestLoggingUsingAdminPermissions::test_update_package_apiv3 ERROR [ 20%]
tests/test_mail.py::TestMail::test_permissions_request_message ERROR     [ 20%]
tests/test_mail.py::TestMail::test_permissions_request_message ERROR     [ 20%]
tests/test_mail.py::TestMail::test_permissions_change_message ERROR      [ 20%]
tests/test_mail.py::TestMail::test_permissions_change_message ERROR      [ 20%]
tests/test_mail.py::TestMail::test_legal_flag_message ERROR              [ 20%]
tests/test_mail.py::TestMail::test_legal_flag_message ERROR              [ 20%]
tests/test_mail.py::TestMail::test_outdated_chroot_message ERROR         [ 20%]
tests/test_mail.py::TestMail::test_outdated_chroot_message ERROR         [ 20%]
tests/test_mail.py::TestMail::test_outdated_chroot_message_empty_chroots PASSED [ 21%]
tests/test_mail.py::TestMail::test_outdated_chroot_message_empty_chroots ERROR [ 21%]
tests/test_mail.py::TestMail::test_filter_recipients PASSED              [ 21%]
tests/test_mail.py::TestMail::test_filter_recipients ERROR               [ 21%]
tests/test_models.py::TestBuildModel::test_get_chroots_by_status ERROR   [ 21%]
tests/test_models.py::TestBuildModel::test_get_chroots_by_status ERROR   [ 21%]
tests/test_models.py::TestBuildModel::test_chroot_denylist ERROR         [ 21%]
tests/test_models.py::TestBuildModel::test_chroot_denylist ERROR         [ 21%]
tests/test_models.py::TestBuildModel::test_chroot_denylist_all ERROR     [ 21%]
tests/test_models.py::TestBuildModel::test_chroot_denylist_all ERROR     [ 21%]
tests/test_models.py::TestBuildModel::test_finished ERROR                [ 22%]
tests/test_models.py::TestBuildModel::test_finished ERROR                [ 22%]
tests/test_models.py::TestBuildModel::test_finished_srpms ERROR          [ 22%]
tests/test_models.py::TestBuildModel::test_finished_srpms ERROR          [ 22%]
tests/test_models.py::TestBuildModel::test_canceled ERROR                [ 22%]
tests/test_models.py::TestBuildModel::test_canceled ERROR                [ 22%]
tests/test_models.py::TestBuildModel::test_build_logs ERROR              [ 22%]
tests/test_models.py::TestBuildModel::test_build_logs ERROR              [ 22%]
tests/test_models.py::TestBuildModel::test_buildchroot_logs ERROR        [ 22%]
tests/test_models.py::TestBuildModel::test_buildchroot_logs ERROR        [ 22%]
tests/test_models.py::TestBuildModel::test_source_state_translation PASSED [ 23%]
tests/test_models.py::TestBuildModel::test_source_state_translation ERROR [ 23%]
tests/test_models.py::TestCoprModel::test_permissible_chroots ERROR      [ 23%]
tests/test_models.py::TestCoprModel::test_permissible_chroots ERROR      [ 23%]
tests/test_pagure_events.py::TestPagureEvents::test_negative_event_info_from_pr_comment PASSED [ 23%]
tests/test_pagure_events.py::TestPagureEvents::test_negative_event_info_from_pr_comment ERROR [ 23%]
tests/test_pagure_events.py::TestPagureEvents::test_negative_is_dir_in_commit FAILED [ 23%]
tests/test_pagure_events.py::TestPagureEvents::test_negative_is_dir_in_commit ERROR [ 23%]
tests/test_pagure_events.py::TestPagureEvents::test_positive_is_dir_in_commit FAILED [ 23%]
tests/test_pagure_events.py::TestPagureEvents::test_positive_is_dir_in_commit ERROR [ 23%]
tests/test_pagure_events.py::TestPagureEvents::test_positive_build_from_pr_update FAILED [ 24%]
tests/test_pagure_events.py::TestPagureEvents::test_positive_build_from_pr_update ERROR [ 24%]
tests/test_pagure_events.py::TestPagureEvents::test_negative_event_info_from_pr_comment_random_comment PASSED [ 24%]
tests/test_pagure_events.py::TestPagureEvents::test_negative_event_info_from_pr_comment_random_comment ERROR [ 24%]
tests/test_pagure_events.py::TestPagureEvents::test_positive_event_info_from_pr_comment PASSED [ 24%]
tests/test_pagure_events.py::TestPagureEvents::test_positive_event_info_from_pr_comment ERROR [ 24%]
tests/test_pagure_events.py::TestPagureEvents::test_negative_build_from_pr_comment FAILED [ 24%]
tests/test_pagure_events.py::TestPagureEvents::test_negative_build_from_pr_comment ERROR [ 24%]
tests/test_pagure_events.py::TestPagureEvents::test_negative_event_info FAILED [ 25%]
tests/test_pagure_events.py::TestPagureEvents::test_negative_event_info ERROR [ 25%]
tests/test_pagure_events.py::TestPagureEvents::test_negative_event_info_from_pr_comment_closed_pr PASSED [ 25%]
tests/test_pagure_events.py::TestPagureEvents::test_negative_event_info_from_pr_comment_closed_pr ERROR [ 25%]
tests/test_pagure_events.py::TestPagureEvents::test_positive_event_info_from_pr PASSED [ 25%]
tests/test_pagure_events.py::TestPagureEvents::test_positive_event_info_from_pr ERROR [ 25%]
tests/test_pagure_events.py::TestPagureEvents::test_positive_event_info_from_push PASSED [ 25%]
tests/test_pagure_events.py::TestPagureEvents::test_positive_event_info_from_push ERROR [ 25%]
tests/test_pagure_events.py::TestPagureEvents::test_positive_build_from_push FAILED [ 25%]
tests/test_pagure_events.py::TestPagureEvents::test_positive_build_from_push ERROR [ 25%]
tests/test_pagure_events.py::TestPagureEvents::test_negative_build_from_push FAILED [ 26%]
tests/test_pagure_events.py::TestPagureEvents::test_negative_build_from_push ERROR [ 26%]
tests/test_pagure_events.py::TestPagureEvents::test_negative_unknown_topic PASSED [ 26%]
tests/test_pagure_events.py::TestPagureEvents::test_negative_unknown_topic ERROR [ 26%]
tests/test_pagure_events.py::TestPagureEvents::test_positive_build_from_pr_fork FAILED [ 26%]
tests/test_pagure_events.py::TestPagureEvents::test_positive_build_from_pr_fork ERROR [ 26%]
tests/test_resubmit.py::TestCoprResubmitBuild::test_copr_repeat_build_attributes_upload ERROR [ 26%]
tests/test_resubmit.py::TestCoprResubmitBuild::test_copr_repeat_build_attributes_upload ERROR [ 26%]
tests/test_webhooks.py::TestCustomWebhook::test_package_not_found ERROR  [ 26%]
tests/test_webhooks.py::TestCustomWebhook::test_package_not_found ERROR  [ 26%]
tests/test_webhooks.py::TestCustomWebhook::test_hook_data_stored ERROR   [ 27%]
tests/test_webhooks.py::TestCustomWebhook::test_hook_data_stored ERROR   [ 27%]
tests/test_webhooks.py::TestCustomWebhook::test_bad_uuid ERROR           [ 27%]
tests/test_webhooks.py::TestCustomWebhook::test_bad_uuid ERROR           [ 27%]
tests/test_webhooks.py::TestGithubWebhook::test_package_bad_request ERROR [ 27%]
tests/test_webhooks.py::TestGithubWebhook::test_package_bad_request ERROR [ 27%]
tests/test_webhooks.py::TestGithubWebhook::test_hook_status_ping_event ERROR [ 27%]
tests/test_webhooks.py::TestGithubWebhook::test_hook_status_ping_event ERROR [ 27%]
tests/test_webhooks.py::TestGithubWebhook::test_hook_data_stored ERROR   [ 27%]
tests/test_webhooks.py::TestGithubWebhook::test_hook_data_stored ERROR   [ 27%]
tests/test_webhooks.py::TestGithubWebhook::test_bad_uuid ERROR           [ 28%]
tests/test_webhooks.py::TestGithubWebhook::test_bad_uuid ERROR           [ 28%]
tests/test_webhooks.py::TestGitlabWebhook::test_package_bad_request ERROR [ 28%]
tests/test_webhooks.py::TestGitlabWebhook::test_package_bad_request ERROR [ 28%]
tests/test_webhooks.py::TestGitlabWebhook::test_hook_data_stored ERROR   [ 28%]
tests/test_webhooks.py::TestGitlabWebhook::test_hook_data_stored ERROR   [ 28%]
tests/test_webhooks.py::TestGitlabWebhook::test_bad_uuid ERROR           [ 28%]
tests/test_webhooks.py::TestGitlabWebhook::test_bad_uuid ERROR           [ 28%]
tests/test_webhooks.py::TestBitbucketWebhook::test_package_bad_request ERROR [ 28%]
tests/test_webhooks.py::TestBitbucketWebhook::test_package_bad_request ERROR [ 28%]
tests/test_webhooks.py::TestBitbucketWebhook::test_hook_data_stored ERROR [ 29%]
tests/test_webhooks.py::TestBitbucketWebhook::test_hook_data_stored ERROR [ 29%]
tests/test_webhooks.py::TestBitbucketWebhook::test_bad_uuid ERROR        [ 29%]
tests/test_webhooks.py::TestBitbucketWebhook::test_bad_uuid ERROR        [ 29%]
tests/test_apiv3/test_build_chroots.py::TestAPIv3BuildChrootsResults::test_build_chroot_built_packages[None] ERROR [ 29%]
tests/test_apiv3/test_build_chroots.py::TestAPIv3BuildChrootsResults::test_build_chroot_built_packages[None] ERROR [ 29%]
tests/test_apiv3/test_build_chroots.py::TestAPIv3BuildChrootsResults::test_build_chroot_built_packages[1] ERROR [ 29%]
tests/test_apiv3/test_build_chroots.py::TestAPIv3BuildChrootsResults::test_build_chroot_built_packages[1] ERROR [ 29%]
tests/test_apiv3/test_build_chroots.py::TestAPIv3BuildChrootsResults::test_build_chroot_built_packages[11] ERROR [ 30%]
tests/test_apiv3/test_build_chroots.py::TestAPIv3BuildChrootsResults::test_build_chroot_built_packages[11] ERROR [ 30%]
tests/test_apiv3/test_build_chroots.py::TestAPIv3BuildChrootsResults::test_build_chroot_list[ASC] ERROR [ 30%]
tests/test_apiv3/test_build_chroots.py::TestAPIv3BuildChrootsResults::test_build_chroot_list[ASC] ERROR [ 30%]
tests/test_apiv3/test_build_chroots.py::TestAPIv3BuildChrootsResults::test_build_chroot_list[DESC] ERROR [ 30%]
tests/test_apiv3/test_build_chroots.py::TestAPIv3BuildChrootsResults::test_build_chroot_list[DESC] ERROR [ 30%]
tests/test_apiv3/test_build_chroots.py::TestAPIv3BuildChrootsResults::test_build_chroot_list_no_id ERROR [ 30%]
tests/test_apiv3/test_build_chroots.py::TestAPIv3BuildChrootsResults::test_build_chroot_list_no_id ERROR [ 30%]
tests/test_apiv3/test_builds.py::TestAPIv3Builds::test_v3_builds[buildopts0-case0] ERROR [ 30%]
tests/test_apiv3/test_builds.py::TestAPIv3Builds::test_v3_builds[buildopts0-case0] ERROR [ 30%]
tests/test_apiv3/test_builds.py::TestAPIv3Builds::test_v3_builds[buildopts0-case1] ERROR [ 31%]
tests/test_apiv3/test_builds.py::TestAPIv3Builds::test_v3_builds[buildopts0-case1] ERROR [ 31%]
tests/test_apiv3/test_builds.py::TestAPIv3Builds::test_v3_builds[buildopts0-case2] ERROR [ 31%]
tests/test_apiv3/test_builds.py::TestAPIv3Builds::test_v3_builds[buildopts0-case2] ERROR [ 31%]
tests/test_apiv3/test_builds.py::TestAPIv3Builds::test_v3_builds[buildopts0-case3] ERROR [ 31%]
tests/test_apiv3/test_builds.py::TestAPIv3Builds::test_v3_builds[buildopts0-case3] ERROR [ 31%]
tests/test_apiv3/test_builds.py::TestAPIv3Builds::test_v3_builds[buildopts1-case0] ERROR [ 31%]
tests/test_apiv3/test_builds.py::TestAPIv3Builds::test_v3_builds[buildopts1-case0] ERROR [ 31%]
tests/test_apiv3/test_builds.py::TestAPIv3Builds::test_v3_builds[buildopts1-case1] ERROR [ 31%]
tests/test_apiv3/test_builds.py::TestAPIv3Builds::test_v3_builds[buildopts1-case1] ERROR [ 31%]
tests/test_apiv3/test_builds.py::TestAPIv3Builds::test_v3_builds[buildopts1-case2] ERROR [ 32%]
tests/test_apiv3/test_builds.py::TestAPIv3Builds::test_v3_builds[buildopts1-case2] ERROR [ 32%]
tests/test_apiv3/test_builds.py::TestAPIv3Builds::test_v3_builds[buildopts1-case3] ERROR [ 32%]
tests/test_apiv3/test_builds.py::TestAPIv3Builds::test_v3_builds[buildopts1-case3] ERROR [ 32%]
tests/test_apiv3/test_builds.py::TestAPIv3Builds::test_v3_builds[buildopts2-case0] ERROR [ 32%]
tests/test_apiv3/test_builds.py::TestAPIv3Builds::test_v3_builds[buildopts2-case0] ERROR [ 32%]
tests/test_apiv3/test_builds.py::TestAPIv3Builds::test_v3_builds[buildopts2-case1] ERROR [ 32%]
tests/test_apiv3/test_builds.py::TestAPIv3Builds::test_v3_builds[buildopts2-case1] ERROR [ 32%]
tests/test_apiv3/test_builds.py::TestAPIv3Builds::test_v3_builds[buildopts2-case2] ERROR [ 32%]
tests/test_apiv3/test_builds.py::TestAPIv3Builds::test_v3_builds[buildopts2-case2] ERROR [ 32%]
tests/test_apiv3/test_builds.py::TestAPIv3Builds::test_v3_builds[buildopts2-case3] ERROR [ 33%]
tests/test_apiv3/test_builds.py::TestAPIv3Builds::test_v3_builds[buildopts2-case3] ERROR [ 33%]
tests/test_apiv3/test_builds.py::TestAPIv3Builds::test_v3_builds[buildopts3-case0] ERROR [ 33%]
tests/test_apiv3/test_builds.py::TestAPIv3Builds::test_v3_builds[buildopts3-case0] ERROR [ 33%]
tests/test_apiv3/test_builds.py::TestAPIv3Builds::test_v3_builds[buildopts3-case1] ERROR [ 33%]
tests/test_apiv3/test_builds.py::TestAPIv3Builds::test_v3_builds[buildopts3-case1] ERROR [ 33%]
tests/test_apiv3/test_builds.py::TestAPIv3Builds::test_v3_builds[buildopts3-case2] ERROR [ 33%]
tests/test_apiv3/test_builds.py::TestAPIv3Builds::test_v3_builds[buildopts3-case2] ERROR [ 33%]
tests/test_apiv3/test_builds.py::TestAPIv3Builds::test_v3_builds[buildopts3-case3] ERROR [ 33%]
tests/test_apiv3/test_builds.py::TestAPIv3Builds::test_v3_builds[buildopts3-case3] ERROR [ 33%]
tests/test_apiv3/test_builds.py::TestAPIv3Builds::test_v3_build_failure[case0] ERROR [ 34%]
tests/test_apiv3/test_builds.py::TestAPIv3Builds::test_v3_build_failure[case0] ERROR [ 34%]
tests/test_apiv3/test_builds.py::TestAPIv3Builds::test_v3_build_failure[case1] ERROR [ 34%]
tests/test_apiv3/test_builds.py::TestAPIv3Builds::test_v3_build_failure[case1] ERROR [ 34%]
tests/test_apiv3/test_builds.py::TestAPIv3Builds::test_v3_get_build ERROR [ 34%]
tests/test_apiv3/test_builds.py::TestAPIv3Builds::test_v3_get_build ERROR [ 34%]
tests/test_apiv3/test_builds.py::TestAPIv3Builds::test_v3_builds_exclude_chroots[exclude_chroots0-case0] ERROR [ 34%]
tests/test_apiv3/test_builds.py::TestAPIv3Builds::test_v3_builds_exclude_chroots[exclude_chroots0-case0] ERROR [ 34%]
tests/test_apiv3/test_builds.py::TestAPIv3Builds::test_v3_builds_exclude_chroots[exclude_chroots0-case1] ERROR [ 35%]
tests/test_apiv3/test_builds.py::TestAPIv3Builds::test_v3_builds_exclude_chroots[exclude_chroots0-case1] ERROR [ 35%]
tests/test_apiv3/test_builds.py::TestAPIv3Builds::test_v3_builds_exclude_chroots[exclude_chroots0-case2] ERROR [ 35%]
tests/test_apiv3/test_builds.py::TestAPIv3Builds::test_v3_builds_exclude_chroots[exclude_chroots0-case2] ERROR [ 35%]
tests/test_apiv3/test_builds.py::TestAPIv3Builds::test_v3_builds_exclude_chroots[exclude_chroots0-case3] ERROR [ 35%]
tests/test_apiv3/test_builds.py::TestAPIv3Builds::test_v3_builds_exclude_chroots[exclude_chroots0-case3] ERROR [ 35%]
tests/test_apiv3/test_builds.py::TestAPIv3Builds::test_v3_builds_exclude_chroots[exclude_chroots1-case0] ERROR [ 35%]
tests/test_apiv3/test_builds.py::TestAPIv3Builds::test_v3_builds_exclude_chroots[exclude_chroots1-case0] ERROR [ 35%]
tests/test_apiv3/test_builds.py::TestAPIv3Builds::test_v3_builds_exclude_chroots[exclude_chroots1-case1] ERROR [ 35%]
tests/test_apiv3/test_builds.py::TestAPIv3Builds::test_v3_builds_exclude_chroots[exclude_chroots1-case1] ERROR [ 35%]
tests/test_apiv3/test_builds.py::TestAPIv3Builds::test_v3_builds_exclude_chroots[exclude_chroots1-case2] ERROR [ 36%]
tests/test_apiv3/test_builds.py::TestAPIv3Builds::test_v3_builds_exclude_chroots[exclude_chroots1-case2] ERROR [ 36%]
tests/test_apiv3/test_builds.py::TestAPIv3Builds::test_v3_builds_exclude_chroots[exclude_chroots1-case3] ERROR [ 36%]
tests/test_apiv3/test_builds.py::TestAPIv3Builds::test_v3_builds_exclude_chroots[exclude_chroots1-case3] ERROR [ 36%]
tests/test_apiv3/test_builds.py::TestWebUIBuilds::test_isolation_option_set ERROR [ 36%]
tests/test_apiv3/test_builds.py::TestWebUIBuilds::test_isolation_option_set ERROR [ 36%]
tests/test_apiv3/test_builds.py::TestAPIv3BuildsResults::test_build_built_packages ERROR [ 36%]
tests/test_apiv3/test_builds.py::TestAPIv3BuildsResults::test_build_built_packages ERROR [ 36%]
tests/test_apiv3/test_copr_chroot.py::TestCoprChroots::test_edit_chroot_form ERROR [ 36%]
tests/test_apiv3/test_copr_chroot.py::TestCoprChroots::test_edit_chroot_form ERROR [ 36%]
tests/test_apiv3/test_copr_chroot.py::TestCoprChroots::test_v3_edit_chroot ERROR [ 37%]
tests/test_apiv3/test_copr_chroot.py::TestCoprChroots::test_v3_edit_chroot ERROR [ 37%]
tests/test_apiv3/test_copr_chroot.py::TestCoprChroots::test_v3_edit_chroot_reset ERROR [ 37%]
tests/test_apiv3/test_copr_chroot.py::TestCoprChroots::test_v3_edit_chroot_reset ERROR [ 37%]
tests/test_apiv3/test_copr_chroot.py::TestCoprChroots::test_edit_chroot_permission ERROR [ 37%]
tests/test_apiv3/test_copr_chroot.py::TestCoprChroots::test_edit_chroot_permission ERROR [ 37%]
tests/test_apiv3/test_copr_chroot.py::TestCoprChroots::test_edit_chroot_form_error ERROR [ 37%]
tests/test_apiv3/test_copr_chroot.py::TestCoprChroots::test_edit_chroot_form_error ERROR [ 37%]
tests/test_apiv3/test_coprdirs.py::TestCoprDir::test_custom_copr_dir ERROR [ 37%]
tests/test_apiv3/test_coprdirs.py::TestCoprDir::test_custom_copr_dir ERROR [ 37%]
tests/test_apiv3/test_coprdirs.py::TestCoprDir::test_custom_dir_validation ERROR [ 38%]
tests/test_apiv3/test_coprdirs.py::TestCoprDir::test_custom_dir_validation ERROR [ 38%]
tests/test_apiv3/test_mock_chroot.py::TestMockChroot::test_list_available_chroots FAILED [ 38%]
tests/test_apiv3/test_mock_chroot.py::TestMockChroot::test_list_available_chroots ERROR [ 38%]
tests/test_apiv3/test_monitor.py::TestAPIv3Monitor::test_v3_monitor[case0] ERROR [ 38%]
tests/test_apiv3/test_monitor.py::TestAPIv3Monitor::test_v3_monitor[case0] ERROR [ 38%]
tests/test_apiv3/test_monitor.py::TestAPIv3Monitor::test_v3_monitor[case1] ERROR [ 38%]
tests/test_apiv3/test_monitor.py::TestAPIv3Monitor::test_v3_monitor[case1] ERROR [ 38%]
tests/test_apiv3/test_monitor.py::TestAPIv3Monitor::test_v3_monitor[case2] ERROR [ 38%]
tests/test_apiv3/test_monitor.py::TestAPIv3Monitor::test_v3_monitor[case2] ERROR [ 38%]
tests/test_apiv3/test_monitor.py::TestAPIv3Monitor::test_v3_monitor[case3] ERROR [ 39%]
tests/test_apiv3/test_monitor.py::TestAPIv3Monitor::test_v3_monitor[case3] ERROR [ 39%]
tests/test_apiv3/test_monitor.py::TestAPIv3Monitor::test_v3_monitor_empty_project ERROR [ 39%]
tests/test_apiv3/test_monitor.py::TestAPIv3Monitor::test_v3_monitor_empty_project ERROR [ 39%]
tests/test_apiv3/test_monitor.py::TestAPIv3Monitor::test_v3_monitor_multi_chroot ERROR [ 39%]
tests/test_apiv3/test_monitor.py::TestAPIv3Monitor::test_v3_monitor_multi_chroot ERROR [ 39%]
tests/test_apiv3/test_monitor.py::TestAPIv3Monitor::test_v3_monitor_source_build ERROR [ 39%]
tests/test_apiv3/test_monitor.py::TestAPIv3Monitor::test_v3_monitor_source_build ERROR [ 39%]
tests/test_apiv3/test_packages.py::TestAPIv3Packages::test_v3_packages[chroots0-case0] ERROR [ 40%]
tests/test_apiv3/test_packages.py::TestAPIv3Packages::test_v3_packages[chroots0-case0] ERROR [ 40%]
tests/test_apiv3/test_packages.py::TestAPIv3Packages::test_v3_packages[chroots0-case1] ERROR [ 40%]
tests/test_apiv3/test_packages.py::TestAPIv3Packages::test_v3_packages[chroots0-case1] ERROR [ 40%]
tests/test_apiv3/test_packages.py::TestAPIv3Packages::test_v3_packages[chroots0-case2] ERROR [ 40%]
tests/test_apiv3/test_packages.py::TestAPIv3Packages::test_v3_packages[chroots0-case2] ERROR [ 40%]
tests/test_apiv3/test_packages.py::TestAPIv3Packages::test_v3_packages[chroots0-case3] ERROR [ 40%]
tests/test_apiv3/test_packages.py::TestAPIv3Packages::test_v3_packages[chroots0-case3] ERROR [ 40%]
tests/test_apiv3/test_packages.py::TestAPIv3Packages::test_v3_packages[chroots1-case0] ERROR [ 40%]
tests/test_apiv3/test_packages.py::TestAPIv3Packages::test_v3_packages[chroots1-case0] ERROR [ 40%]
tests/test_apiv3/test_packages.py::TestAPIv3Packages::test_v3_packages[chroots1-case1] ERROR [ 41%]
tests/test_apiv3/test_packages.py::TestAPIv3Packages::test_v3_packages[chroots1-case1] ERROR [ 41%]
tests/test_apiv3/test_packages.py::TestAPIv3Packages::test_v3_packages[chroots1-case2] ERROR [ 41%]
tests/test_apiv3/test_packages.py::TestAPIv3Packages::test_v3_packages[chroots1-case2] ERROR [ 41%]
tests/test_apiv3/test_packages.py::TestAPIv3Packages::test_v3_packages[chroots1-case3] ERROR [ 41%]
tests/test_apiv3/test_packages.py::TestAPIv3Packages::test_v3_packages[chroots1-case3] ERROR [ 41%]
tests/test_apiv3/test_project_chroots.py::TestApiv3ProjectChroots::test_edit_project_chroot_api ERROR [ 41%]
tests/test_apiv3/test_project_chroots.py::TestApiv3ProjectChroots::test_edit_project_chroot_api ERROR [ 41%]
tests/test_apiv3/test_projects.py::TestApiv3Projects::test_get_project_list_order ERROR [ 41%]
tests/test_apiv3/test_projects.py::TestApiv3Projects::test_get_project_list_order ERROR [ 41%]
tests/test_apiv3/test_projects.py::TestApiv3Projects::test_compat_bootstrap_config[True-on] ERROR [ 42%]
tests/test_apiv3/test_projects.py::TestApiv3Projects::test_compat_bootstrap_config[True-on] ERROR [ 42%]
tests/test_apiv3/test_projects.py::TestApiv3Projects::test_compat_bootstrap_config[False-off] ERROR [ 42%]
tests/test_apiv3/test_projects.py::TestApiv3Projects::test_compat_bootstrap_config[False-off] ERROR [ 42%]
tests/test_apiv3/test_projects.py::TestApiv3Projects::test_isolation_config[nspawn-nspawn] ERROR [ 42%]
tests/test_apiv3/test_projects.py::TestApiv3Projects::test_isolation_config[nspawn-nspawn] ERROR [ 42%]
tests/test_apiv3/test_projects.py::TestApiv3Projects::test_isolation_config[simple-simple] ERROR [ 42%]
tests/test_apiv3/test_projects.py::TestApiv3Projects::test_isolation_config[simple-simple] ERROR [ 42%]
tests/test_apiv3/test_projects.py::TestApiv3Projects::test_isolation_config[None-default] ERROR [ 42%]
tests/test_apiv3/test_projects.py::TestApiv3Projects::test_isolation_config[None-default] ERROR [ 42%]
tests/test_apiv3/test_projects.py::TestApiv3Projects::test_update_copr_api3 ERROR [ 43%]
tests/test_apiv3/test_projects.py::TestApiv3Projects::test_update_copr_api3 ERROR [ 43%]
tests/test_apiv3/test_projects.py::TestApiv3Projects::test_fedora_review_setting ERROR [ 43%]
tests/test_apiv3/test_projects.py::TestApiv3Projects::test_fedora_review_setting ERROR [ 43%]
tests/test_apiv3/test_projects.py::TestApiv3Projects::test_regenerate_repos ERROR [ 43%]
tests/test_apiv3/test_projects.py::TestApiv3Projects::test_regenerate_repos ERROR [ 43%]
tests/test_apiv3/test_projects.py::TestApiV3Permissions::test_perms_get_require_admin ERROR [ 43%]
tests/test_apiv3/test_projects.py::TestApiV3Permissions::test_perms_get_require_admin ERROR [ 43%]
tests/test_apiv3/test_projects.py::TestApiV3Permissions::test_no_permission_set ERROR [ 43%]
tests/test_apiv3/test_projects.py::TestApiV3Permissions::test_no_permission_set ERROR [ 43%]
tests/test_apiv3/test_projects.py::TestApiV3Permissions::test_perms_accessible_by_user ERROR [ 44%]
tests/test_apiv3/test_projects.py::TestApiV3Permissions::test_perms_accessible_by_user ERROR [ 44%]
tests/test_apiv3/test_projects.py::TestApiV3Permissions::test_perms_set_require_admin ERROR [ 44%]
tests/test_apiv3/test_projects.py::TestApiV3Permissions::test_perms_set_require_admin ERROR [ 44%]
tests/test_apiv3/test_projects.py::TestApiV3Permissions::test_set_bad_data ERROR [ 44%]
tests/test_apiv3/test_projects.py::TestApiV3Permissions::test_set_bad_data ERROR [ 44%]
tests/test_apiv3/test_projects.py::TestApiV3Permissions::test_settable ERROR [ 44%]
tests/test_apiv3/test_projects.py::TestApiV3Permissions::test_settable ERROR [ 44%]
tests/test_apiv3/test_projects.py::TestApiV3Permissions::test_cant_readd_owner ERROR [ 45%]
tests/test_apiv3/test_projects.py::TestApiV3Permissions::test_cant_readd_owner ERROR [ 45%]
tests/test_apiv3/test_projects.py::TestApiV3Permissions::test_request_invalid ERROR [ 45%]
tests/test_apiv3/test_projects.py::TestApiV3Permissions::test_request_invalid ERROR [ 45%]
tests/test_apiv3/test_projects.py::TestApiV3Permissions::test_request_valid ERROR [ 45%]
tests/test_apiv3/test_projects.py::TestApiV3Permissions::test_request_valid ERROR [ 45%]
tests/test_apiv3/test_projects.py::TestApiV3Permissions::test_perms_set_sends_emails ERROR [ 45%]
tests/test_apiv3/test_projects.py::TestApiV3Permissions::test_perms_set_sends_emails ERROR [ 45%]
tests/test_apiv3/test_projects.py::TestApiV3Permissions::test_perms_set_sends_emails_2 ERROR [ 45%]
tests/test_apiv3/test_projects.py::TestApiV3Permissions::test_perms_set_sends_emails_2 ERROR [ 45%]
tests/test_apiv3/test_projects.py::TestApiV3Permissions::test_add_exist_ok ERROR [ 46%]
tests/test_apiv3/test_projects.py::TestApiV3Permissions::test_add_exist_ok ERROR [ 46%]
tests/test_apiv3/test_rpmrepo.py::TestApiRPMRepo::test_apiv3_rpmrepo_external_deps ERROR [ 46%]
tests/test_apiv3/test_rpmrepo.py::TestApiRPMRepo::test_apiv3_rpmrepo_external_deps ERROR [ 46%]
tests/test_apiv3/test_rpmrepo.py::TestApiRPMRepo::test_apiv3_rpmrepo_multilib ERROR [ 46%]
tests/test_apiv3/test_rpmrepo.py::TestApiRPMRepo::test_apiv3_rpmrepo_multilib ERROR [ 46%]
tests/test_apiv3/test_rpmrepo.py::TestApiRPMRepo::test_apiv3_rpmrepo_dirs ERROR [ 46%]
tests/test_apiv3/test_rpmrepo.py::TestApiRPMRepo::test_apiv3_rpmrepo_dirs ERROR [ 46%]
tests/test_commands/test_create_chroots.py::TestCreateChrootCommand::test_create_chroot_with_comments ERROR [ 46%]
tests/test_commands/test_create_chroots.py::TestCreateChrootCommand::test_create_chroot_with_comments ERROR [ 46%]
tests/test_commands/test_delete_outdated_chroots.py::TestDeleteOutdatedChroots::test_delete_outdated ERROR [ 47%]
tests/test_commands/test_delete_outdated_chroots.py::TestDeleteOutdatedChroots::test_delete_outdated ERROR [ 47%]
tests/test_commands/test_delete_outdated_chroots.py::TestDeleteOutdatedChroots::test_delete_outdated_yesterday ERROR [ 47%]
tests/test_commands/test_delete_outdated_chroots.py::TestDeleteOutdatedChroots::test_delete_outdated_yesterday ERROR [ 47%]
tests/test_commands/test_delete_outdated_chroots.py::TestDeleteOutdatedChroots::test_delete_outdated_not_yet ERROR [ 47%]
tests/test_commands/test_delete_outdated_chroots.py::TestDeleteOutdatedChroots::test_delete_outdated_not_yet ERROR [ 47%]
tests/test_commands/test_delete_outdated_chroots.py::TestDeleteOutdatedChroots::test_delete_outdated_handle_none_notify ERROR [ 47%]
tests/test_commands/test_delete_outdated_chroots.py::TestDeleteOutdatedChroots::test_delete_outdated_handle_none_notify ERROR [ 47%]
tests/test_commands/test_delete_outdated_chroots.py::TestDeleteOutdatedChroots::test_delete_unclicked ERROR [ 47%]
tests/test_commands/test_delete_outdated_chroots.py::TestDeleteOutdatedChroots::test_delete_unclicked ERROR [ 47%]
tests/test_commands/test_notify_outdated_chroots.py::TestNotifyOutdatedChroots::test_user_chroots_map ERROR [ 48%]
tests/test_commands/test_notify_outdated_chroots.py::TestNotifyOutdatedChroots::test_user_chroots_map ERROR [ 48%]
tests/test_commands/test_notify_outdated_chroots.py::TestNotifyOutdatedChroots::test_user_chroots_map_permissions ERROR [ 48%]
tests/test_commands/test_notify_outdated_chroots.py::TestNotifyOutdatedChroots::test_user_chroots_map_permissions ERROR [ 48%]
tests/test_commands/test_notify_outdated_chroots.py::TestNotifyOutdatedChroots::test_user_chroots_map_email ERROR [ 48%]
tests/test_commands/test_notify_outdated_chroots.py::TestNotifyOutdatedChroots::test_user_chroots_map_email ERROR [ 48%]
tests/test_commands/test_notify_outdated_chroots.py::TestNotifyOutdatedChroots::test_filter_chroots ERROR [ 48%]
tests/test_commands/test_notify_outdated_chroots.py::TestNotifyOutdatedChroots::test_filter_chroots ERROR [ 48%]
tests/test_commands/test_notify_outdated_chroots.py::TestNotifyOutdatedChroots::test_notify_outdated_chroots ERROR [ 48%]
tests/test_commands/test_notify_outdated_chroots.py::TestNotifyOutdatedChroots::test_notify_outdated_chroots ERROR [ 48%]
tests/test_commands/test_notify_outdated_chroots.py::TestNotifyOutdatedChroots::test_notify_outdated_chroots_email_filter ERROR [ 49%]
tests/test_commands/test_notify_outdated_chroots.py::TestNotifyOutdatedChroots::test_notify_outdated_chroots_email_filter ERROR [ 49%]
tests/test_commands/test_rawhide_to_release.py::TestRawhideToRelease::test_rawhide_to_release_action ERROR [ 49%]
tests/test_commands/test_rawhide_to_release.py::TestRawhideToRelease::test_rawhide_to_release_action ERROR [ 49%]
tests/test_commands/test_rawhide_to_release.py::TestBranchFedora::test_branch_fedora ERROR [ 49%]
tests/test_commands/test_rawhide_to_release.py::TestBranchFedora::test_branch_fedora ERROR [ 49%]
tests/test_logic/test_batch_logic.py::TestBatchesLogic::test_normal_batch_operation_failures ERROR [ 49%]
tests/test_logic/test_batch_logic.py::TestBatchesLogic::test_normal_batch_operation_failures ERROR [ 49%]
tests/test_logic/test_batch_logic.py::TestBatchesLogic::test_less_likely_batch_problems ERROR [ 50%]
tests/test_logic/test_batch_logic.py::TestBatchesLogic::test_less_likely_batch_problems ERROR [ 50%]
tests/test_logic/test_batch_logic.py::TestBatchesLogic::test_cant_group_others_build ERROR [ 50%]
tests/test_logic/test_batch_logic.py::TestBatchesLogic::test_cant_group_others_build ERROR [ 50%]
tests/test_logic/test_batch_logic.py::TestBatchesLogic::test_batched_build_queue_sql_performance ERROR [ 50%]
tests/test_logic/test_batch_logic.py::TestBatchesLogic::test_batched_build_queue_sql_performance ERROR [ 50%]
tests/test_logic/test_batch_logic.py::TestBatchesLogic::test_large_batch_build_queue ERROR [ 50%]
tests/test_logic/test_batch_logic.py::TestBatchesLogic::test_large_batch_build_queue ERROR [ 50%]
tests/test_logic/test_builds_logic.py::TestBuildsLogic::test_add_only_adds_active_chroots ERROR [ 50%]
tests/test_logic/test_builds_logic.py::TestBuildsLogic::test_add_only_adds_active_chroots ERROR [ 50%]
tests/test_logic/test_builds_logic.py::TestBuildsLogic::test_build_still_active_chroots ERROR [ 51%]
tests/test_logic/test_builds_logic.py::TestBuildsLogic::test_build_still_active_chroots ERROR [ 51%]
tests/test_logic/test_builds_logic.py::TestBuildsLogic::test_add_raises_if_copr_has_unfinished_actions ERROR [ 51%]
tests/test_logic/test_builds_logic.py::TestBuildsLogic::test_add_raises_if_copr_has_unfinished_actions ERROR [ 51%]
tests/test_logic/test_builds_logic.py::TestBuildsLogic::test_add_assigns_params_correctly ERROR [ 51%]
tests/test_logic/test_builds_logic.py::TestBuildsLogic::test_add_assigns_params_correctly ERROR [ 51%]
tests/test_logic/test_builds_logic.py::TestBuildsLogic::test_add_error_on_multiply_src ERROR [ 51%]
tests/test_logic/test_builds_logic.py::TestBuildsLogic::test_add_error_on_multiply_src ERROR [ 51%]
tests/test_logic/test_builds_logic.py::TestBuildsLogic::test_build_queue_1 ERROR [ 51%]
tests/test_logic/test_builds_logic.py::TestBuildsLogic::test_build_queue_1 ERROR [ 51%]
tests/test_logic/test_builds_logic.py::TestBuildsLogic::test_build_queue_2 ERROR [ 52%]
tests/test_logic/test_builds_logic.py::TestBuildsLogic::test_build_queue_2 ERROR [ 52%]
tests/test_logic/test_builds_logic.py::TestBuildsLogic::test_build_queue_3 ERROR [ 52%]
tests/test_logic/test_builds_logic.py::TestBuildsLogic::test_build_queue_3 ERROR [ 52%]
tests/test_logic/test_builds_logic.py::TestBuildsLogic::test_build_queue_4 ERROR [ 52%]
tests/test_logic/test_builds_logic.py::TestBuildsLogic::test_build_queue_4 ERROR [ 52%]
tests/test_logic/test_builds_logic.py::TestBuildsLogic::test_build_queue_5 ERROR [ 52%]
tests/test_logic/test_builds_logic.py::TestBuildsLogic::test_build_queue_5 ERROR [ 52%]
tests/test_logic/test_builds_logic.py::TestBuildsLogic::test_build_queue_6 ERROR [ 52%]
tests/test_logic/test_builds_logic.py::TestBuildsLogic::test_build_queue_6 ERROR [ 52%]
tests/test_logic/test_builds_logic.py::TestBuildsLogic::test_build_queue_7 ERROR [ 53%]
tests/test_logic/test_builds_logic.py::TestBuildsLogic::test_build_queue_7 ERROR [ 53%]
tests/test_logic/test_builds_logic.py::TestBuildsLogic::test_delete_build_exceptions ERROR [ 53%]
tests/test_logic/test_builds_logic.py::TestBuildsLogic::test_delete_build_exceptions ERROR [ 53%]
tests/test_logic/test_builds_logic.py::TestBuildsLogic::test_delete_build_as_admin ERROR [ 53%]
tests/test_logic/test_builds_logic.py::TestBuildsLogic::test_delete_build_as_admin ERROR [ 53%]
tests/test_logic/test_builds_logic.py::TestBuildsLogic::test_delete_build_no_resultdir ERROR [ 53%]
tests/test_logic/test_builds_logic.py::TestBuildsLogic::test_delete_build_no_resultdir ERROR [ 53%]
tests/test_logic/test_builds_logic.py::TestBuildsLogic::test_delete_mulitple_builds_no_resultdir ERROR [ 53%]
tests/test_logic/test_builds_logic.py::TestBuildsLogic::test_delete_mulitple_builds_no_resultdir ERROR [ 53%]
tests/test_logic/test_builds_logic.py::TestBuildsLogic::test_delete_build_basic ERROR [ 54%]
tests/test_logic/test_builds_logic.py::TestBuildsLogic::test_delete_build_basic ERROR [ 54%]
tests/test_logic/test_builds_logic.py::TestBuildsLogic::test_delete_multiple_builds ERROR [ 54%]
tests/test_logic/test_builds_logic.py::TestBuildsLogic::test_delete_multiple_builds ERROR [ 54%]
tests/test_logic/test_builds_logic.py::TestBuildsLogic::test_resubmit_build_inherit_git_hash FAILED [ 54%]
tests/test_logic/test_builds_logic.py::TestBuildsLogic::test_resubmit_build_inherit_git_hash ERROR [ 54%]
tests/test_logic/test_builds_logic.py::TestBuildsLogic::test_mark_as_failed FAILED [ 54%]
tests/test_logic/test_builds_logic.py::TestBuildsLogic::test_mark_as_failed ERROR [ 54%]
tests/test_logic/test_builds_logic.py::TestBuildsLogic::test_build_garbage_collector_works ERROR [ 55%]
tests/test_logic/test_builds_logic.py::TestBuildsLogic::test_build_garbage_collector_works ERROR [ 55%]
tests/test_logic/test_builds_logic.py::TestBuildsLogic::test_no_active_chroot ERROR [ 55%]
tests/test_logic/test_builds_logic.py::TestBuildsLogic::test_no_active_chroot ERROR [ 55%]
tests/test_logic/test_builds_logic.py::TestBuildsLogic::test_create_new_from_upload_no_space_left ERROR [ 55%]
tests/test_logic/test_builds_logic.py::TestBuildsLogic::test_create_new_from_upload_no_space_left ERROR [ 55%]
tests/test_logic/test_builds_logic.py::TestBuildsLogic::test_package_assigned_to_build_initially ERROR [ 55%]
tests/test_logic/test_builds_logic.py::TestBuildsLogic::test_package_assigned_to_build_initially ERROR [ 55%]
tests/test_logic/test_builds_logic.py::TestBuildsLogic::test_rebuild_all_packages ERROR [ 55%]
tests/test_logic/test_builds_logic.py::TestBuildsLogic::test_rebuild_all_packages ERROR [ 55%]
tests/test_logic/test_builds_logic.py::TestBuildsLogic::test_package_rebuild_permission_error ERROR [ 56%]
tests/test_logic/test_builds_logic.py::TestBuildsLogic::test_package_rebuild_permission_error ERROR [ 56%]
tests/test_logic/test_builds_logic.py::TestBuildsLogic::test_package_not_updated_after_source_ready ERROR [ 56%]
tests/test_logic/test_builds_logic.py::TestBuildsLogic::test_package_not_updated_after_source_ready ERROR [ 56%]
tests/test_logic/test_builds_logic.py::TestBuildsLogic::test_package_set_when_source_ready ERROR [ 56%]
tests/test_logic/test_builds_logic.py::TestBuildsLogic::test_package_set_when_source_ready ERROR [ 56%]
tests/test_logic/test_builds_logic.py::TestBuildsLogic::test_srpm_upload[100] ERROR [ 56%]
tests/test_logic/test_builds_logic.py::TestBuildsLogic::test_srpm_upload[100] ERROR [ 56%]
tests/test_logic/test_builds_logic.py::TestBuildsLogic::test_srpm_upload[1024] ERROR [ 56%]
tests/test_logic/test_builds_logic.py::TestBuildsLogic::test_srpm_upload[1024] ERROR [ 56%]
tests/test_logic/test_builds_logic.py::TestBuildsLogic::test_srpm_upload[102400] ERROR [ 57%]
tests/test_logic/test_builds_logic.py::TestBuildsLogic::test_srpm_upload[102400] ERROR [ 57%]
tests/test_logic/test_builds_logic.py::TestBuildsLogic::test_temporary_data_removed[False] ERROR [ 57%]
tests/test_logic/test_builds_logic.py::TestBuildsLogic::test_temporary_data_removed[False] ERROR [ 57%]
tests/test_logic/test_builds_logic.py::TestBuildsLogic::test_temporary_data_removed[True] ERROR [ 57%]
tests/test_logic/test_builds_logic.py::TestBuildsLogic::test_temporary_data_removed[True] ERROR [ 57%]
tests/test_logic/test_complex_logic.py::TestComplexLogic::test_fork_copr_sends_actions ERROR [ 57%]
tests/test_logic/test_complex_logic.py::TestComplexLogic::test_fork_copr_sends_actions ERROR [ 57%]
tests/test_logic/test_complex_logic.py::TestComplexLogic::test_fork_copr_projects_with_more_builds ERROR [ 57%]
tests/test_logic/test_complex_logic.py::TestComplexLogic::test_fork_copr_projects_with_more_builds ERROR [ 57%]
tests/test_logic/test_complex_logic.py::TestComplexLogic::test_fork_copr_with_eoled_chroots ERROR [ 58%]
tests/test_logic/test_complex_logic.py::TestComplexLogic::test_fork_copr_with_eoled_chroots ERROR [ 58%]
tests/test_logic/test_complex_logic.py::TestComplexLogic::test_delete_expired_coprs ERROR [ 58%]
tests/test_logic/test_complex_logic.py::TestComplexLogic::test_delete_expired_coprs ERROR [ 58%]
tests/test_logic/test_complex_logic.py::TestProjectForking::test_create_object ERROR [ 58%]
tests/test_logic/test_complex_logic.py::TestProjectForking::test_create_object ERROR [ 58%]
tests/test_logic/test_complex_logic.py::TestProjectForking::test_fork_build ERROR [ 58%]
tests/test_logic/test_complex_logic.py::TestProjectForking::test_fork_build ERROR [ 58%]
tests/test_logic/test_complex_logic.py::TestProjectForking::test_fork_check_assigned_copr_chroot ERROR [ 58%]
tests/test_logic/test_complex_logic.py::TestProjectForking::test_fork_check_assigned_copr_chroot ERROR [ 58%]
tests/test_logic/test_complex_logic.py::TestProjectForking::test_fork_package ERROR [ 59%]
tests/test_logic/test_complex_logic.py::TestProjectForking::test_fork_package ERROR [ 59%]
tests/test_logic/test_complex_logic.py::TestProjectForking::test_fork_copr ERROR [ 59%]
tests/test_logic/test_complex_logic.py::TestProjectForking::test_fork_copr ERROR [ 59%]
tests/test_logic/test_complex_logic.py::TestProjectForking::test_forking_into_existing_project ERROR [ 59%]
tests/test_logic/test_complex_logic.py::TestProjectForking::test_forking_into_existing_project ERROR [ 59%]
tests/test_logic/test_complex_logic.py::TestProjectForking::test_copr_by_repo_safe ERROR [ 59%]
tests/test_logic/test_complex_logic.py::TestProjectForking::test_copr_by_repo_safe ERROR [ 59%]
tests/test_logic/test_complex_logic.py::TestProjectForking::test_generate_build_config_with_dep_mistake ERROR [ 60%]
tests/test_logic/test_complex_logic.py::TestProjectForking::test_generate_build_config_with_dep_mistake ERROR [ 60%]
tests/test_logic/test_complex_logic.py::TestReposLogic::test_delete_reasons ERROR [ 60%]
tests/test_logic/test_complex_logic.py::TestReposLogic::test_delete_reasons ERROR [ 60%]
tests/test_logic/test_copr_dirs_logic.py::TestCoprDirsLogic::test_coprdir_cleanup_no_removal ERROR [ 60%]
tests/test_logic/test_copr_dirs_logic.py::TestCoprDirsLogic::test_coprdir_cleanup_no_removal ERROR [ 60%]
tests/test_logic/test_copr_dirs_logic.py::TestCoprDirsLogic::test_coprdir_cleanup_no_build ERROR [ 60%]
tests/test_logic/test_copr_dirs_logic.py::TestCoprDirsLogic::test_coprdir_cleanup_no_build ERROR [ 60%]
tests/test_logic/test_copr_dirs_logic.py::TestCoprDirsLogic::test_coprdir_cleanup_old_pr ERROR [ 60%]
tests/test_logic/test_copr_dirs_logic.py::TestCoprDirsLogic::test_coprdir_cleanup_old_pr ERROR [ 60%]
tests/test_logic/test_copr_dirs_logic.py::TestCoprDirsLogic::test_coprdir_cleanup_one_prs ERROR [ 61%]
tests/test_logic/test_copr_dirs_logic.py::TestCoprDirsLogic::test_coprdir_cleanup_one_prs ERROR [ 61%]
tests/test_logic/test_copr_dirs_logic.py::TestCoprDirsLogic::test_coprdir_build_normal_then_pr ERROR [ 61%]
tests/test_logic/test_copr_dirs_logic.py::TestCoprDirsLogic::test_coprdir_build_normal_then_pr ERROR [ 61%]
tests/test_logic/test_coprs_logic.py::TestCoprsLogic::test_legal_flag_doesnt_block_copr_functionality ERROR [ 61%]
tests/test_logic/test_coprs_logic.py::TestCoprsLogic::test_legal_flag_doesnt_block_copr_functionality ERROR [ 61%]
tests/test_logic/test_coprs_logic.py::TestCoprsLogic::test_fulltext_whooshee_return_all_hits ERROR [ 61%]
tests/test_logic/test_coprs_logic.py::TestCoprsLogic::test_fulltext_whooshee_return_all_hits ERROR [ 61%]
tests/test_logic/test_coprs_logic.py::TestCoprsLogic::test_raise_if_cant_delete FAILED [ 61%]
tests/test_logic/test_coprs_logic.py::TestCoprsLogic::test_raise_if_cant_delete ERROR [ 61%]
tests/test_logic/test_coprs_logic.py::TestCoprsLogic::test_raise_if_packit_forge_project_cant_build_in_copr PASSED [ 62%]
tests/test_logic/test_coprs_logic.py::TestCoprsLogic::test_raise_if_packit_forge_project_cant_build_in_copr ERROR [ 62%]
tests/test_logic/test_coprs_logic.py::TestCoprsLogic::test_copr_logic_add_sends_create_gpg_key_action ERROR [ 62%]
tests/test_logic/test_coprs_logic.py::TestCoprsLogic::test_copr_logic_add_sends_create_gpg_key_action ERROR [ 62%]
tests/test_logic/test_coprs_logic.py::TestCoprChrootsLogic::test_update_from_names ERROR [ 62%]
tests/test_logic/test_coprs_logic.py::TestCoprChrootsLogic::test_update_from_names ERROR [ 62%]
tests/test_logic/test_coprs_logic.py::TestCoprChrootsLogic::test_update_from_names_delete_after ERROR [ 62%]
tests/test_logic/test_coprs_logic.py::TestCoprChrootsLogic::test_update_from_names_delete_after ERROR [ 62%]
tests/test_logic/test_coprs_logic.py::TestCoprChrootsLogic::test_update_from_names_disabled ERROR [ 62%]
tests/test_logic/test_coprs_logic.py::TestCoprChrootsLogic::test_update_from_names_disabled ERROR [ 62%]
tests/test_logic/test_coprs_logic.py::TestCoprChrootsLogic::test_filter_outdated ERROR [ 63%]
tests/test_logic/test_coprs_logic.py::TestCoprChrootsLogic::test_filter_outdated ERROR [ 63%]
tests/test_logic/test_coprs_logic.py::TestCoprChrootsLogic::test_filter_outdated_to_be_deleted ERROR [ 63%]
tests/test_logic/test_coprs_logic.py::TestCoprChrootsLogic::test_filter_outdated_to_be_deleted ERROR [ 63%]
tests/test_logic/test_coprs_logic.py::TestCoprChrootsLogic::test_disabling_disallowed_when_build_runs ERROR [ 63%]
tests/test_logic/test_coprs_logic.py::TestCoprChrootsLogic::test_disabling_disallowed_when_build_runs ERROR [ 63%]
tests/test_logic/test_coprs_logic.py::TestCoprChrootsLogic::test_chroot_reenable ERROR [ 63%]
tests/test_logic/test_coprs_logic.py::TestCoprChrootsLogic::test_chroot_reenable ERROR [ 63%]
tests/test_logic/test_coprs_logic.py::TestCoprChrootsLogic::test_unclick_chroot_repeatedly ERROR [ 63%]
tests/test_logic/test_coprs_logic.py::TestCoprChrootsLogic::test_unclick_chroot_repeatedly ERROR [ 63%]
tests/test_logic/test_coprs_logic.py::TestPinnedCoprsLogic::test_pinned_projects ERROR [ 64%]
tests/test_logic/test_coprs_logic.py::TestPinnedCoprsLogic::test_pinned_projects ERROR [ 64%]
tests/test_logic/test_coprs_logic.py::TestPinnedCoprsLogic::test_delete_project_that_is_pinned ERROR [ 64%]
tests/test_logic/test_coprs_logic.py::TestPinnedCoprsLogic::test_delete_project_that_is_pinned ERROR [ 64%]
tests/test_logic/test_coprs_logic.py::TestCoprsLogicAdminFeatures::test_add ERROR [ 64%]
tests/test_logic/test_coprs_logic.py::TestCoprsLogicAdminFeatures::test_add ERROR [ 64%]
tests/test_logic/test_coprs_logic.py::TestCoprsLogicAdminFeatures::test_add_someone_else_project ERROR [ 64%]
tests/test_logic/test_coprs_logic.py::TestCoprsLogicAdminFeatures::test_add_someone_else_project ERROR [ 64%]
tests/test_logic/test_coprs_logic.py::TestCoprsLogicAdminFeatures::test_add_group_project ERROR [ 65%]
tests/test_logic/test_coprs_logic.py::TestCoprsLogicAdminFeatures::test_add_group_project ERROR [ 65%]
tests/test_logic/test_coprs_logic.py::TestChrootFormLogic::test_module_toggle_format PASSED [ 65%]
tests/test_logic/test_coprs_logic.py::TestChrootFormLogic::test_module_toggle_format ERROR [ 65%]
tests/test_logic/test_coprs_logic.py::TestCoprScoreLogic::test_score_math ERROR [ 65%]
tests/test_logic/test_coprs_logic.py::TestCoprScoreLogic::test_score_math ERROR [ 65%]
tests/test_logic/test_coprs_logic.py::TestCoprSearchLogic::test_search_by_attributes ERROR [ 65%]
tests/test_logic/test_coprs_logic.py::TestCoprSearchLogic::test_search_by_attributes ERROR [ 65%]
tests/test_logic/test_modules_logic.py::TestModulesLogic::test_state ERROR [ 65%]
tests/test_logic/test_modules_logic.py::TestModulesLogic::test_state ERROR [ 65%]
tests/test_logic/test_modules_logic.py::TestModulesLogic::test_get_by_nsv_str ERROR [ 66%]
tests/test_logic/test_modules_logic.py::TestModulesLogic::test_get_by_nsv_str ERROR [ 66%]
tests/test_logic/test_modules_logic.py::TestModulesLogic::test_yaml2modulemd PASSED [ 66%]
tests/test_logic/test_modules_logic.py::TestModulesLogic::test_yaml2modulemd ERROR [ 66%]
tests/test_logic/test_modules_logic.py::TestModulesLogic::test_from_modulemd PASSED [ 66%]
tests/test_logic/test_modules_logic.py::TestModulesLogic::test_from_modulemd ERROR [ 66%]
tests/test_logic/test_modules_logic.py::TestModuleBuildFacade::test_get_build_batches PASSED [ 66%]
tests/test_logic/test_modules_logic.py::TestModuleBuildFacade::test_get_build_batches ERROR [ 66%]
tests/test_logic/test_modules_logic.py::TestModuleBuildFacade::test_buildorder_issue_599 PASSED [ 66%]
tests/test_logic/test_modules_logic.py::TestModuleBuildFacade::test_buildorder_issue_599 ERROR [ 66%]
tests/test_logic/test_modules_logic.py::TestModuleBuildFacade::test_add_builds_batches ERROR [ 67%]
tests/test_logic/test_modules_logic.py::TestModuleBuildFacade::test_add_builds_batches ERROR [ 67%]
tests/test_logic/test_modules_logic.py::TestModuleBuildFacade::test_platform_chroots ERROR [ 67%]
tests/test_logic/test_modules_logic.py::TestModuleBuildFacade::test_platform_chroots ERROR [ 67%]
tests/test_logic/test_modules_logic.py::TestModuleBuildFacade::test_distgit_option ERROR [ 67%]
tests/test_logic/test_modules_logic.py::TestModuleBuildFacade::test_distgit_option ERROR [ 67%]
tests/test_logic/test_modules_logic.py::TestModulemdGenerator::test_basic_mmd_attrs PASSED [ 67%]
tests/test_logic/test_modules_logic.py::TestModulemdGenerator::test_basic_mmd_attrs ERROR [ 67%]
tests/test_logic/test_modules_logic.py::TestModulemdGenerator::test_api PASSED [ 67%]
tests/test_logic/test_modules_logic.py::TestModulemdGenerator::test_api ERROR [ 67%]
tests/test_logic/test_modules_logic.py::TestModulemdGenerator::test_filter PASSED [ 68%]
tests/test_logic/test_modules_logic.py::TestModulemdGenerator::test_filter ERROR [ 68%]
tests/test_logic/test_modules_logic.py::TestModulemdGenerator::test_profiles PASSED [ 68%]
tests/test_logic/test_modules_logic.py::TestModulemdGenerator::test_profiles ERROR [ 68%]
tests/test_logic/test_modules_logic.py::TestModulemdGenerator::test_components ERROR [ 68%]
tests/test_logic/test_modules_logic.py::TestModulemdGenerator::test_components ERROR [ 68%]
tests/test_logic/test_modules_logic.py::TestModulemdGenerator::test_components_different_chroots ERROR [ 68%]
tests/test_logic/test_modules_logic.py::TestModulemdGenerator::test_components_different_chroots ERROR [ 68%]
tests/test_logic/test_modules_logic.py::TestModulemdGenerator::test_generate PASSED [ 68%]
tests/test_logic/test_modules_logic.py::TestModulemdGenerator::test_generate ERROR [ 68%]
tests/test_logic/test_outdated_chroots_logic.py::TestOutdatedChrootsLogic::test_delete_status_outdated ERROR [ 69%]
tests/test_logic/test_outdated_chroots_logic.py::TestOutdatedChrootsLogic::test_delete_status_outdated ERROR [ 69%]
tests/test_logic/test_outdated_chroots_logic.py::TestOutdatedChrootsLogic::test_delete_status_unclicked ERROR [ 69%]
tests/test_logic/test_outdated_chroots_logic.py::TestOutdatedChrootsLogic::test_delete_status_unclicked ERROR [ 69%]
tests/test_logic/test_outdated_chroots_logic.py::TestOutdatedChrootsLogic::test_outdated_chroots_simple ERROR [ 69%]
tests/test_logic/test_outdated_chroots_logic.py::TestOutdatedChrootsLogic::test_outdated_chroots_simple ERROR [ 69%]
tests/test_logic/test_outdated_chroots_logic.py::TestOutdatedChrootsLogic::test_outdated_chroots_group ERROR [ 69%]
tests/test_logic/test_outdated_chroots_logic.py::TestOutdatedChrootsLogic::test_outdated_chroots_group ERROR [ 69%]
tests/test_logic/test_outdated_chroots_logic.py::TestOutdatedChrootsLogic::test_outdated_chroots_flash_not_immediately ERROR [ 70%]
tests/test_logic/test_outdated_chroots_logic.py::TestOutdatedChrootsLogic::test_outdated_chroots_flash_not_immediately ERROR [ 70%]
tests/test_logic/test_outdated_chroots_logic.py::TestOutdatedChrootsLogic::test_outdated_chroots_flash_not_expired ERROR [ 70%]
tests/test_logic/test_outdated_chroots_logic.py::TestOutdatedChrootsLogic::test_outdated_chroots_flash_not_expired ERROR [ 70%]
tests/test_logic/test_outdated_chroots_logic.py::TestOutdatedChrootsLogic::test_outdated_chroots_review_only_after_some_time ERROR [ 70%]
tests/test_logic/test_outdated_chroots_logic.py::TestOutdatedChrootsLogic::test_outdated_chroots_review_only_after_some_time ERROR [ 70%]
tests/test_logic/test_outdated_chroots_logic.py::TestOutdatedChrootsLogic::test_outdated_chroots_extend_or_expire ERROR [ 70%]
tests/test_logic/test_outdated_chroots_logic.py::TestOutdatedChrootsLogic::test_outdated_chroots_extend_or_expire ERROR [ 70%]
tests/test_logic/test_outdated_chroots_logic.py::TestOutdatedChrootsLogic::test_outdated_chroots_humanized ERROR [ 70%]
tests/test_logic/test_outdated_chroots_logic.py::TestOutdatedChrootsLogic::test_outdated_chroots_humanized ERROR [ 70%]
tests/test_logic/test_outdated_chroots_logic.py::TestOutdatedChrootsLogic::test_outdated_chroots_expired ERROR [ 71%]
tests/test_logic/test_outdated_chroots_logic.py::TestOutdatedChrootsLogic::test_outdated_chroots_expired ERROR [ 71%]
tests/test_logic/test_outdated_chroots_logic.py::TestOutdatedChrootsLogic::test_expired_chroot_detection ERROR [ 71%]
tests/test_logic/test_outdated_chroots_logic.py::TestOutdatedChrootsLogic::test_expired_chroot_detection ERROR [ 71%]
tests/test_logic/test_outdated_chroots_logic.py::TestOutdatedChrootsLogic::test_delete_outdated_unclicked ERROR [ 71%]
tests/test_logic/test_outdated_chroots_logic.py::TestOutdatedChrootsLogic::test_delete_outdated_unclicked ERROR [ 71%]
tests/test_logic/test_outdated_chroots_logic.py::TestOutdatedChrootsLogic::test_outdated_unclicked_repeat ERROR [ 71%]
tests/test_logic/test_outdated_chroots_logic.py::TestOutdatedChrootsLogic::test_outdated_unclicked_repeat ERROR [ 71%]
tests/test_logic/test_packages_logic.py::TestPackagesLogic::test_last_successful_build_chroots ERROR [ 71%]
tests/test_logic/test_packages_logic.py::TestPackagesLogic::test_last_successful_build_chroots ERROR [ 71%]
tests/test_logic/test_packages_logic.py::TestPackagesLogic::test_ref_matches_copr_pkgname[copr-cli-1-1alpha-copr-cli-True] PASSED [ 72%]
tests/test_logic/test_packages_logic.py::TestPackagesLogic::test_ref_matches_copr_pkgname[copr-cli-1-1alpha-copr-cli-True] ERROR [ 72%]
tests/test_logic/test_packages_logic.py::TestPackagesLogic::test_ref_matches_copr_pkgname[copr-cli-1-copr-cli-True] PASSED [ 72%]
tests/test_logic/test_packages_logic.py::TestPackagesLogic::test_ref_matches_copr_pkgname[copr-cli-1-copr-cli-True] ERROR [ 72%]
tests/test_logic/test_packages_logic.py::TestPackagesLogic::test_ref_matches_copr_pkgname[copr-cli-1-copr-False] PASSED [ 72%]
tests/test_logic/test_packages_logic.py::TestPackagesLogic::test_ref_matches_copr_pkgname[copr-cli-1-copr-False] ERROR [ 72%]
tests/test_logic/test_packages_logic.py::TestPackagesLogic::test_ref_matches_copr_pkgname[copr_cli-1.1-1-copr_cli-True] PASSED [ 72%]
tests/test_logic/test_packages_logic.py::TestPackagesLogic::test_ref_matches_copr_pkgname[copr_cli-1.1-1-copr_cli-True] ERROR [ 72%]
tests/test_logic/test_packages_logic.py::TestPackagesLogic::test_ref_matches_copr_pkgname[copr_cli-1.1-copr_cli-True] PASSED [ 72%]
tests/test_logic/test_packages_logic.py::TestPackagesLogic::test_ref_matches_copr_pkgname[copr_cli-1.1-copr_cli-True] ERROR [ 72%]
tests/test_logic/test_packages_logic.py::TestPackagesLogic::test_ref_matches_copr_pkgname[copr-frontend-a1-copr-False] PASSED [ 73%]
tests/test_logic/test_packages_logic.py::TestPackagesLogic::test_ref_matches_copr_pkgname[copr-frontend-a1-copr-False] ERROR [ 73%]
tests/test_logic/test_packages_logic.py::TestPackagesLogic::test_ref_matches_copr_pkgname[copr-frontend-a1-copr-frontend-True] PASSED [ 73%]
tests/test_logic/test_packages_logic.py::TestPackagesLogic::test_ref_matches_copr_pkgname[copr-frontend-a1-copr-frontend-True] ERROR [ 73%]
tests/test_logic/test_packages_logic.py::TestPackagesLogic::test_ref_matches_copr_pkgname[copr_frontend_a1-copr-frontend-True] PASSED [ 73%]
tests/test_logic/test_packages_logic.py::TestPackagesLogic::test_ref_matches_copr_pkgname[copr_frontend_a1-copr-frontend-True] ERROR [ 73%]
tests/test_logic/test_packages_logic.py::TestPackagesLogic::test_ref_matches_copr_pkgname[copr-frontend-a1-copr_frontend-True] PASSED [ 73%]
tests/test_logic/test_packages_logic.py::TestPackagesLogic::test_ref_matches_copr_pkgname[copr-frontend-a1-copr_frontend-True] ERROR [ 73%]
tests/test_logic/test_packages_logic.py::TestPackagesLogic::test_ref_matches_copr_pkgname[copr_frontend_a1-copr_frontend-True] PASSED [ 73%]
tests/test_logic/test_packages_logic.py::TestPackagesLogic::test_ref_matches_copr_pkgname[copr_frontend_a1-copr_frontend-True] ERROR [ 73%]
tests/test_logic/test_packages_logic.py::TestPackagesLogic::test_ref_matches_copr_pkgname[copr_frontend-a1-copr-frontend-False] PASSED [ 74%]
tests/test_logic/test_packages_logic.py::TestPackagesLogic::test_ref_matches_copr_pkgname[copr_frontend-a1-copr-frontend-False] ERROR [ 74%]
tests/test_logic/test_packages_logic.py::TestPackagesLogic::test_ref_matches_copr_pkgname[copr-1.1alpha-1-copr-True] PASSED [ 74%]
tests/test_logic/test_packages_logic.py::TestPackagesLogic::test_ref_matches_copr_pkgname[copr-1.1alpha-1-copr-True] ERROR [ 74%]
tests/test_logic/test_packages_logic.py::TestPackagesLogic::test_ref_matches_copr_pkgname[copr-1.1alpha-1beta-copr-True] PASSED [ 74%]
tests/test_logic/test_packages_logic.py::TestPackagesLogic::test_ref_matches_copr_pkgname[copr-1.1alpha-1beta-copr-True] ERROR [ 74%]
tests/test_logic/test_packages_logic.py::TestPackagesLogic::test_ref_matches_copr_pkgname[copr-1.1-1-copr-True] PASSED [ 74%]
tests/test_logic/test_packages_logic.py::TestPackagesLogic::test_ref_matches_copr_pkgname[copr-1.1-1-copr-True] ERROR [ 74%]
tests/test_logic/test_packages_logic.py::TestPackagesLogic::test_ref_matches_copr_pkgname[copr-1-copr-True] PASSED [ 75%]
tests/test_logic/test_packages_logic.py::TestPackagesLogic::test_ref_matches_copr_pkgname[copr-1-copr-True] ERROR [ 75%]
tests/test_logic/test_stat_logic.py::TestStatLogic::test_counter_basic PASSED [ 75%]
tests/test_logic/test_stat_logic.py::TestStatLogic::test_counter_basic ERROR [ 75%]
tests/test_logic/test_stat_logic.py::TestStatLogic::test_new_by_incr FAILED [ 75%]
tests/test_logic/test_stat_logic.py::TestStatLogic::test_new_by_incr ERROR [ 75%]
tests/test_logic/test_users_logic.py::TestUserDataDumper::test_user_information ERROR [ 75%]
tests/test_logic/test_users_logic.py::TestUserDataDumper::test_user_information ERROR [ 75%]
tests/test_logic/test_users_logic.py::TestUserDataDumper::test_projects ERROR [ 75%]
tests/test_logic/test_users_logic.py::TestUserDataDumper::test_projects ERROR [ 75%]
tests/test_logic/test_users_logic.py::TestUserDataDumper::test_builds ERROR [ 76%]
tests/test_logic/test_users_logic.py::TestUserDataDumper::test_builds ERROR [ 76%]
tests/test_logic/test_users_logic.py::TestUserDataDumper::test_data ERROR [ 76%]
tests/test_logic/test_users_logic.py::TestUserDataDumper::test_data ERROR [ 76%]
tests/test_logic/test_users_logic.py::TestUserDataDumper::test_dumps ERROR [ 76%]
tests/test_logic/test_users_logic.py::TestUserDataDumper::test_dumps ERROR [ 76%]
tests/test_logic/test_users_logic.py::TestUserDelete::test_delete_user_data ERROR [ 76%]
tests/test_logic/test_users_logic.py::TestUserDelete::test_delete_user_data ERROR [ 76%]
tests/test_logic/test_users_logic.py::TestUserDelete::test_delete_data_view ERROR [ 76%]
tests/test_logic/test_users_logic.py::TestUserDelete::test_delete_data_view ERROR [ 76%]
tests/test_views/test_misc.py::TestMisc::test_fed_raw_name PASSED        [ 77%]
tests/test_views/test_misc.py::TestMisc::test_fed_raw_name ERROR         [ 77%]
tests/test_views/test_misc.py::TestMisc::test_fed_raw_name_scheme PASSED [ 77%]
tests/test_views/test_misc.py::TestMisc::test_fed_raw_name_scheme ERROR  [ 77%]
tests/test_views/test_misc.py::TestMisc::test_fed_raw_name_without_oid_url PASSED [ 77%]
tests/test_views/test_misc.py::TestMisc::test_fed_raw_name_without_oid_url ERROR [ 77%]
tests/test_views/test_admin/test_admin_general.py::TestAdminLogin::test_nonadmin_cant_login ERROR [ 77%]
tests/test_views/test_admin/test_admin_general.py::TestAdminLogin::test_nonadmin_cant_login ERROR [ 77%]
tests/test_views/test_admin/test_admin_general.py::TestAdminLogin::test_admin_can_login ERROR [ 77%]
tests/test_views/test_admin/test_admin_general.py::TestAdminLogin::test_admin_can_login ERROR [ 77%]
tests/test_views/test_backend_ns/test_backend_general.py::TestGetBuildTask::test_module_name_empty ERROR [ 78%]
tests/test_views/test_backend_ns/test_backend_general.py::TestGetBuildTask::test_module_name_empty ERROR [ 78%]
tests/test_views/test_backend_ns/test_backend_general.py::TestGetBuildTask::test_module_name_enable ERROR [ 78%]
tests/test_views/test_backend_ns/test_backend_general.py::TestGetBuildTask::test_module_name_enable ERROR [ 78%]
tests/test_views/test_backend_ns/test_backend_general.py::TestGetBuildTask::test_module_name_disable ERROR [ 78%]
tests/test_views/test_backend_ns/test_backend_general.py::TestGetBuildTask::test_module_name_disable ERROR [ 78%]
tests/test_views/test_backend_ns/test_backend_general.py::TestGetBuildTask::test_module_name_many_modules ERROR [ 78%]
tests/test_views/test_backend_ns/test_backend_general.py::TestGetBuildTask::test_module_name_many_modules ERROR [ 78%]
tests/test_views/test_backend_ns/test_backend_general.py::TestGetBuildTask::test_module_name_modules_with_spaces ERROR [ 78%]
tests/test_views/test_backend_ns/test_backend_general.py::TestGetBuildTask::test_module_name_modules_with_spaces ERROR [ 78%]
tests/test_views/test_backend_ns/test_backend_general.py::TestWaitingBuilds::test_no_pending_builds FAILED [ 79%]
tests/test_views/test_backend_ns/test_backend_general.py::TestWaitingBuilds::test_no_pending_builds ERROR [ 79%]
tests/test_views/test_backend_ns/test_backend_general.py::TestWaitingBuilds::test_pending_build_only_lists_not_started_or_ended ERROR [ 79%]
tests/test_views/test_backend_ns/test_backend_general.py::TestWaitingBuilds::test_pending_build_only_lists_not_started_or_ended ERROR [ 79%]
tests/test_views/test_backend_ns/test_backend_general.py::TestWaitingBuilds::test_pending_bg_build ERROR [ 79%]
tests/test_views/test_backend_ns/test_backend_general.py::TestWaitingBuilds::test_pending_bg_build ERROR [ 79%]
tests/test_views/test_backend_ns/test_backend_general.py::TestWaitingBuilds::test_pending_blocked_builds ERROR [ 79%]
tests/test_views/test_backend_ns/test_backend_general.py::TestWaitingBuilds::test_pending_blocked_builds ERROR [ 79%]
tests/test_views/test_backend_ns/test_backend_general.py::TestWaitingBuilds::test_build_jobs_performance ERROR [ 80%]
tests/test_views/test_backend_ns/test_backend_general.py::TestWaitingBuilds::test_build_jobs_performance ERROR [ 80%]
tests/test_views/test_backend_ns/test_backend_general.py::TestUpdateBuilds::test_updating_requires_password ERROR [ 80%]
tests/test_views/test_backend_ns/test_backend_general.py::TestUpdateBuilds::test_updating_requires_password ERROR [ 80%]
tests/test_views/test_backend_ns/test_backend_general.py::TestUpdateBuilds::test_update_build_ended ERROR [ 80%]
tests/test_views/test_backend_ns/test_backend_general.py::TestUpdateBuilds::test_update_build_ended ERROR [ 80%]
tests/test_views/test_backend_ns/test_backend_general.py::TestUpdateBuilds::test_update_state_from_dict ERROR [ 80%]
tests/test_views/test_backend_ns/test_backend_general.py::TestUpdateBuilds::test_update_state_from_dict ERROR [ 80%]
tests/test_views/test_backend_ns/test_backend_general.py::TestUpdateBuilds::test_update_more_existent_and_non_existent_builds ERROR [ 80%]
tests/test_views/test_backend_ns/test_backend_general.py::TestUpdateBuilds::test_update_more_existent_and_non_existent_builds ERROR [ 80%]
tests/test_views/test_backend_ns/test_backend_general.py::TestUpdateBuilds::test_build_task_canceled_waiting_build ERROR [ 81%]
tests/test_views/test_backend_ns/test_backend_general.py::TestUpdateBuilds::test_build_task_canceled_waiting_build ERROR [ 81%]
tests/test_views/test_backend_ns/test_backend_general.py::TestUpdateBuilds::test_build_task_canceled_running_build ERROR [ 81%]
tests/test_views/test_backend_ns/test_backend_general.py::TestUpdateBuilds::test_build_task_canceled_running_build ERROR [ 81%]
tests/test_views/test_backend_ns/test_backend_general.py::TestUpdateBuilds::test_build_task_canceled_deleted_build ERROR [ 81%]
tests/test_views/test_backend_ns/test_backend_general.py::TestUpdateBuilds::test_build_task_canceled_deleted_build ERROR [ 81%]
tests/test_views/test_backend_ns/test_backend_general.py::TestWaitingActions::test_no_waiting_actions PASSED [ 81%]
tests/test_views/test_backend_ns/test_backend_general.py::TestWaitingActions::test_no_waiting_actions ERROR [ 81%]
tests/test_views/test_backend_ns/test_backend_general.py::TestWaitingActions::test_waiting_actions_only_lists_not_started_or_ended ERROR [ 81%]
tests/test_views/test_backend_ns/test_backend_general.py::TestWaitingActions::test_waiting_actions_only_lists_not_started_or_ended ERROR [ 81%]
tests/test_views/test_backend_ns/test_backend_general.py::TestWaitingActions::test_pending_actions_list ERROR [ 82%]
tests/test_views/test_backend_ns/test_backend_general.py::TestWaitingActions::test_pending_actions_list ERROR [ 82%]
tests/test_views/test_backend_ns/test_backend_general.py::TestWaitingActions::test_dont_send_pending_actions_whe_delete ERROR [ 82%]
tests/test_views/test_backend_ns/test_backend_general.py::TestWaitingActions::test_dont_send_pending_actions_whe_delete ERROR [ 82%]
tests/test_views/test_backend_ns/test_backend_general.py::TestWaitingActions::test_get_action_succeeded ERROR [ 82%]
tests/test_views/test_backend_ns/test_backend_general.py::TestWaitingActions::test_get_action_succeeded ERROR [ 82%]
tests/test_views/test_backend_ns/test_backend_general.py::TestUpdateActions::test_update_one_action ERROR [ 82%]
tests/test_views/test_backend_ns/test_backend_general.py::TestUpdateActions::test_update_one_action ERROR [ 82%]
tests/test_views/test_backend_ns/test_backend_general.py::TestUpdateActions::test_update_more_existent_and_non_existent_actions ERROR [ 82%]
tests/test_views/test_backend_ns/test_backend_general.py::TestUpdateActions::test_update_more_existent_and_non_existent_actions ERROR [ 82%]
tests/test_views/test_backend_ns/test_backend_general.py::TestImportingBuilds::test_bg_priority_in_queue ERROR [ 83%]
tests/test_views/test_backend_ns/test_backend_general.py::TestImportingBuilds::test_bg_priority_in_queue ERROR [ 83%]
tests/test_views/test_backend_ns/test_backend_general.py::TestImportingBuilds::test_importing_queue_multiple_bg ERROR [ 83%]
tests/test_views/test_backend_ns/test_backend_general.py::TestImportingBuilds::test_importing_queue_multiple_bg ERROR [ 83%]
tests/test_views/test_coprs_ns/test_coprs_builds.py::TestCoprShowBuilds::test_copr_show_builds ERROR [ 83%]
tests/test_views/test_coprs_ns/test_coprs_builds.py::TestCoprShowBuilds::test_copr_show_builds ERROR [ 83%]
tests/test_views/test_coprs_ns/test_coprs_builds.py::TestCoprAddBuild::test_copr_user_can_add_build ERROR [ 83%]
tests/test_views/test_coprs_ns/test_coprs_builds.py::TestCoprAddBuild::test_copr_user_can_add_build ERROR [ 83%]
tests/test_views/test_coprs_ns/test_coprs_builds.py::TestCoprAddBuild::test_copr_allowed_user_can_add_build ERROR [ 83%]
tests/test_views/test_coprs_ns/test_coprs_builds.py::TestCoprAddBuild::test_copr_allowed_user_can_add_build ERROR [ 83%]
tests/test_views/test_coprs_ns/test_coprs_builds.py::TestCoprAddBuild::test_copr_not_yet_allowed_user_cant_add_build ERROR [ 84%]
tests/test_views/test_coprs_ns/test_coprs_builds.py::TestCoprAddBuild::test_copr_not_yet_allowed_user_cant_add_build ERROR [ 84%]
tests/test_views/test_coprs_ns/test_coprs_builds.py::TestCoprAddBuild::test_copr_user_cant_add_build_to_admin_project ERROR [ 84%]
tests/test_views/test_coprs_ns/test_coprs_builds.py::TestCoprAddBuild::test_copr_user_cant_add_build_to_admin_project ERROR [ 84%]
tests/test_views/test_coprs_ns/test_coprs_builds.py::TestCoprAddBuild::test_copr_user_without_permission_cant_add_build ERROR [ 84%]
tests/test_views/test_coprs_ns/test_coprs_builds.py::TestCoprAddBuild::test_copr_user_without_permission_cant_add_build ERROR [ 84%]
tests/test_views/test_coprs_ns/test_coprs_builds.py::TestCoprAddBuild::test_copr_default_options ERROR [ 84%]
tests/test_views/test_coprs_ns/test_coprs_builds.py::TestCoprAddBuild::test_copr_default_options ERROR [ 84%]
tests/test_views/test_coprs_ns/test_coprs_builds.py::TestCoprCancelBuild::test_copr_build_submitter_can_cancel_build ERROR [ 85%]
tests/test_views/test_coprs_ns/test_coprs_builds.py::TestCoprCancelBuild::test_copr_build_submitter_can_cancel_build ERROR [ 85%]
tests/test_views/test_coprs_ns/test_coprs_builds.py::TestCoprCancelBuild::test_copr_build_non_submitter_cannot_cancel_build ERROR [ 85%]
tests/test_views/test_coprs_ns/test_coprs_builds.py::TestCoprCancelBuild::test_copr_build_non_submitter_cannot_cancel_build ERROR [ 85%]
tests/test_views/test_coprs_ns/test_coprs_builds.py::TestCoprDeleteBuild::test_copr_build_submitter_can_delete_build_old ERROR [ 85%]
tests/test_views/test_coprs_ns/test_coprs_builds.py::TestCoprDeleteBuild::test_copr_build_submitter_can_delete_build_old ERROR [ 85%]
tests/test_views/test_coprs_ns/test_coprs_builds.py::TestCoprDeleteBuild::test_copr_build_submitter_can_delete_build FAILED [ 85%]
tests/test_views/test_coprs_ns/test_coprs_builds.py::TestCoprDeleteBuild::test_copr_build_submitter_can_delete_build ERROR [ 85%]
tests/test_views/test_coprs_ns/test_coprs_builds.py::TestCoprDeleteBuild::test_copr_build_non_submitter_cannot_delete_build ERROR [ 85%]
tests/test_views/test_coprs_ns/test_coprs_builds.py::TestCoprDeleteBuild::test_copr_build_non_submitter_cannot_delete_build ERROR [ 85%]
tests/test_views/test_coprs_ns/test_coprs_builds.py::TestCoprDeleteBuild::test_copr_delete_multiple_builds_sends_single_action FAILED [ 86%]
tests/test_views/test_coprs_ns/test_coprs_builds.py::TestCoprDeleteBuild::test_copr_delete_multiple_builds_sends_single_action ERROR [ 86%]
tests/test_views/test_coprs_ns/test_coprs_builds.py::TestCoprDeleteBuild::test_copr_delete_package_sends_single_action FAILED [ 86%]
tests/test_views/test_coprs_ns/test_coprs_builds.py::TestCoprDeleteBuild::test_copr_delete_package_sends_single_action ERROR [ 86%]
tests/test_views/test_coprs_ns/test_coprs_builds.py::TestCoprRepeatBuild::test_copr_build_basic_build_repeat ERROR [ 86%]
tests/test_views/test_coprs_ns/test_coprs_builds.py::TestCoprRepeatBuild::test_copr_build_basic_build_repeat ERROR [ 86%]
tests/test_views/test_coprs_ns/test_coprs_builds.py::TestCoprRepeatBuild::test_copr_build_submitter_can_repeat_build ERROR [ 86%]
tests/test_views/test_coprs_ns/test_coprs_builds.py::TestCoprRepeatBuild::test_copr_build_submitter_can_repeat_build ERROR [ 86%]
tests/test_views/test_coprs_ns/test_coprs_builds.py::TestCoprRepeatBuild::test_copr_build_non_submitter_cannot_repeat_build ERROR [ 86%]
tests/test_views/test_coprs_ns/test_coprs_builds.py::TestCoprRepeatBuild::test_copr_build_non_submitter_cannot_repeat_build ERROR [ 86%]
tests/test_views/test_coprs_ns/test_coprs_builds.py::TestCoprRepeatBuild::test_rebuild_srpm_upload_generates_chroots ERROR [ 87%]
tests/test_views/test_coprs_ns/test_coprs_builds.py::TestCoprRepeatBuild::test_rebuild_srpm_upload_generates_chroots ERROR [ 87%]
tests/test_views/test_coprs_ns/test_coprs_builds.py::TestCoprRepeatBuild::test_copr_build_package_urls ERROR [ 87%]
tests/test_views/test_coprs_ns/test_coprs_builds.py::TestCoprRepeatBuild::test_copr_build_package_urls ERROR [ 87%]
tests/test_views/test_coprs_ns/test_coprs_builds.py::TestCoprRepeatBuild::test_copr_repeat_build_available_chroots ERROR [ 87%]
tests/test_views/test_coprs_ns/test_coprs_builds.py::TestCoprRepeatBuild::test_copr_repeat_build_available_chroots ERROR [ 87%]
tests/test_views/test_coprs_ns/test_coprs_chroots.py::TestCoprsChroots::test_edit_own_copr_chroot ERROR [ 87%]
tests/test_views/test_coprs_ns/test_coprs_chroots.py::TestCoprsChroots::test_edit_own_copr_chroot ERROR [ 87%]
tests/test_views/test_coprs_ns/test_coprs_chroots.py::TestCoprsChroots::test_edit_someone_copr_chroot ERROR [ 87%]
tests/test_views/test_coprs_ns/test_coprs_chroots.py::TestCoprsChroots::test_edit_someone_copr_chroot ERROR [ 87%]
tests/test_views/test_coprs_ns/test_coprs_chroots.py::TestCoprsChroots::test_edit_someone_copr_chroot_being_admin ERROR [ 88%]
tests/test_views/test_coprs_ns/test_coprs_chroots.py::TestCoprsChroots::test_edit_someone_copr_chroot_being_admin ERROR [ 88%]
tests/test_views/test_coprs_ns/test_coprs_general.py::TestMonitor::test_regression_monitor_no_copr_returned FAILED [ 88%]
tests/test_views/test_coprs_ns/test_coprs_general.py::TestMonitor::test_regression_monitor_no_copr_returned ERROR [ 88%]
tests/test_views/test_coprs_ns/test_coprs_general.py::TestCoprsShow::test_show_no_entries FAILED [ 88%]
tests/test_views/test_coprs_ns/test_coprs_general.py::TestCoprsShow::test_show_no_entries ERROR [ 88%]
tests/test_views/test_coprs_ns/test_coprs_general.py::TestCoprsShow::test_show_more_entries ERROR [ 88%]
tests/test_views/test_coprs_ns/test_coprs_general.py::TestCoprsShow::test_show_more_entries ERROR [ 88%]
tests/test_views/test_coprs_ns/test_coprs_general.py::TestCoprsOwned::test_owned_none ERROR [ 88%]
tests/test_views/test_coprs_ns/test_coprs_general.py::TestCoprsOwned::test_owned_none ERROR [ 88%]
tests/test_views/test_coprs_ns/test_coprs_general.py::TestCoprsOwned::test_owned_one ERROR [ 89%]
tests/test_views/test_coprs_ns/test_coprs_general.py::TestCoprsOwned::test_owned_one ERROR [ 89%]
tests/test_views/test_coprs_ns/test_coprs_general.py::TestCoprNew::test_copr_new_normal ERROR [ 89%]
tests/test_views/test_coprs_ns/test_coprs_general.py::TestCoprNew::test_copr_new_normal ERROR [ 89%]
tests/test_views/test_coprs_ns/test_coprs_general.py::TestCoprNew::test_copr_new_ACR_OFF ERROR [ 89%]
tests/test_views/test_coprs_ns/test_coprs_general.py::TestCoprNew::test_copr_new_ACR_OFF ERROR [ 89%]
tests/test_views/test_coprs_ns/test_coprs_general.py::TestCoprNew::test_copr_new_exists_for_another_user ERROR [ 89%]
tests/test_views/test_coprs_ns/test_coprs_general.py::TestCoprNew::test_copr_new_exists_for_another_user ERROR [ 89%]
tests/test_views/test_coprs_ns/test_coprs_general.py::TestCoprNew::test_copr_new_exists_for_this_user ERROR [ 90%]
tests/test_views/test_coprs_ns/test_coprs_general.py::TestCoprNew::test_copr_new_exists_for_this_user ERROR [ 90%]
tests/test_views/test_coprs_ns/test_coprs_general.py::TestCoprNew::test_copr_new_with_initial_pkgs ERROR [ 90%]
tests/test_views/test_coprs_ns/test_coprs_general.py::TestCoprNew::test_copr_new_with_initial_pkgs ERROR [ 90%]
tests/test_views/test_coprs_ns/test_coprs_general.py::TestCoprNew::test_copr_new_with_initial_pkgs_disabled_net ERROR [ 90%]
tests/test_views/test_coprs_ns/test_coprs_general.py::TestCoprNew::test_copr_new_with_initial_pkgs_disabled_net ERROR [ 90%]
tests/test_views/test_coprs_ns/test_coprs_general.py::TestCoprNew::test_copr_new_is_allowed_even_if_deleted_has_same_name ERROR [ 90%]
tests/test_views/test_coprs_ns/test_coprs_general.py::TestCoprNew::test_copr_new_is_allowed_even_if_deleted_has_same_name ERROR [ 90%]
tests/test_views/test_coprs_ns/test_coprs_general.py::TestCoprNew::test_copr_new_contains_isolation ERROR [ 90%]
tests/test_views/test_coprs_ns/test_coprs_general.py::TestCoprNew::test_copr_new_contains_isolation ERROR [ 90%]
tests/test_views/test_coprs_ns/test_coprs_general.py::TestCoprDetail::test_copr_detail_not_found FAILED [ 91%]
tests/test_views/test_coprs_ns/test_coprs_general.py::TestCoprDetail::test_copr_detail_not_found ERROR [ 91%]
tests/test_views/test_coprs_ns/test_coprs_general.py::TestCoprDetail::test_copr_detail_normal ERROR [ 91%]
tests/test_views/test_coprs_ns/test_coprs_general.py::TestCoprDetail::test_copr_detail_normal ERROR [ 91%]
tests/test_views/test_coprs_ns/test_coprs_general.py::TestCoprDetail::test_copr_detail_contains_builds ERROR [ 91%]
tests/test_views/test_coprs_ns/test_coprs_general.py::TestCoprDetail::test_copr_detail_contains_builds ERROR [ 91%]
tests/test_views/test_coprs_ns/test_coprs_general.py::TestCoprDetail::test_copr_detail_anonymous_doesnt_contain_permissions_table_when_no_permissions ERROR [ 91%]
tests/test_views/test_coprs_ns/test_coprs_general.py::TestCoprDetail::test_copr_detail_anonymous_doesnt_contain_permissions_table_when_no_permissions ERROR [ 91%]
tests/test_views/test_coprs_ns/test_coprs_general.py::TestCoprDetail::test_copr_detail_contains_permissions_table ERROR [ 91%]
tests/test_views/test_coprs_ns/test_coprs_general.py::TestCoprDetail::test_copr_detail_contains_permissions_table ERROR [ 91%]
tests/test_views/test_coprs_ns/test_coprs_general.py::TestCoprDetail::test_detail_has_correct_permissions_form ERROR [ 92%]
tests/test_views/test_coprs_ns/test_coprs_general.py::TestCoprDetail::test_detail_has_correct_permissions_form ERROR [ 92%]
tests/test_views/test_coprs_ns/test_coprs_general.py::TestCoprDetail::test_copr_detail_doesnt_show_cancel_build_for_anonymous ERROR [ 92%]
tests/test_views/test_coprs_ns/test_coprs_general.py::TestCoprDetail::test_copr_detail_doesnt_show_cancel_build_for_anonymous ERROR [ 92%]
tests/test_views/test_coprs_ns/test_coprs_general.py::TestCoprDetail::test_copr_detail_doesnt_allow_non_submitter_to_cancel_build ERROR [ 92%]
tests/test_views/test_coprs_ns/test_coprs_general.py::TestCoprDetail::test_copr_detail_doesnt_allow_non_submitter_to_cancel_build ERROR [ 92%]
tests/test_views/test_coprs_ns/test_coprs_general.py::TestCoprDetail::test_copr_detail_allows_submitter_to_cancel_build ERROR [ 92%]
tests/test_views/test_coprs_ns/test_coprs_general.py::TestCoprDetail::test_copr_detail_allows_submitter_to_cancel_build ERROR [ 92%]
tests/test_views/test_coprs_ns/test_coprs_general.py::TestCoprDetail::test_codeblock_html_in_project_description FAILED [ 92%]
tests/test_views/test_coprs_ns/test_coprs_general.py::TestCoprDetail::test_codeblock_html_in_project_description ERROR [ 92%]
tests/test_views/test_coprs_ns/test_coprs_general.py::TestCoprEdit::test_edit_prefills_id ERROR [ 93%]
tests/test_views/test_coprs_ns/test_coprs_general.py::TestCoprEdit::test_edit_prefills_id ERROR [ 93%]
tests/test_views/test_coprs_ns/test_coprs_general.py::TestCoprUpdate::test_update_no_changes ERROR [ 93%]
tests/test_views/test_coprs_ns/test_coprs_general.py::TestCoprUpdate::test_update_no_changes ERROR [ 93%]
tests/test_views/test_coprs_ns/test_coprs_general.py::TestCoprUpdate::test_copr_admin_can_update ERROR [ 93%]
tests/test_views/test_coprs_ns/test_coprs_general.py::TestCoprUpdate::test_copr_admin_can_update ERROR [ 93%]
tests/test_views/test_coprs_ns/test_coprs_general.py::TestCoprUpdate::test_update_multiple_chroots ERROR [ 93%]
tests/test_views/test_coprs_ns/test_coprs_general.py::TestCoprUpdate::test_update_multiple_chroots ERROR [ 93%]
tests/test_views/test_coprs_ns/test_coprs_general.py::TestCoprUpdate::test_update_deletes_multiple_chroots ERROR [ 93%]
tests/test_views/test_coprs_ns/test_coprs_general.py::TestCoprUpdate::test_update_deletes_multiple_chroots ERROR [ 93%]
tests/test_views/test_coprs_ns/test_coprs_general.py::TestCoprUpdate::test_changed_ACR_produces_action ERROR [ 94%]
tests/test_views/test_coprs_ns/test_coprs_general.py::TestCoprUpdate::test_changed_ACR_produces_action ERROR [ 94%]
tests/test_views/test_coprs_ns/test_coprs_general.py::TestCoprApplyForPermissions::test_apply ERROR [ 94%]
tests/test_views/test_coprs_ns/test_coprs_general.py::TestCoprApplyForPermissions::test_apply ERROR [ 94%]
tests/test_views/test_coprs_ns/test_coprs_general.py::TestCoprApplyForPermissions::test_apply_doesnt_lower_other_values_from_admin_to_request ERROR [ 94%]
tests/test_views/test_coprs_ns/test_coprs_general.py::TestCoprApplyForPermissions::test_apply_doesnt_lower_other_values_from_admin_to_request ERROR [ 94%]
tests/test_views/test_coprs_ns/test_coprs_general.py::TestCoprUpdatePermissions::test_cancel_permission ERROR [ 94%]
tests/test_views/test_coprs_ns/test_coprs_general.py::TestCoprUpdatePermissions::test_cancel_permission ERROR [ 94%]
tests/test_views/test_coprs_ns/test_coprs_general.py::TestCoprUpdatePermissions::test_update_more_permissions ERROR [ 95%]
tests/test_views/test_coprs_ns/test_coprs_general.py::TestCoprUpdatePermissions::test_update_more_permissions ERROR [ 95%]
tests/test_views/test_coprs_ns/test_coprs_general.py::TestCoprUpdatePermissions::test_copr_admin_can_update_permissions ERROR [ 95%]
tests/test_views/test_coprs_ns/test_coprs_general.py::TestCoprUpdatePermissions::test_copr_admin_can_update_permissions ERROR [ 95%]
tests/test_views/test_coprs_ns/test_coprs_general.py::TestCoprUpdatePermissions::test_copr_admin_can_give_up_his_permissions ERROR [ 95%]
tests/test_views/test_coprs_ns/test_coprs_general.py::TestCoprUpdatePermissions::test_copr_admin_can_give_up_his_permissions ERROR [ 95%]
tests/test_views/test_coprs_ns/test_coprs_general.py::TestCoprDelete::test_delete ERROR [ 95%]
tests/test_views/test_coprs_ns/test_coprs_general.py::TestCoprDelete::test_delete ERROR [ 95%]
tests/test_views/test_coprs_ns/test_coprs_general.py::TestCoprDelete::test_copr_delete_does_not_delete_if_verify_filled_wrongly ERROR [ 95%]
tests/test_views/test_coprs_ns/test_coprs_general.py::TestCoprDelete::test_copr_delete_does_not_delete_if_verify_filled_wrongly ERROR [ 95%]
tests/test_views/test_coprs_ns/test_coprs_general.py::TestCoprDelete::test_non_user_cant_delete ERROR [ 96%]
tests/test_views/test_coprs_ns/test_coprs_general.py::TestCoprDelete::test_non_user_cant_delete ERROR [ 96%]
tests/test_views/test_coprs_ns/test_coprs_general.py::TestCoprRepoGeneration::test_fail_on_nonexistent_copr PASSED [ 96%]
tests/test_views/test_coprs_ns/test_coprs_general.py::TestCoprRepoGeneration::test_fail_on_nonexistent_copr ERROR [ 96%]
tests/test_views/test_coprs_ns/test_coprs_general.py::TestCoprRepoGeneration::test_works_on_older_builds ERROR [ 96%]
tests/test_views/test_coprs_ns/test_coprs_general.py::TestCoprRepoGeneration::test_works_on_older_builds ERROR [ 96%]
tests/test_views/test_coprs_ns/test_coprs_general.py::TestCoprRepoGeneration::test_repofile_multilib ERROR [ 96%]
tests/test_views/test_coprs_ns/test_coprs_general.py::TestCoprRepoGeneration::test_repofile_multilib ERROR [ 96%]
tests/test_views/test_coprs_ns/test_coprs_general.py::TestCoprRepoGeneration::test_repofile_copr_runtime_deps FAILED [ 96%]
tests/test_views/test_coprs_ns/test_coprs_general.py::TestCoprRepoGeneration::test_repofile_copr_runtime_deps ERROR [ 96%]
tests/test_views/test_coprs_ns/test_coprs_general.py::TestCoprRepoGeneration::test_repofile_group_copr_runtime_deps FAILED [ 97%]
tests/test_views/test_coprs_ns/test_coprs_general.py::TestCoprRepoGeneration::test_repofile_group_copr_runtime_deps ERROR [ 97%]
tests/test_views/test_coprs_ns/test_coprs_general.py::TestCoprRepoGeneration::test_repofile_transitive_runtime_deps FAILED [ 97%]
tests/test_views/test_coprs_ns/test_coprs_general.py::TestCoprRepoGeneration::test_repofile_transitive_runtime_deps ERROR [ 97%]
tests/test_views/test_coprs_ns/test_coprs_general.py::TestSearch::test_search_basic ERROR [ 97%]
tests/test_views/test_coprs_ns/test_coprs_general.py::TestSearch::test_search_basic ERROR [ 97%]
tests/test_views/test_coprs_ns/test_coprs_general.py::TestSearch::test_search_by_attributes ERROR [ 97%]
tests/test_views/test_coprs_ns/test_coprs_general.py::TestSearch::test_search_by_attributes ERROR [ 97%]
tests/test_views/test_coprs_ns/test_coprs_general.py::TestRepo::test_repo_renders_http ERROR [ 97%]
tests/test_views/test_coprs_ns/test_coprs_general.py::TestRepo::test_repo_renders_http ERROR [ 97%]
tests/test_views/test_coprs_ns/test_coprs_general.py::TestRepo::test_chroot_alias ERROR [ 98%]
tests/test_views/test_coprs_ns/test_coprs_general.py::TestRepo::test_chroot_alias ERROR [ 98%]
tests/test_views/test_coprs_ns/test_coprs_general.py::TestCoprActionsGeneration::test_createrepo_priority ERROR [ 98%]
tests/test_views/test_coprs_ns/test_coprs_general.py::TestCoprActionsGeneration::test_createrepo_priority ERROR [ 98%]
tests/test_views/test_coprs_ns/test_coprs_general.py::TestCoprActionsGeneration::test_createrepo_on_reenable ERROR [ 98%]
tests/test_views/test_coprs_ns/test_coprs_general.py::TestCoprActionsGeneration::test_createrepo_on_reenable ERROR [ 98%]
tests/test_views/test_coprs_ns/test_coprs_general.py::TestCoprActionsGeneration::test_fedora_review_project ERROR [ 98%]
tests/test_views/test_coprs_ns/test_coprs_general.py::TestCoprActionsGeneration::test_fedora_review_project ERROR [ 98%]
tests/test_views/test_coprs_ns/test_method_distgit.py::TestDistGitMethod::test_copr_user_can_add_distgit_build ERROR [ 98%]
tests/test_views/test_coprs_ns/test_method_distgit.py::TestDistGitMethod::test_copr_user_can_add_distgit_build ERROR [ 98%]
tests/test_views/test_coprs_ns/test_method_distgit.py::TestDistGitMethod::test_copr_user_can_add_distgit_package ERROR [ 99%]
tests/test_views/test_coprs_ns/test_method_distgit.py::TestDistGitMethod::test_copr_user_can_add_distgit_package ERROR [ 99%]
tests/test_views/test_groups_ns/test_groups_general.py::TestGroups::test_group_add ERROR [ 99%]
tests/test_views/test_groups_ns/test_groups_general.py::TestGroups::test_group_add ERROR [ 99%]
tests/test_views/test_groups_ns/test_groups_general.py::TestGroups::test_group_add_twice ERROR [ 99%]
tests/test_views/test_groups_ns/test_groups_general.py::TestGroups::test_group_add_twice ERROR [ 99%]
tests/test_views/test_groups_ns/test_groups_general.py::TestGroups::test_group_add_alias_with_space ERROR [ 99%]
tests/test_views/test_groups_ns/test_groups_general.py::TestGroups::test_group_add_alias_with_space ERROR [ 99%]
tests/test_views/test_groups_ns/test_groups_general.py::TestGroups::test_group_add_not_in_fas_group ERROR [100%]
tests/test_views/test_groups_ns/test_groups_general.py::TestGroups::test_group_add_not_in_fas_group ERROR [100%]
==================================== ERRORS ====================================
__________________ ERROR at teardown of TestAnitya.test_pypi ___________________
self = <tests.test_anitya.TestAnitya object at 0x7fff90fe8830>
method = <bound method TestAnitya.test_pypi of <tests.test_anitya.TestAnitya object at 0x7fff90fe8830>>
    def teardown_method(self, method):
        # delete just data, not the tables
>       self.db.session.rollback()
tests/coprs_test_case.py:80: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:1796: in rollback
    return self._proxied.rollback()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1934: in rollback
    self._transaction.rollback(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:103: in _go
    self._raise_for_prerequisite_state(fn.__name__, current_state)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.orm.session.SessionTransaction object at 0x7fff902bced0>
operation_name = 'rollback', state = <SessionTransactionState.COMMITTED: 3>
    def _raise_for_prerequisite_state(
        self, operation_name: str, state: _StateChangeState
    ) -> NoReturn:
        if state is SessionTransactionState.DEACTIVE:
            if self._rollback_exception:
                raise sa_exc.PendingRollbackError(
                    "This Session's transaction has been rolled back "
                    "due to a previous exception during flush."
                    " To begin a new transaction with this Session, "
                    "first issue Session.rollback()."
                    f" Original exception was: {self._rollback_exception}",
                    code="7s2a",
                )
            else:
                raise sa_exc.InvalidRequestError(
                    "This session is in 'inactive' state, due to the "
                    "SQL transaction being rolled back; no further SQL "
                    "can be emitted within this transaction."
                )
        elif state is SessionTransactionState.CLOSED:
            raise sa_exc.ResourceClosedError("This transaction is closed")
        elif state is SessionTransactionState.PROVISIONING_CONNECTION:
            raise sa_exc.InvalidRequestError(
                "This session is provisioning a new connection; concurrent "
                "operations are not permitted",
                code="isce",
            )
        else:
>           raise sa_exc.InvalidRequestError(
                f"This session is in '{state.name.lower()}' state; no "
                "further SQL can be emitted within this transaction."
            )
E           sqlalchemy.exc.InvalidRequestError: This session is in 'committed' state; no further SQL can be emitted within this transaction.
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:951: InvalidRequestError
------------------------------ Captured log call -------------------------------
ERROR    coprs:error_handlers.py:102 Admin-only exception
Request: POST http://localhost.localdomain/api_3/project/add/user1
User: user1
Traceback (most recent call last):
  File "/usr/lib/python3.12/site-packages/flask/app.py", line 870, in full_dispatch_request
    rv = self.dispatch_request()
         ^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.12/site-packages/flask/app.py", line 855, in dispatch_request
    return self.ensure_sync(self.view_functions[rule.endpoint])(**view_args)  # type: ignore[no-any-return]
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.12/site-packages/flask_restx/api.py", line 402, in wrapper
    resp = resource(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.12/site-packages/flask/views.py", line 110, in view
    return current_app.ensure_sync(self.dispatch_request)(**kwargs)  # type: ignore[no-any-return]
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.12/site-packages/flask_restx/resource.py", line 41, in dispatch_request
    resp = meth(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^
  File "/builddir/build/BUILD/copr-frontend-1.204/coprs_frontend/coprs/views/misc.py", line 340, in check_if_api_login_is_required
    return endpoint_method(self, *args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/builddir/build/BUILD/copr-frontend-1.204/coprs_frontend/coprs/views/apiv3_ns/__init__.py", line 418, in convert_query_parameters_of_endpoint_method
    return endpoint_method(self, *args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.12/site-packages/flask_restx/marshalling.py", line 244, in wrapper
    resp = f(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^
  File "/builddir/build/BUILD/copr-frontend-1.204/coprs_frontend/coprs/views/apiv3_ns/apiv3_projects.py", line 266, in post
    db.session.commit()
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py", line 597, in commit
    return self._proxied.commit()
           ^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py", line 1972, in commit
    trans.commit(_to_root=True)
  File "<string>", line 2, in commit
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py", line 139, in _go
    ret_value = fn(self, *arg, **kw)
                ^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py", line 1267, in commit
    self.session.dispatch.after_commit(self.session)
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/event/attr.py", line 378, in __call__
    fn(*args, **kw)
  File "/usr/lib/python3.12/site-packages/flask_sqlalchemy/track_modifications.py", line 83, in _after_commit
    models_committed.send(app, changes=changes)
  File "/usr/lib/python3.12/site-packages/blinker/base.py", line 307, in send
    result = receiver(sender, **kwargs)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/builddir/build/BUILD/copr-frontend-1.204/coprs_frontend/coprs/whoosheers.py", line 108, in on_commit
    db.engine.execute(
    ^^^^^^^^^^^^^^^^^
AttributeError: 'Engine' object has no attribute 'execute'
ERROR    coprs:error_handlers.py:42 Response error: 500 Request wasn't successful, there is probably a bug in the Copr code.
ERROR    coprs:app.py:828 Exception on /api_3/project/add/user1 [POST]
Traceback (most recent call last):
  File "/usr/lib/python3.12/site-packages/flask/app.py", line 870, in full_dispatch_request
    rv = self.dispatch_request()
         ^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.12/site-packages/flask/app.py", line 855, in dispatch_request
    return self.ensure_sync(self.view_functions[rule.endpoint])(**view_args)  # type: ignore[no-any-return]
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.12/site-packages/flask_restx/api.py", line 402, in wrapper
    resp = resource(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.12/site-packages/flask/views.py", line 110, in view
    return current_app.ensure_sync(self.dispatch_request)(**kwargs)  # type: ignore[no-any-return]
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.12/site-packages/flask_restx/resource.py", line 41, in dispatch_request
    resp = meth(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^
  File "/builddir/build/BUILD/copr-frontend-1.204/coprs_frontend/coprs/views/misc.py", line 340, in check_if_api_login_is_required
    return endpoint_method(self, *args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/builddir/build/BUILD/copr-frontend-1.204/coprs_frontend/coprs/views/apiv3_ns/__init__.py", line 418, in convert_query_parameters_of_endpoint_method
    return endpoint_method(self, *args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.12/site-packages/flask_restx/marshalling.py", line 244, in wrapper
    resp = f(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^
  File "/builddir/build/BUILD/copr-frontend-1.204/coprs_frontend/coprs/views/apiv3_ns/apiv3_projects.py", line 266, in post
    db.session.commit()
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py", line 597, in commit
    return self._proxied.commit()
           ^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py", line 1972, in commit
    trans.commit(_to_root=True)
  File "<string>", line 2, in commit
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py", line 139, in _go
    ret_value = fn(self, *arg, **kw)
                ^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py", line 1267, in commit
    self.session.dispatch.after_commit(self.session)
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/event/attr.py", line 378, in __call__
    fn(*args, **kw)
  File "/usr/lib/python3.12/site-packages/flask_sqlalchemy/track_modifications.py", line 83, in _after_commit
    models_committed.send(app, changes=changes)
  File "/usr/lib/python3.12/site-packages/blinker/base.py", line 307, in send
    result = receiver(sender, **kwargs)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/builddir/build/BUILD/copr-frontend-1.204/coprs_frontend/coprs/whoosheers.py", line 108, in on_commit
    db.engine.execute(
    ^^^^^^^^^^^^^^^^^
AttributeError: 'Engine' object has no attribute 'execute'
___________ ERROR at teardown of TestGroupAuth.test_group_names_ldap ___________
self = <tests.test_auth.TestGroupAuth object at 0x7fff90d88c20>
method = <bound method TestGroupAuth.test_group_names_ldap of <tests.test_auth.TestGroupAuth object at 0x7fff90d88c20>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
------------------------------ Captured log call -------------------------------
INFO     coprs:auth.py:113 groups add: ['group1', 'group2', 'another-group', 'another-group-2']
_______ ERROR at setup of TestComps.test_edit_project_chroot_comps[api] ________
self = <sqlalchemy.engine.base.Connection object at 0x7fff9065d1f0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff9065c680>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff90310da0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff9059e8c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff9065c680>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
The above exception was the direct cause of the following exception:
self = <tests.test_comps.TestComps object at 0x7fff90d89940>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff9059e8c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff9065c680>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
E       [SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
E       [parameters: [('f18',), ('fedora-17',), ('master',)]]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
______ ERROR at teardown of TestComps.test_edit_project_chroot_comps[api] ______
self = <tests.test_comps.TestComps object at 0x7fff90d89940>
method = <bound method TestComps.test_edit_project_chroot_comps of <tests.test_comps.TestComps object at 0x7fff90d89940>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
______ ERROR at setup of TestComps.test_edit_project_chroot_comps[webui] _______
self = <sqlalchemy.engine.base.Connection object at 0x7fff904f8470>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff904f84d0>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff90310da0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8f3663c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff904f84d0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
The above exception was the direct cause of the following exception:
self = <tests.test_comps.TestComps object at 0x7fff90d89c10>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8f3663c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff904f84d0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
E       [SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
E       [parameters: [('f18',), ('fedora-17',), ('master',)]]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
_____ ERROR at teardown of TestComps.test_edit_project_chroot_comps[webui] _____
self = <tests.test_comps.TestComps object at 0x7fff90d89c10>
method = <bound method TestComps.test_edit_project_chroot_comps of <tests.test_comps.TestComps object at 0x7fff90d89c10>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
_ ERROR at setup of TestConfigOverrides.test_valid_configuration_cases[case0-api] _
self = <sqlalchemy.engine.base.Connection object at 0x7fff8f7a43e0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8f7a4440>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff90310da0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8f8f8340>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8f7a4440>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
The above exception was the direct cause of the following exception:
self = <tests.test_config_overrides.TestConfigOverrides object at 0x7fff90d8a540>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8f8f8340>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8f7a4440>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
E       [SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
E       [parameters: [('f18',), ('fedora-17',), ('master',)]]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
_ ERROR at teardown of TestConfigOverrides.test_valid_configuration_cases[case0-api] _
self = <tests.test_config_overrides.TestConfigOverrides object at 0x7fff90d8a540>
method = <bound method TestConfigOverrides.test_valid_configuration_cases of <tests.test_config_overrides.TestConfigOverrides object at 0x7fff90d8a540>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
_ ERROR at setup of TestConfigOverrides.test_valid_configuration_cases[case0-webui] _
self = <sqlalchemy.engine.base.Connection object at 0x7fff8f7a7050>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8f7a6d20>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff90310da0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8fb179c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8f7a6d20>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
The above exception was the direct cause of the following exception:
self = <tests.test_config_overrides.TestConfigOverrides object at 0x7fff90d8a7b0>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8fb179c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8f7a6d20>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
E       [SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
E       [parameters: [('f18',), ('fedora-17',), ('master',)]]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
_ ERROR at teardown of TestConfigOverrides.test_valid_configuration_cases[case0-webui] _
self = <tests.test_config_overrides.TestConfigOverrides object at 0x7fff90d8a7b0>
method = <bound method TestConfigOverrides.test_valid_configuration_cases of <tests.test_config_overrides.TestConfigOverrides object at 0x7fff90d8a7b0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
_ ERROR at setup of TestConfigOverrides.test_valid_configuration_cases[case1-api] _
self = <sqlalchemy.engine.base.Connection object at 0x7fff8f6e5190>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8f6e5250>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff90310da0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff9059f140>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8f6e5250>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
The above exception was the direct cause of the following exception:
self = <tests.test_config_overrides.TestConfigOverrides object at 0x7fff90d89df0>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff9059f140>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8f6e5250>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
E       [SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
E       [parameters: [('f18',), ('fedora-17',), ('master',)]]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
_ ERROR at teardown of TestConfigOverrides.test_valid_configuration_cases[case1-api] _
self = <tests.test_config_overrides.TestConfigOverrides object at 0x7fff90d89df0>
method = <bound method TestConfigOverrides.test_valid_configuration_cases of <tests.test_config_overrides.TestConfigOverrides object at 0x7fff90d89df0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
_ ERROR at setup of TestConfigOverrides.test_valid_configuration_cases[case1-webui] _
self = <sqlalchemy.engine.base.Connection object at 0x7fff8f700c80>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8f700ce0>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff90310da0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff900a00c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8f700ce0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
The above exception was the direct cause of the following exception:
self = <tests.test_config_overrides.TestConfigOverrides object at 0x7fff90d89f70>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff900a00c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8f700ce0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
E       [SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
E       [parameters: [('f18',), ('fedora-17',), ('master',)]]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
_ ERROR at teardown of TestConfigOverrides.test_valid_configuration_cases[case1-webui] _
self = <tests.test_config_overrides.TestConfigOverrides object at 0x7fff90d89f70>
method = <bound method TestConfigOverrides.test_valid_configuration_cases of <tests.test_config_overrides.TestConfigOverrides object at 0x7fff90d89f70>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
_ ERROR at setup of TestConfigOverrides.test_valid_configuration_cases[case2-api] _
self = <sqlalchemy.engine.base.Connection object at 0x7fff8f7039e0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8f703ad0>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff90310da0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8f9b2440>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8f703ad0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
The above exception was the direct cause of the following exception:
self = <tests.test_config_overrides.TestConfigOverrides object at 0x7fff90d8b560>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8f9b2440>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8f703ad0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
E       [SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
E       [parameters: [('f18',), ('fedora-17',), ('master',)]]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
_ ERROR at teardown of TestConfigOverrides.test_valid_configuration_cases[case2-api] _
self = <tests.test_config_overrides.TestConfigOverrides object at 0x7fff90d8b560>
method = <bound method TestConfigOverrides.test_valid_configuration_cases of <tests.test_config_overrides.TestConfigOverrides object at 0x7fff90d8b560>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
_ ERROR at setup of TestConfigOverrides.test_valid_configuration_cases[case2-webui] _
self = <sqlalchemy.engine.base.Connection object at 0x7fff8f776450>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8f7764b0>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff90310da0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8f3f74c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8f7764b0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
The above exception was the direct cause of the following exception:
self = <tests.test_config_overrides.TestConfigOverrides object at 0x7fff90d780b0>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8f3f74c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8f7764b0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
E       [SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
E       [parameters: [('f18',), ('fedora-17',), ('master',)]]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
_ ERROR at teardown of TestConfigOverrides.test_valid_configuration_cases[case2-webui] _
self = <tests.test_config_overrides.TestConfigOverrides object at 0x7fff90d780b0>
method = <bound method TestConfigOverrides.test_valid_configuration_cases of <tests.test_config_overrides.TestConfigOverrides object at 0x7fff90d780b0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
_ ERROR at setup of TestConfigOverrides.test_valid_configuration_cases[case3-api] _
self = <sqlalchemy.engine.base.Connection object at 0x7fff8f9a4b60>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8f9a4bf0>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff90310da0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8ec136c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8f9a4bf0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
The above exception was the direct cause of the following exception:
self = <tests.test_config_overrides.TestConfigOverrides object at 0x7fff90d78350>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8ec136c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8f9a4bf0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
E       [SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
E       [parameters: [('f18',), ('fedora-17',), ('master',)]]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
_ ERROR at teardown of TestConfigOverrides.test_valid_configuration_cases[case3-api] _
self = <tests.test_config_overrides.TestConfigOverrides object at 0x7fff90d78350>
method = <bound method TestConfigOverrides.test_valid_configuration_cases of <tests.test_config_overrides.TestConfigOverrides object at 0x7fff90d78350>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
_ ERROR at setup of TestConfigOverrides.test_valid_configuration_cases[case3-webui] _
self = <sqlalchemy.engine.base.Connection object at 0x7fff8f703aa0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8f703bc0>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff90310da0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff9032b3c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8f703bc0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
The above exception was the direct cause of the following exception:
self = <tests.test_config_overrides.TestConfigOverrides object at 0x7fff90d78200>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff9032b3c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8f703bc0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
E       [SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
E       [parameters: [('f18',), ('fedora-17',), ('master',)]]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
_ ERROR at teardown of TestConfigOverrides.test_valid_configuration_cases[case3-webui] _
self = <tests.test_config_overrides.TestConfigOverrides object at 0x7fff90d78200>
method = <bound method TestConfigOverrides.test_valid_configuration_cases of <tests.test_config_overrides.TestConfigOverrides object at 0x7fff90d78200>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
_ ERROR at setup of TestConfigOverrides.test_valid_configuration_cases[case4-api] _
self = <sqlalchemy.engine.base.Connection object at 0x7fff8f7a6fc0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8f7a6d20>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff90310da0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8fe67540>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8f7a6d20>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
The above exception was the direct cause of the following exception:
self = <tests.test_config_overrides.TestConfigOverrides object at 0x7fff90d783b0>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8fe67540>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8f7a6d20>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
E       [SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
E       [parameters: [('f18',), ('fedora-17',), ('master',)]]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
_ ERROR at teardown of TestConfigOverrides.test_valid_configuration_cases[case4-api] _
self = <tests.test_config_overrides.TestConfigOverrides object at 0x7fff90d783b0>
method = <bound method TestConfigOverrides.test_valid_configuration_cases of <tests.test_config_overrides.TestConfigOverrides object at 0x7fff90d783b0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
_ ERROR at setup of TestConfigOverrides.test_valid_configuration_cases[case4-webui] _
self = <sqlalchemy.engine.base.Connection object at 0x7fff90488d10>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff904894c0>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff90310da0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff90425cc0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff904894c0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
The above exception was the direct cause of the following exception:
self = <tests.test_config_overrides.TestConfigOverrides object at 0x7fff90d78680>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff90425cc0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff904894c0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
E       [SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
E       [parameters: [('f18',), ('fedora-17',), ('master',)]]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
_ ERROR at teardown of TestConfigOverrides.test_valid_configuration_cases[case4-webui] _
self = <tests.test_config_overrides.TestConfigOverrides object at 0x7fff90d78680>
method = <bound method TestConfigOverrides.test_valid_configuration_cases of <tests.test_config_overrides.TestConfigOverrides object at 0x7fff90d78680>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
___ ERROR at setup of TestConfigOverrides.test_isolation_override[case0-api] ___
self = <sqlalchemy.engine.base.Connection object at 0x7fff902d8e90>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff902dba70>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff90310da0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8f3900c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff902dba70>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
The above exception was the direct cause of the following exception:
self = <tests.test_config_overrides.TestConfigOverrides object at 0x7fff90d79940>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8f3900c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff902dba70>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
E       [SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
E       [parameters: [('f18',), ('fedora-17',), ('master',)]]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
_ ERROR at teardown of TestConfigOverrides.test_isolation_override[case0-api] __
self = <tests.test_config_overrides.TestConfigOverrides object at 0x7fff90d79940>
method = <bound method TestConfigOverrides.test_isolation_override of <tests.test_config_overrides.TestConfigOverrides object at 0x7fff90d79940>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
__ ERROR at setup of TestConfigOverrides.test_isolation_override[case0-webui] __
self = <sqlalchemy.engine.base.Connection object at 0x7fff8f9a7a70>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8f9a7e90>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff90310da0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff900a0e40>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8f9a7e90>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
The above exception was the direct cause of the following exception:
self = <tests.test_config_overrides.TestConfigOverrides object at 0x7fff90d78e30>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff900a0e40>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8f9a7e90>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
E       [SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
E       [parameters: [('f18',), ('fedora-17',), ('master',)]]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
_ ERROR at teardown of TestConfigOverrides.test_isolation_override[case0-webui] _
self = <tests.test_config_overrides.TestConfigOverrides object at 0x7fff90d78e30>
method = <bound method TestConfigOverrides.test_isolation_override of <tests.test_config_overrides.TestConfigOverrides object at 0x7fff90d78e30>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
___ ERROR at setup of TestConfigOverrides.test_isolation_override[case1-api] ___
self = <sqlalchemy.engine.base.Connection object at 0x7fff902f2150>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff902f2270>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff90310da0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8fe67a40>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff902f2270>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
The above exception was the direct cause of the following exception:
self = <tests.test_config_overrides.TestConfigOverrides object at 0x7fff90d7be00>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8fe67a40>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff902f2270>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
E       [SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
E       [parameters: [('f18',), ('fedora-17',), ('master',)]]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
_ ERROR at teardown of TestConfigOverrides.test_isolation_override[case1-api] __
self = <tests.test_config_overrides.TestConfigOverrides object at 0x7fff90d7be00>
method = <bound method TestConfigOverrides.test_isolation_override of <tests.test_config_overrides.TestConfigOverrides object at 0x7fff90d7be00>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
__ ERROR at setup of TestConfigOverrides.test_isolation_override[case1-webui] __
self = <sqlalchemy.engine.base.Connection object at 0x7fff902dc800>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff902dc860>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff90310da0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8f34bb40>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff902dc860>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
The above exception was the direct cause of the following exception:
self = <tests.test_config_overrides.TestConfigOverrides object at 0x7fff90d78140>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8f34bb40>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff902dc860>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
E       [SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
E       [parameters: [('f18',), ('fedora-17',), ('master',)]]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
_ ERROR at teardown of TestConfigOverrides.test_isolation_override[case1-webui] _
self = <tests.test_config_overrides.TestConfigOverrides object at 0x7fff90d78140>
method = <bound method TestConfigOverrides.test_isolation_override of <tests.test_config_overrides.TestConfigOverrides object at 0x7fff90d78140>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
___ ERROR at setup of TestConfigOverrides.test_isolation_override[case2-api] ___
self = <sqlalchemy.engine.base.Connection object at 0x7fff902df6e0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff902df740>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff90310da0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8fb15240>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff902df740>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
The above exception was the direct cause of the following exception:
self = <tests.test_config_overrides.TestConfigOverrides object at 0x7fff90d78290>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8fb15240>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff902df740>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
E       [SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
E       [parameters: [('f18',), ('fedora-17',), ('master',)]]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
_ ERROR at teardown of TestConfigOverrides.test_isolation_override[case2-api] __
self = <tests.test_config_overrides.TestConfigOverrides object at 0x7fff90d78290>
method = <bound method TestConfigOverrides.test_isolation_override of <tests.test_config_overrides.TestConfigOverrides object at 0x7fff90d78290>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
__ ERROR at setup of TestConfigOverrides.test_isolation_override[case2-webui] __
self = <sqlalchemy.engine.base.Connection object at 0x7fff8f91e270>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8f91e2d0>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff90310da0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8f3f6c40>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8f91e2d0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
The above exception was the direct cause of the following exception:
self = <tests.test_config_overrides.TestConfigOverrides object at 0x7fff90d78380>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8f3f6c40>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8f91e2d0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
E       [SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
E       [parameters: [('f18',), ('fedora-17',), ('master',)]]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
_ ERROR at teardown of TestConfigOverrides.test_isolation_override[case2-webui] _
self = <tests.test_config_overrides.TestConfigOverrides object at 0x7fff90d78380>
method = <bound method TestConfigOverrides.test_isolation_override of <tests.test_config_overrides.TestConfigOverrides object at 0x7fff90d78380>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
___ ERROR at setup of TestConfigOverrides.test_isolation_override[case3-api] ___
self = <sqlalchemy.engine.base.Connection object at 0x7fff8f9111f0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8f911250>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff90310da0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8f34a0c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8f911250>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
The above exception was the direct cause of the following exception:
self = <tests.test_config_overrides.TestConfigOverrides object at 0x7fff90d784a0>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8f34a0c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8f911250>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
E       [SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
E       [parameters: [('f18',), ('fedora-17',), ('master',)]]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
_ ERROR at teardown of TestConfigOverrides.test_isolation_override[case3-api] __
self = <tests.test_config_overrides.TestConfigOverrides object at 0x7fff90d784a0>
method = <bound method TestConfigOverrides.test_isolation_override of <tests.test_config_overrides.TestConfigOverrides object at 0x7fff90d784a0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
__ ERROR at setup of TestConfigOverrides.test_isolation_override[case3-webui] __
self = <sqlalchemy.engine.base.Connection object at 0x7fff8f8f1370>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8f8f1790>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff90310da0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff90017e40>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8f8f1790>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
The above exception was the direct cause of the following exception:
self = <tests.test_config_overrides.TestConfigOverrides object at 0x7fff90d78560>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff90017e40>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8f8f1790>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
E       [SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
E       [parameters: [('f18',), ('fedora-17',), ('master',)]]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
_ ERROR at teardown of TestConfigOverrides.test_isolation_override[case3-webui] _
self = <tests.test_config_overrides.TestConfigOverrides object at 0x7fff90d78560>
method = <bound method TestConfigOverrides.test_isolation_override of <tests.test_config_overrides.TestConfigOverrides object at 0x7fff90d78560>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
_ ERROR at setup of TestConfigOverrides.test_isolation_override_by_chroot[case0-api] _
self = <sqlalchemy.engine.base.Connection object at 0x7fff8f91ec00>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8f91ec60>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff90310da0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8f34b240>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8f91ec60>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
The above exception was the direct cause of the following exception:
self = <tests.test_config_overrides.TestConfigOverrides object at 0x7fff90d78a70>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8f34b240>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8f91ec60>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
E       [SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
E       [parameters: [('f18',), ('fedora-17',), ('master',)]]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
_ ERROR at teardown of TestConfigOverrides.test_isolation_override_by_chroot[case0-api] _
self = <tests.test_config_overrides.TestConfigOverrides object at 0x7fff90d78a70>
method = <bound method TestConfigOverrides.test_isolation_override_by_chroot of <tests.test_config_overrides.TestConfigOverrides object at 0x7fff90d78a70>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
_ ERROR at setup of TestConfigOverrides.test_isolation_override_by_chroot[case0-webui] _
self = <sqlalchemy.engine.base.Connection object at 0x7fff9065cb00>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff902f3a70>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff90310da0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8f1c7d40>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff902f3a70>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
The above exception was the direct cause of the following exception:
self = <tests.test_config_overrides.TestConfigOverrides object at 0x7fff90d78980>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8f1c7d40>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff902f3a70>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
E       [SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
E       [parameters: [('f18',), ('fedora-17',), ('master',)]]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
_ ERROR at teardown of TestConfigOverrides.test_isolation_override_by_chroot[case0-webui] _
self = <tests.test_config_overrides.TestConfigOverrides object at 0x7fff90d78980>
method = <bound method TestConfigOverrides.test_isolation_override_by_chroot of <tests.test_config_overrides.TestConfigOverrides object at 0x7fff90d78980>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
_ ERROR at setup of TestConfigOverrides.test_isolation_override_by_chroot[case1-api] _
self = <sqlalchemy.engine.base.Connection object at 0x7fff8f7a79b0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8f7a7a10>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff90310da0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff904d8e40>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8f7a7a10>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
The above exception was the direct cause of the following exception:
self = <tests.test_config_overrides.TestConfigOverrides object at 0x7fff90d78e00>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff904d8e40>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8f7a7a10>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
E       [SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
E       [parameters: [('f18',), ('fedora-17',), ('master',)]]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
_ ERROR at teardown of TestConfigOverrides.test_isolation_override_by_chroot[case1-api] _
self = <tests.test_config_overrides.TestConfigOverrides object at 0x7fff90d78e00>
method = <bound method TestConfigOverrides.test_isolation_override_by_chroot of <tests.test_config_overrides.TestConfigOverrides object at 0x7fff90d78e00>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
_ ERROR at setup of TestConfigOverrides.test_isolation_override_by_chroot[case1-webui] _
self = <sqlalchemy.engine.base.Connection object at 0x7fff8f9a4c20>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8f8f2d50>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff90310da0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8f392ac0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8f8f2d50>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
The above exception was the direct cause of the following exception:
self = <tests.test_config_overrides.TestConfigOverrides object at 0x7fff90d78ef0>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8f392ac0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8f8f2d50>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
E       [SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
E       [parameters: [('f18',), ('fedora-17',), ('master',)]]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
_ ERROR at teardown of TestConfigOverrides.test_isolation_override_by_chroot[case1-webui] _
self = <tests.test_config_overrides.TestConfigOverrides object at 0x7fff90d78ef0>
method = <bound method TestConfigOverrides.test_isolation_override_by_chroot of <tests.test_config_overrides.TestConfigOverrides object at 0x7fff90d78ef0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
_ ERROR at setup of TestConfigOverrides.test_isolation_override_by_chroot[case2-api] _
self = <sqlalchemy.engine.base.Connection object at 0x7fff8f90c6b0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8f90c050>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff90310da0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8f0a04c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8f90c050>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
The above exception was the direct cause of the following exception:
self = <tests.test_config_overrides.TestConfigOverrides object at 0x7fff90d78fb0>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8f0a04c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8f90c050>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
E       [SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
E       [parameters: [('f18',), ('fedora-17',), ('master',)]]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
_ ERROR at teardown of TestConfigOverrides.test_isolation_override_by_chroot[case2-api] _
self = <tests.test_config_overrides.TestConfigOverrides object at 0x7fff90d78fb0>
method = <bound method TestConfigOverrides.test_isolation_override_by_chroot of <tests.test_config_overrides.TestConfigOverrides object at 0x7fff90d78fb0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
_ ERROR at setup of TestConfigOverrides.test_isolation_override_by_chroot[case2-webui] _
self = <sqlalchemy.engine.base.Connection object at 0x7fff8f90f500>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8f90f560>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff90310da0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8ec11a40>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8f90f560>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
The above exception was the direct cause of the following exception:
self = <tests.test_config_overrides.TestConfigOverrides object at 0x7fff90d79040>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8ec11a40>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8f90f560>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
E       [SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
E       [parameters: [('f18',), ('fedora-17',), ('master',)]]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
_ ERROR at teardown of TestConfigOverrides.test_isolation_override_by_chroot[case2-webui] _
self = <tests.test_config_overrides.TestConfigOverrides object at 0x7fff90d79040>
method = <bound method TestConfigOverrides.test_isolation_override_by_chroot of <tests.test_config_overrides.TestConfigOverrides object at 0x7fff90d79040>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
_ ERROR at setup of TestConfigOverrides.test_isolation_override_by_chroot[case3-api] _
self = <sqlalchemy.engine.base.Connection object at 0x7fff8f93e060>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8f93e0c0>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff90310da0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8eefbb40>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8f93e0c0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
The above exception was the direct cause of the following exception:
self = <tests.test_config_overrides.TestConfigOverrides object at 0x7fff90d79100>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8eefbb40>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8f93e0c0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
E       [SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
E       [parameters: [('f18',), ('fedora-17',), ('master',)]]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
_ ERROR at teardown of TestConfigOverrides.test_isolation_override_by_chroot[case3-api] _
self = <tests.test_config_overrides.TestConfigOverrides object at 0x7fff90d79100>
method = <bound method TestConfigOverrides.test_isolation_override_by_chroot of <tests.test_config_overrides.TestConfigOverrides object at 0x7fff90d79100>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
_ ERROR at setup of TestConfigOverrides.test_isolation_override_by_chroot[case3-webui] _
self = <sqlalchemy.engine.base.Connection object at 0x7fff8f8d90d0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8f8d9340>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff90310da0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8ec13a40>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8f8d9340>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
The above exception was the direct cause of the following exception:
self = <tests.test_config_overrides.TestConfigOverrides object at 0x7fff90d791f0>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8ec13a40>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8f8d9340>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
E       [SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
E       [parameters: [('f18',), ('fedora-17',), ('master',)]]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
_ ERROR at teardown of TestConfigOverrides.test_isolation_override_by_chroot[case3-webui] _
self = <tests.test_config_overrides.TestConfigOverrides object at 0x7fff90d791f0>
method = <bound method TestConfigOverrides.test_isolation_override_by_chroot of <tests.test_config_overrides.TestConfigOverrides object at 0x7fff90d791f0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
____ ERROR at setup of TestProjectCreate.test_invalid_contact[homepage-api] ____
self = <sqlalchemy.engine.base.Connection object at 0x7fff8f8d9fd0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8f8d9eb0>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff90310da0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8f367ec0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8f8d9eb0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
The above exception was the direct cause of the following exception:
self = <tests.test_copr_create.TestProjectCreate object at 0x7fff90d7a300>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8f367ec0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8f8d9eb0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
E       [SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
E       [parameters: [('f18',), ('fedora-17',), ('master',)]]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
__ ERROR at teardown of TestProjectCreate.test_invalid_contact[homepage-api] ___
self = <tests.test_copr_create.TestProjectCreate object at 0x7fff90d7a300>
method = <bound method TestProjectCreate.test_invalid_contact of <tests.test_copr_create.TestProjectCreate object at 0x7fff90d7a300>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
___ ERROR at setup of TestProjectCreate.test_invalid_contact[homepage-webui] ___
self = <sqlalchemy.engine.base.Connection object at 0x7fff8f9a9b50>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8f9a9bb0>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff90310da0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8f1c5f40>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8f9a9bb0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
The above exception was the direct cause of the following exception:
self = <tests.test_copr_create.TestProjectCreate object at 0x7fff90d7a5a0>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8f1c5f40>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8f9a9bb0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
E       [SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
E       [parameters: [('f18',), ('fedora-17',), ('master',)]]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
_ ERROR at teardown of TestProjectCreate.test_invalid_contact[homepage-webui] __
self = <tests.test_copr_create.TestProjectCreate object at 0x7fff90d7a5a0>
method = <bound method TestProjectCreate.test_invalid_contact of <tests.test_copr_create.TestProjectCreate object at 0x7fff90d7a5a0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
____ ERROR at setup of TestProjectCreate.test_invalid_contact[contact-api] _____
self = <sqlalchemy.engine.base.Connection object at 0x7fff8f98d100>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8f98c5f0>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff90310da0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff904d8340>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8f98c5f0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
The above exception was the direct cause of the following exception:
self = <tests.test_copr_create.TestProjectCreate object at 0x7fff90d7a630>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff904d8340>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8f98c5f0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
E       [SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
E       [parameters: [('f18',), ('fedora-17',), ('master',)]]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
___ ERROR at teardown of TestProjectCreate.test_invalid_contact[contact-api] ___
self = <tests.test_copr_create.TestProjectCreate object at 0x7fff90d7a630>
method = <bound method TestProjectCreate.test_invalid_contact of <tests.test_copr_create.TestProjectCreate object at 0x7fff90d7a630>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
___ ERROR at setup of TestProjectCreate.test_invalid_contact[contact-webui] ____
self = <sqlalchemy.engine.base.Connection object at 0x7fff8f98ff80>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8fc6c0e0>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff90310da0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8f584540>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8fc6c0e0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
The above exception was the direct cause of the following exception:
self = <tests.test_copr_create.TestProjectCreate object at 0x7fff90d7a720>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8f584540>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8fc6c0e0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
E       [SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
E       [parameters: [('f18',), ('fedora-17',), ('master',)]]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
__ ERROR at teardown of TestProjectCreate.test_invalid_contact[contact-webui] __
self = <tests.test_copr_create.TestProjectCreate object at 0x7fff90d7a720>
method = <bound method TestProjectCreate.test_invalid_contact of <tests.test_copr_create.TestProjectCreate object at 0x7fff90d7a720>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
_____ ERROR at setup of TestProjectCreate.test_valid_contact[homepage-api] _____
self = <sqlalchemy.engine.base.Connection object at 0x7fff8f8db7d0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8f8d9fd0>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff90310da0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8ff61940>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8f8d9fd0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
The above exception was the direct cause of the following exception:
self = <tests.test_copr_create.TestProjectCreate object at 0x7fff90d7aa20>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8ff61940>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8f8d9fd0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
E       [SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
E       [parameters: [('f18',), ('fedora-17',), ('master',)]]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
___ ERROR at teardown of TestProjectCreate.test_valid_contact[homepage-api] ____
self = <tests.test_copr_create.TestProjectCreate object at 0x7fff90d7aa20>
method = <bound method TestProjectCreate.test_valid_contact of <tests.test_copr_create.TestProjectCreate object at 0x7fff90d7aa20>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
____ ERROR at setup of TestProjectCreate.test_valid_contact[homepage-webui] ____
self = <sqlalchemy.engine.base.Connection object at 0x7fff8f90cd70>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8f90cdd0>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff90310da0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8f3f75c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8f90cdd0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
The above exception was the direct cause of the following exception:
self = <tests.test_copr_create.TestProjectCreate object at 0x7fff90d7acf0>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8f3f75c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8f90cdd0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
E       [SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
E       [parameters: [('f18',), ('fedora-17',), ('master',)]]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
__ ERROR at teardown of TestProjectCreate.test_valid_contact[homepage-webui] ___
self = <tests.test_copr_create.TestProjectCreate object at 0x7fff90d7acf0>
method = <bound method TestProjectCreate.test_valid_contact of <tests.test_copr_create.TestProjectCreate object at 0x7fff90d7acf0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
_____ ERROR at setup of TestProjectCreate.test_valid_contact[contact-api] ______
self = <sqlalchemy.engine.base.Connection object at 0x7fff902d95b0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff902d99d0>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff90310da0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8f1c5c40>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff902d99d0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
The above exception was the direct cause of the following exception:
self = <tests.test_copr_create.TestProjectCreate object at 0x7fff90d7adb0>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8f1c5c40>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff902d99d0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
E       [SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
E       [parameters: [('f18',), ('fedora-17',), ('master',)]]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
____ ERROR at teardown of TestProjectCreate.test_valid_contact[contact-api] ____
self = <tests.test_copr_create.TestProjectCreate object at 0x7fff90d7adb0>
method = <bound method TestProjectCreate.test_valid_contact of <tests.test_copr_create.TestProjectCreate object at 0x7fff90d7adb0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
____ ERROR at setup of TestProjectCreate.test_valid_contact[contact-webui] _____
self = <sqlalchemy.engine.base.Connection object at 0x7fff8f8f17c0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8f8f3320>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff90310da0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8ff62840>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8f8f3320>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
The above exception was the direct cause of the following exception:
self = <tests.test_copr_create.TestProjectCreate object at 0x7fff90d7ae40>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8ff62840>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8f8f3320>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
E       [SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
E       [parameters: [('f18',), ('fedora-17',), ('master',)]]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
___ ERROR at teardown of TestProjectCreate.test_valid_contact[contact-webui] ___
self = <tests.test_copr_create.TestProjectCreate object at 0x7fff90d7ae40>
method = <bound method TestProjectCreate.test_valid_contact of <tests.test_copr_create.TestProjectCreate object at 0x7fff90d7ae40>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
______ ERROR at teardown of TestExceptionHandling.test_json_only_for_api _______
self = <tests.test_exceptions.TestExceptionHandling object at 0x7fff90da8830>
method = <bound method TestExceptionHandling.test_json_only_for_api of <tests.test_exceptions.TestExceptionHandling object at 0x7fff90da8830>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
------------------------------ Captured log call -------------------------------
ERROR    coprs:error_handlers.py:42 Response error: 404 The requested URL was not found on the server. If you entered the URL manually please check your spelling and try again.
ERROR    coprs:error_handlers.py:42 Response error: 404 Such API endpoint doesn't exist
_ ERROR at teardown of TestExceptionHandling.test_both_nonexisting_page_and_object _
self = <tests.test_exceptions.TestExceptionHandling object at 0x7fff90da89e0>
method = <bound method TestExceptionHandling.test_both_nonexisting_page_and_object of <tests.test_exceptions.TestExceptionHandling object at 0x7fff90da89e0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
------------------------------ Captured log call -------------------------------
ERROR    coprs:error_handlers.py:42 Response error: 404 The requested URL was not found on the server. If you entered the URL manually please check your spelling and try again.
ERROR    coprs:error_handlers.py:102 Admin-only exception
Request: GET http://localhost.localdomain/coprs/nonexisting/nonexisting/
User: None
Traceback (most recent call last):
  File "/usr/lib/python3.12/site-packages/flask/app.py", line 870, in full_dispatch_request
    rv = self.dispatch_request()
         ^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.12/site-packages/flask/app.py", line 855, in dispatch_request
    return self.ensure_sync(self.view_functions[rule.endpoint])(**view_args)  # type: ignore[no-any-return]
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/builddir/build/BUILD/copr-frontend-1.204/coprs_frontend/coprs/views/misc.py", line 253, in wrapper
    copr = ComplexLogic.get_copr(username, coprname, with_mock_chroots=True)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/builddir/build/BUILD/copr-frontend-1.204/coprs_frontend/coprs/logic/complex_logic.py", line 201, in get_copr
    return CoprsLogic.get(user_name, copr_name, **kwargs).filter(Copr.group_id.is_(None)).one()
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/query.py", line 2777, in one
    return self._iter().one()  # type: ignore
           ^^^^^^^^^^^^
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/query.py", line 2826, in _iter
    result: Union[ScalarResult[_T], Result[_T]] = self.session.execute(
                                                  ^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py", line 2306, in execute
    return self._execute_internal(
           ^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py", line 2191, in _execute_internal
    result: Result[Any] = compile_state_cls.orm_execute_statement(
                          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/context.py", line 293, in orm_execute_statement
    result = conn.execute(
             ^^^^^^^^^^^^^
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py", line 1408, in execute
    return meth(
           ^^^^^
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py", line 513, in _execute_on_connection
    return connection._execute_clauseelement(
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py", line 1622, in _execute_clauseelement
    compiled_sql, extracted_params, cache_hit = elem._compile_w_cache(
                                                ^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py", line 701, in _compile_w_cache
    compiled_sql = self._compiler(
                   ^^^^^^^^^^^^^^^
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py", line 314, in _compiler
    return dialect.statement_compiler(dialect, self, **kw)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/sql/compiler.py", line 1424, in __init__
    Compiled.__init__(self, dialect, statement, **kwargs)
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/sql/compiler.py", line 865, in __init__
    self.string = self.process(self.statement, **compile_kwargs)
                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/sql/compiler.py", line 910, in process
    return obj._compiler_dispatch(self, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/sql/visitors.py", line 141, in _compiler_dispatch
    return meth(self, **kw)  # type: ignore  # noqa: E501
           ^^^^^^^^^^^^^^^^
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/sql/compiler.py", line 4641, in visit_select
    compile_state = select_stmt._compile_state_factory(
                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/sql/base.py", line 684, in create_for_statement
    return klass.create_for_statement(statement, compiler, **kw)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/context.py", line 1162, in create_for_statement
    self._setup_for_generate()
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/context.py", line 1197, in _setup_for_generate
    self._join(query._setup_joins, self._entities)
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/context.py", line 1766, in _join
    raise sa_exc.InvalidRequestError(
sqlalchemy.exc.InvalidRequestError: No 'on clause' argument may be passed when joining to a relationship path as a target
ERROR    coprs:error_handlers.py:42 Response error: 500 Database error, contact admin
_ ERROR at teardown of TestExceptionHandling.test_both_nonexisting_page_and_object_api _
self = <tests.test_exceptions.TestExceptionHandling object at 0x7fff90da8740>
method = <bound method TestExceptionHandling.test_both_nonexisting_page_and_object_api of <tests.test_exceptions.TestExceptionHandling object at 0x7fff90da8740>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
------------------------------ Captured log call -------------------------------
ERROR    coprs:error_handlers.py:42 Response error: 404 Such API endpoint doesn't exist
ERROR    coprs:error_handlers.py:42 Response error: 404 b'Project nonexisting/nonexisting does not exist.'
___________ ERROR at teardown of TestExceptionHandling.test_api_401 ____________
self = <tests.test_exceptions.TestExceptionHandling object at 0x7fff90da8350>
method = <bound method TestExceptionHandling.test_api_401 of <tests.test_exceptions.TestExceptionHandling object at 0x7fff90da8350>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
------------------------------ Captured log call -------------------------------
INFO     coprs:misc.py:180 Attempting to use invalid or expired API login 'None'
_____________ ERROR at setup of TestExceptionHandling.test_api_403 _____________
self = <sqlalchemy.engine.base.Connection object at 0x7fff8fc4b890>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8fc4ba40>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff90310da0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8f41f740>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8fc4ba40>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
The above exception was the direct cause of the following exception:
self = <tests.test_exceptions.TestExceptionHandling object at 0x7fff90da84a0>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8f41f740>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8fc4ba40>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
E       [SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
E       [parameters: [('f18',), ('fedora-17',), ('master',)]]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
___________ ERROR at teardown of TestExceptionHandling.test_api_403 ____________
self = <tests.test_exceptions.TestExceptionHandling object at 0x7fff90da84a0>
method = <bound method TestExceptionHandling.test_api_403 of <tests.test_exceptions.TestExceptionHandling object at 0x7fff90da84a0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
_____________ ERROR at setup of TestExceptionHandling.test_api_409 _____________
self = <sqlalchemy.engine.base.Connection object at 0x7fff8fc4bec0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8fc4ae70>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff90310da0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8faa7440>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8fc4ae70>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
The above exception was the direct cause of the following exception:
self = <tests.test_exceptions.TestExceptionHandling object at 0x7fff90da9280>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8faa7440>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8fc4ae70>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
E       [SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
E       [parameters: [('f18',), ('fedora-17',), ('master',)]]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
___________ ERROR at teardown of TestExceptionHandling.test_api_409 ____________
self = <tests.test_exceptions.TestExceptionHandling object at 0x7fff90da9280>
method = <bound method TestExceptionHandling.test_api_409 of <tests.test_exceptions.TestExceptionHandling object at 0x7fff90da9280>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
_____________ ERROR at setup of TestExceptionHandling.test_api_400 _____________
self = <sqlalchemy.engine.base.Connection object at 0x7fff8fca6f00>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8fca66c0>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff90310da0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8f810740>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8fca66c0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
The above exception was the direct cause of the following exception:
self = <tests.test_exceptions.TestExceptionHandling object at 0x7fff90da9fd0>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8f810740>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8fca66c0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
E       [SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
E       [parameters: [('f18',), ('fedora-17',), ('master',)]]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
___________ ERROR at teardown of TestExceptionHandling.test_api_400 ____________
self = <tests.test_exceptions.TestExceptionHandling object at 0x7fff90da9fd0>
method = <bound method TestExceptionHandling.test_api_400 of <tests.test_exceptions.TestExceptionHandling object at 0x7fff90da9fd0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
___________ ERROR at teardown of TestExceptionHandling.test_api_504 ____________
self = <tests.test_exceptions.TestExceptionHandling object at 0x7fff90daa300>
method = <bound method TestExceptionHandling.test_api_504 of <tests.test_exceptions.TestExceptionHandling object at 0x7fff90daa300>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
------------------------------ Captured log call -------------------------------
ERROR    coprs:error_handlers.py:42 Response error: 504 The API request timeouted
___________ ERROR at teardown of TestExceptionHandling.test_api_500 ____________
self = <tests.test_exceptions.TestExceptionHandling object at 0x7fff90daa480>
method = <bound method TestExceptionHandling.test_api_500 of <tests.test_exceptions.TestExceptionHandling object at 0x7fff90daa480>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
------------------------------ Captured log call -------------------------------
ERROR    coprs:error_handlers.py:42 Response error: 500 Whatever unspecified error
___ ERROR at teardown of TestExceptionHandling.test_api_500_default_message ____
self = <tests.test_exceptions.TestExceptionHandling object at 0x7fff90daa600>
method = <bound method TestExceptionHandling.test_api_500_default_message of <tests.test_exceptions.TestExceptionHandling object at 0x7fff90daa600>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
------------------------------ Captured log call -------------------------------
ERROR    coprs:error_handlers.py:42 Response error: 500 Generic copr exception
____ ERROR at teardown of TestExceptionHandling.test_api_500_runtime_error _____
self = <tests.test_exceptions.TestExceptionHandling object at 0x7fff90daa7b0>
method = <bound method TestExceptionHandling.test_api_500_runtime_error of <tests.test_exceptions.TestExceptionHandling object at 0x7fff90daa7b0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
------------------------------ Captured log call -------------------------------
ERROR    coprs:error_handlers.py:102 Admin-only exception
Request: GET http://localhost.localdomain/api_3
User: None
Traceback (most recent call last):
  File "/usr/lib/python3.12/site-packages/flask/app.py", line 870, in full_dispatch_request
    rv = self.dispatch_request()
         ^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.12/site-packages/flask/app.py", line 855, in dispatch_request
    return self.ensure_sync(self.view_functions[rule.endpoint])(**view_args)  # type: ignore[no-any-return]
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/builddir/build/BUILD/copr-frontend-1.204/coprs_frontend/tests/test_exceptions.py", line 104, in raise_exception
    raise RuntimeError("Whatever unspecified error")
RuntimeError: Whatever unspecified error
ERROR    coprs:error_handlers.py:42 Response error: 500 Request wasn't successful, there is probably a bug in the Copr code.
_______ ERROR at teardown of TestExceptionHandling.test_api_500_storage ________
self = <tests.test_exceptions.TestExceptionHandling object at 0x7fff90daa930>
method = <bound method TestExceptionHandling.test_api_500_storage of <tests.test_exceptions.TestExceptionHandling object at 0x7fff90daa930>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
------------------------------ Captured log call -------------------------------
ERROR    coprs:error_handlers.py:42 Response error: 500 Not enough space left
_____ ERROR at teardown of TestExceptionHandling.test_api_500_in_progress ______
self = <tests.test_exceptions.TestExceptionHandling object at 0x7fff90daaae0>
method = <bound method TestExceptionHandling.test_api_500_in_progress of <tests.test_exceptions.TestExceptionHandling object at 0x7fff90daaae0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
------------------------------ Captured log call -------------------------------
ERROR    coprs:error_handlers.py:42 Response error: 500 Hey! Action in progress
__________ ERROR at setup of TestCoprsFormFactory.test_empty_chroots ___________
self = <sqlalchemy.engine.base.Connection object at 0x7fff8fbef0e0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8fbef5f0>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff903111c0>
parameters = [('user1', 0, 1, None)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
                    self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
                    )
            elif not effective_parameters and context.no_parameters:
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_execute_no_params:
                        if fn(cursor, str_statement, context):
                            evt_handled = True
                            break
                if not evt_handled:
                    self.dialect.do_execute_no_params(
                        cursor, str_statement, context
                    )
            else:
                effective_parameters = cast(
                    "_CoreSingleExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_execute:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_execute(
                        cursor, str_statement, effective_parameters, context
                    )
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1960: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8faa27c0>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8fbef5f0>
    def do_execute(self, cursor, statement, parameters, context=None):
>       cursor.execute(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: user.username
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:924: IntegrityError
The above exception was the direct cause of the following exception:
self = <tests.test_forms.TestCoprsFormFactory object at 0x7fff90daa8d0>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1233: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1960: in _exec_single_context
    self.dialect.do_execute(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8faa27c0>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8fbef5f0>
    def do_execute(self, cursor, statement, parameters, context=None):
>       cursor.execute(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: user.username
E       [SQL: INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)]
E       [parameters: ('user1', 0, 1, None)]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:924: IntegrityError
_________ ERROR at teardown of TestCoprsFormFactory.test_empty_chroots _________
self = <tests.test_forms.TestCoprsFormFactory object at 0x7fff90daa8d0>
method = <bound method TestCoprsFormFactory.test_empty_chroots of <tests.test_forms.TestCoprsFormFactory object at 0x7fff90daa8d0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
_______________ ERROR at setup of TestPinnedCoprsForm.test_limit _______________
self = <sqlalchemy.engine.base.Connection object at 0x7fff8fca4410>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8fca4aa0>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff903111c0>
parameters = [('user1', 0, 1, None)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
                    self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
                    )
            elif not effective_parameters and context.no_parameters:
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_execute_no_params:
                        if fn(cursor, str_statement, context):
                            evt_handled = True
                            break
                if not evt_handled:
                    self.dialect.do_execute_no_params(
                        cursor, str_statement, context
                    )
            else:
                effective_parameters = cast(
                    "_CoreSingleExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_execute:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_execute(
                        cursor, str_statement, effective_parameters, context
                    )
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1960: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8f25d540>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8fca4aa0>
    def do_execute(self, cursor, statement, parameters, context=None):
>       cursor.execute(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: user.username
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:924: IntegrityError
The above exception was the direct cause of the following exception:
self = <tests.test_forms.TestPinnedCoprsForm object at 0x7fff90dbd280>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1233: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1960: in _exec_single_context
    self.dialect.do_execute(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8f25d540>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8fca4aa0>
    def do_execute(self, cursor, statement, parameters, context=None):
>       cursor.execute(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: user.username
E       [SQL: INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)]
E       [parameters: ('user1', 0, 1, None)]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:924: IntegrityError
_____________ ERROR at teardown of TestPinnedCoprsForm.test_limit ______________
self = <tests.test_forms.TestPinnedCoprsForm object at 0x7fff90dbd280>
method = <bound method TestPinnedCoprsForm.test_limit of <tests.test_forms.TestPinnedCoprsForm object at 0x7fff90dbd280>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
___________ ERROR at setup of TestPinnedCoprsForm.test_unique_coprs ____________
self = <sqlalchemy.engine.base.Connection object at 0x7fff8fc228a0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8fc21490>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff903111c0>
parameters = [('user1', 0, 1, None)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
                    self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
                    )
            elif not effective_parameters and context.no_parameters:
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_execute_no_params:
                        if fn(cursor, str_statement, context):
                            evt_handled = True
                            break
                if not evt_handled:
                    self.dialect.do_execute_no_params(
                        cursor, str_statement, context
                    )
            else:
                effective_parameters = cast(
                    "_CoreSingleExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_execute:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_execute(
                        cursor, str_statement, effective_parameters, context
                    )
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1960: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff90015940>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8fc21490>
    def do_execute(self, cursor, statement, parameters, context=None):
>       cursor.execute(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: user.username
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:924: IntegrityError
The above exception was the direct cause of the following exception:
self = <tests.test_forms.TestPinnedCoprsForm object at 0x7fff90dbe030>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1233: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1960: in _exec_single_context
    self.dialect.do_execute(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff90015940>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8fc21490>
    def do_execute(self, cursor, statement, parameters, context=None):
>       cursor.execute(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: user.username
E       [SQL: INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)]
E       [parameters: ('user1', 0, 1, None)]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:924: IntegrityError
__________ ERROR at teardown of TestPinnedCoprsForm.test_unique_coprs __________
self = <tests.test_forms.TestPinnedCoprsForm object at 0x7fff90dbe030>
method = <bound method TestPinnedCoprsForm.test_unique_coprs of <tests.test_forms.TestPinnedCoprsForm object at 0x7fff90dbe030>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
__________ ERROR at setup of TestPinnedCoprsForm.test_invalid_choice ___________
self = <sqlalchemy.engine.base.Connection object at 0x7fff8f90fc80>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8f90f3e0>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff903111c0>
parameters = [('user1', 0, 1, None)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
                    self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
                    )
            elif not effective_parameters and context.no_parameters:
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_execute_no_params:
                        if fn(cursor, str_statement, context):
                            evt_handled = True
                            break
                if not evt_handled:
                    self.dialect.do_execute_no_params(
                        cursor, str_statement, context
                    )
            else:
                effective_parameters = cast(
                    "_CoreSingleExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_execute:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_execute(
                        cursor, str_statement, effective_parameters, context
                    )
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1960: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8faa6140>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8f90f3e0>
    def do_execute(self, cursor, statement, parameters, context=None):
>       cursor.execute(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: user.username
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:924: IntegrityError
The above exception was the direct cause of the following exception:
self = <tests.test_forms.TestPinnedCoprsForm object at 0x7fff90dbc110>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1233: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1960: in _exec_single_context
    self.dialect.do_execute(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8faa6140>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8f90f3e0>
    def do_execute(self, cursor, statement, parameters, context=None):
>       cursor.execute(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: user.username
E       [SQL: INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)]
E       [parameters: ('user1', 0, 1, None)]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:924: IntegrityError
_________ ERROR at teardown of TestPinnedCoprsForm.test_invalid_choice _________
self = <tests.test_forms.TestPinnedCoprsForm object at 0x7fff90dbc110>
method = <bound method TestPinnedCoprsForm.test_invalid_choice of <tests.test_forms.TestPinnedCoprsForm object at 0x7fff90dbc110>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
______ ERROR at teardown of TestCreateModuleForm.test_successful_validate ______
self = <tests.test_forms.TestCreateModuleForm object at 0x7fff90dbcdd0>
method = <bound method TestCreateModuleForm.test_successful_validate of <tests.test_forms.TestCreateModuleForm object at 0x7fff90dbcdd0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
_________ ERROR at teardown of TestCreateModuleForm.test_unique_names __________
self = <tests.test_forms.TestCreateModuleForm object at 0x7fff90dbcf50>
method = <bound method TestCreateModuleForm.test_unique_names of <tests.test_forms.TestCreateModuleForm object at 0x7fff90dbcf50>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
_____ ERROR at teardown of TestCreateModuleForm.test_profile_name_required _____
self = <tests.test_forms.TestCreateModuleForm object at 0x7fff90dbc410>
method = <function TestCreateModuleForm.test_profile_name_required at 0x7fff90d20c20>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
___________ ERROR at teardown of TestHelpers.test_guess_package_name ___________
self = <tests.test_helpers.TestHelpers object at 0x7fff90dbfb90>
method = <bound method TestHelpers.test_guess_package_name of <tests.test_helpers.TestHelpers object at 0x7fff90dbfb90>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
___________ ERROR at teardown of TestHelpers.test_generate_repo_url ____________
self = <tests.test_helpers.TestHelpers object at 0x7fff90dbe9f0>
method = <bound method TestHelpers.test_generate_repo_url of <tests.test_helpers.TestHelpers object at 0x7fff90dbe9f0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
________ ERROR at teardown of TestHelpers.test_fix_protocol_for_backend ________
self = <tests.test_helpers.TestHelpers object at 0x7fff90dbec00>
method = <bound method TestHelpers.test_fix_protocol_for_backend of <tests.test_helpers.TestHelpers object at 0x7fff90dbec00>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
_______ ERROR at teardown of TestHelpers.test_fix_protocol_for_frontend ________
self = <tests.test_helpers.TestHelpers object at 0x7fff90dbee40>
method = <bound method TestHelpers.test_fix_protocol_for_frontend of <tests.test_helpers.TestHelpers object at 0x7fff90dbee40>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
__________ ERROR at teardown of TestHelpers.test_pre_process_repo_url __________
self = <tests.test_helpers.TestHelpers object at 0x7fff90dbefc0>
method = <bound method TestHelpers.test_pre_process_repo_url of <tests.test_helpers.TestHelpers object at 0x7fff90dbefc0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
___________ ERROR at teardown of TestHelpers.test_parse_repo_params ____________
self = <tests.test_helpers.TestHelpers object at 0x7fff90dbf0e0>
method = <bound method TestHelpers.test_parse_repo_params of <tests.test_helpers.TestHelpers object at 0x7fff90dbf0e0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
______ ERROR at teardown of TestHelpers.test_parse_repo_params_pass_keys _______
self = <tests.test_helpers.TestHelpers object at 0x7fff90dbf230>
method = <bound method TestHelpers.test_parse_repo_params_pass_keys of <tests.test_helpers.TestHelpers object at 0x7fff90dbf230>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
______________ ERROR at teardown of TestHelpers.test_subdir_match ______________
self = <tests.test_helpers.TestHelpers object at 0x7fff90dbf3e0>
method = <bound method TestHelpers.test_subdir_match of <tests.test_helpers.TestHelpers object at 0x7fff90dbf3e0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
____________ ERROR at teardown of TestHelpers.test_raw_patch_parse _____________
self = <tests.test_helpers.TestHelpers object at 0x7fff90dbf590>
method = <bound method TestHelpers.test_raw_patch_parse of <tests.test_helpers.TestHelpers object at 0x7fff90dbf590>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
----------------------------- Captured stdout call -----------------------------
{'frontend/coprs_frontend/coprs/forms.py'}
{'frontend/coprs_frontend/coprs/static/css/custom-styles.css', 'frontend/coprs_frontend/coprs/forms.py'}
{'frontend/coprs_frontend/coprs/static/css/custom-styles.css', 'frontend/coprs_frontend/coprs/templates/_helpers.html', 'frontend/coprs_frontend/coprs/forms.py'}
{'frontend/coprs_frontend/alembic/schema/versions/code4beaf000_add_indexes3.py'}
{'frontend/coprs_frontend/alembic/schema/versions/code4beaf000_add_indexes3.py', 'frontend/coprs_frontend/coprs/models.py'}
________ ERROR at teardown of TestHelpers.test_pagure_html_diff_parser _________
self = <tests.test_helpers.TestHelpers object at 0x7fff90dbf920>
method = <bound method TestHelpers.test_pagure_html_diff_parser of <tests.test_helpers.TestHelpers object at 0x7fff90dbf920>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
_____________ ERROR at setup of TestHelpers.test_orm_object_clone ______________
self = <sqlalchemy.engine.base.Connection object at 0x7fff8fc338c0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8fc33710>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff90310da0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8f9e9240>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8fc33710>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
The above exception was the direct cause of the following exception:
self = <tests.test_helpers.TestHelpers object at 0x7fff90dbe180>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8f9e9240>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8fc33710>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
E       [SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
E       [parameters: [('f18',), ('fedora-17',), ('master',)]]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
____________ ERROR at teardown of TestHelpers.test_orm_object_clone ____________
self = <tests.test_helpers.TestHelpers object at 0x7fff90dbe180>
method = <bound method TestHelpers.test_orm_object_clone of <tests.test_helpers.TestHelpers object at 0x7fff90dbe180>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
____________ ERROR at setup of TestHelpers.test_being_server_admin _____________
self = <sqlalchemy.engine.base.Connection object at 0x7fff8fbefa10>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8fbd2cf0>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff90310da0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8f1c5540>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8fbd2cf0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
The above exception was the direct cause of the following exception:
self = <tests.test_helpers.TestHelpers object at 0x7fff90dbe690>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8f1c5540>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8fbd2cf0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
E       [SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
E       [parameters: [('f18',), ('fedora-17',), ('master',)]]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
___________ ERROR at teardown of TestHelpers.test_being_server_admin ___________
self = <tests.test_helpers.TestHelpers object at 0x7fff90dbe690>
method = <bound method TestHelpers.test_being_server_admin of <tests.test_helpers.TestHelpers object at 0x7fff90dbe690>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
______________ ERROR at setup of TestLoggingRequestUser.test_anon ______________
self = <sqlalchemy.engine.base.Connection object at 0x7fff8fc33650>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8fcb7770>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff903111c0>
parameters = [('user1', 0, 1, None)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
                    self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
                    )
            elif not effective_parameters and context.no_parameters:
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_execute_no_params:
                        if fn(cursor, str_statement, context):
                            evt_handled = True
                            break
                if not evt_handled:
                    self.dialect.do_execute_no_params(
                        cursor, str_statement, context
                    )
            else:
                effective_parameters = cast(
                    "_CoreSingleExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_execute:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_execute(
                        cursor, str_statement, effective_parameters, context
                    )
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1960: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8f810440>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8fcb7770>
    def do_execute(self, cursor, statement, parameters, context=None):
>       cursor.execute(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: user.username
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:924: IntegrityError
The above exception was the direct cause of the following exception:
self = <tests.test_logging.TestLoggingRequestUser testMethod=test_anon>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1233: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1960: in _exec_single_context
    self.dialect.do_execute(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8f810440>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8fcb7770>
    def do_execute(self, cursor, statement, parameters, context=None):
>       cursor.execute(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: user.username
E       [SQL: INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)]
E       [parameters: ('user1', 0, 1, None)]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:924: IntegrityError
____________ ERROR at teardown of TestLoggingRequestUser.test_anon _____________
self = <tests.test_logging.TestLoggingRequestUser testMethod=test_anon>
method = <bound method TestLoggingRequestUser.test_anon of <tests.test_logging.TestLoggingRequestUser testMethod=test_anon>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
_____________ ERROR at setup of TestLoggingRequestUser.test_server _____________
self = <sqlalchemy.engine.base.Connection object at 0x7fff8fcb59d0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8fcb5880>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff903111c0>
parameters = [('user1', 0, 1, None)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
                    self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
                    )
            elif not effective_parameters and context.no_parameters:
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_execute_no_params:
                        if fn(cursor, str_statement, context):
                            evt_handled = True
                            break
                if not evt_handled:
                    self.dialect.do_execute_no_params(
                        cursor, str_statement, context
                    )
            else:
                effective_parameters = cast(
                    "_CoreSingleExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_execute:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_execute(
                        cursor, str_statement, effective_parameters, context
                    )
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1960: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8f3f64c0>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8fcb5880>
    def do_execute(self, cursor, statement, parameters, context=None):
>       cursor.execute(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: user.username
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:924: IntegrityError
The above exception was the direct cause of the following exception:
self = <tests.test_logging.TestLoggingRequestUser testMethod=test_server>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1233: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1960: in _exec_single_context
    self.dialect.do_execute(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8f3f64c0>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8fcb5880>
    def do_execute(self, cursor, statement, parameters, context=None):
>       cursor.execute(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: user.username
E       [SQL: INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)]
E       [parameters: ('user1', 0, 1, None)]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:924: IntegrityError
___________ ERROR at teardown of TestLoggingRequestUser.test_server ____________
self = <tests.test_logging.TestLoggingRequestUser testMethod=test_server>
method = <bound method TestLoggingRequestUser.test_server of <tests.test_logging.TestLoggingRequestUser testMethod=test_server>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
______________ ERROR at setup of TestLoggingRequestUser.test_user ______________
self = <sqlalchemy.engine.base.Connection object at 0x7fff8fc18dd0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8fc18740>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff903111c0>
parameters = [('user1', 0, 1, None)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
                    self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
                    )
            elif not effective_parameters and context.no_parameters:
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_execute_no_params:
                        if fn(cursor, str_statement, context):
                            evt_handled = True
                            break
                if not evt_handled:
                    self.dialect.do_execute_no_params(
                        cursor, str_statement, context
                    )
            else:
                effective_parameters = cast(
                    "_CoreSingleExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_execute:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_execute(
                        cursor, str_statement, effective_parameters, context
                    )
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1960: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8ee7e2c0>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8fc18740>
    def do_execute(self, cursor, statement, parameters, context=None):
>       cursor.execute(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: user.username
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:924: IntegrityError
The above exception was the direct cause of the following exception:
self = <tests.test_logging.TestLoggingRequestUser testMethod=test_user>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1233: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1960: in _exec_single_context
    self.dialect.do_execute(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8ee7e2c0>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8fc18740>
    def do_execute(self, cursor, statement, parameters, context=None):
>       cursor.execute(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: user.username
E       [SQL: INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)]
E       [parameters: ('user1', 0, 1, None)]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:924: IntegrityError
____________ ERROR at teardown of TestLoggingRequestUser.test_user _____________
self = <tests.test_logging.TestLoggingRequestUser testMethod=test_user>
method = <bound method TestLoggingRequestUser.test_user of <tests.test_logging.TestLoggingRequestUser testMethod=test_user>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
____________ ERROR at setup of TestLoggingUsersLogic.test_user_get _____________
self = <sqlalchemy.engine.base.Connection object at 0x7fff8fc1b1a0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8fc19c40>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff903111c0>
parameters = [('user1', 0, 1, None)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
                    self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
                    )
            elif not effective_parameters and context.no_parameters:
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_execute_no_params:
                        if fn(cursor, str_statement, context):
                            evt_handled = True
                            break
                if not evt_handled:
                    self.dialect.do_execute_no_params(
                        cursor, str_statement, context
                    )
            else:
                effective_parameters = cast(
                    "_CoreSingleExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_execute:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_execute(
                        cursor, str_statement, effective_parameters, context
                    )
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1960: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8ff625c0>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8fc19c40>
    def do_execute(self, cursor, statement, parameters, context=None):
>       cursor.execute(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: user.username
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:924: IntegrityError
The above exception was the direct cause of the following exception:
self = <tests.test_logging.TestLoggingUsersLogic object at 0x7fff90c348c0>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1233: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1960: in _exec_single_context
    self.dialect.do_execute(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8ff625c0>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8fc19c40>
    def do_execute(self, cursor, statement, parameters, context=None):
>       cursor.execute(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: user.username
E       [SQL: INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)]
E       [parameters: ('user1', 0, 1, None)]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:924: IntegrityError
___________ ERROR at teardown of TestLoggingUsersLogic.test_user_get ___________
self = <tests.test_logging.TestLoggingUsersLogic object at 0x7fff90c348c0>
method = <bound method TestLoggingUsersLogic.test_user_get of <tests.test_logging.TestLoggingUsersLogic object at 0x7fff90c348c0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
____ ERROR at setup of TestLoggingUsersLogic.test_raise_if_cant_update_copr ____
self = <sqlalchemy.engine.base.Connection object at 0x7fff8fc7d850>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8fc7ca70>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff903111c0>
parameters = [('user1', 0, 1, None)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
                    self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
                    )
            elif not effective_parameters and context.no_parameters:
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_execute_no_params:
                        if fn(cursor, str_statement, context):
                            evt_handled = True
                            break
                if not evt_handled:
                    self.dialect.do_execute_no_params(
                        cursor, str_statement, context
                    )
            else:
                effective_parameters = cast(
                    "_CoreSingleExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_execute:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_execute(
                        cursor, str_statement, effective_parameters, context
                    )
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1960: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8ee7e440>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8fc7ca70>
    def do_execute(self, cursor, statement, parameters, context=None):
>       cursor.execute(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: user.username
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:924: IntegrityError
The above exception was the direct cause of the following exception:
self = <tests.test_logging.TestLoggingUsersLogic object at 0x7fff90c34a70>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1233: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1960: in _exec_single_context
    self.dialect.do_execute(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8ee7e440>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8fc7ca70>
    def do_execute(self, cursor, statement, parameters, context=None):
>       cursor.execute(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: user.username
E       [SQL: INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)]
E       [parameters: ('user1', 0, 1, None)]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:924: IntegrityError
__ ERROR at teardown of TestLoggingUsersLogic.test_raise_if_cant_update_copr ___
self = <tests.test_logging.TestLoggingUsersLogic object at 0x7fff90c34a70>
method = <bound method TestLoggingUsersLogic.test_raise_if_cant_update_copr of <tests.test_logging.TestLoggingUsersLogic object at 0x7fff90c34a70>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
___ ERROR at setup of TestLoggingUsersLogic.test_raise_if_cant_build_in_copr ___
self = <sqlalchemy.engine.base.Connection object at 0x7fff8fc508f0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8fc53dd0>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff903111c0>
parameters = [('user1', 0, 1, None)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
                    self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
                    )
            elif not effective_parameters and context.no_parameters:
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_execute_no_params:
                        if fn(cursor, str_statement, context):
                            evt_handled = True
                            break
                if not evt_handled:
                    self.dialect.do_execute_no_params(
                        cursor, str_statement, context
                    )
            else:
                effective_parameters = cast(
                    "_CoreSingleExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_execute:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_execute(
                        cursor, str_statement, effective_parameters, context
                    )
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1960: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8faa1ac0>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8fc53dd0>
    def do_execute(self, cursor, statement, parameters, context=None):
>       cursor.execute(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: user.username
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:924: IntegrityError
The above exception was the direct cause of the following exception:
self = <tests.test_logging.TestLoggingUsersLogic object at 0x7fff90c34c50>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1233: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1960: in _exec_single_context
    self.dialect.do_execute(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8faa1ac0>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8fc53dd0>
    def do_execute(self, cursor, statement, parameters, context=None):
>       cursor.execute(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: user.username
E       [SQL: INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)]
E       [parameters: ('user1', 0, 1, None)]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:924: IntegrityError
_ ERROR at teardown of TestLoggingUsersLogic.test_raise_if_cant_build_in_copr __
self = <tests.test_logging.TestLoggingUsersLogic object at 0x7fff90c34c50>
method = <bound method TestLoggingUsersLogic.test_raise_if_cant_build_in_copr of <tests.test_logging.TestLoggingUsersLogic object at 0x7fff90c34c50>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
______ ERROR at setup of TestLoggingUsersLogic.test_raise_if_not_in_group ______
self = <sqlalchemy.engine.base.Connection object at 0x7fff8fc48770>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8fc14620>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff903111c0>
parameters = [('user1', 0, 1, None)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
                    self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
                    )
            elif not effective_parameters and context.no_parameters:
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_execute_no_params:
                        if fn(cursor, str_statement, context):
                            evt_handled = True
                            break
                if not evt_handled:
                    self.dialect.do_execute_no_params(
                        cursor, str_statement, context
                    )
            else:
                effective_parameters = cast(
                    "_CoreSingleExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_execute:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_execute(
                        cursor, str_statement, effective_parameters, context
                    )
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1960: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8f25e340>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8fc14620>
    def do_execute(self, cursor, statement, parameters, context=None):
>       cursor.execute(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: user.username
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:924: IntegrityError
The above exception was the direct cause of the following exception:
self = <tests.test_logging.TestLoggingUsersLogic object at 0x7fff90c34e30>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1233: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1960: in _exec_single_context
    self.dialect.do_execute(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8f25e340>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8fc14620>
    def do_execute(self, cursor, statement, parameters, context=None):
>       cursor.execute(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: user.username
E       [SQL: INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)]
E       [parameters: ('user1', 0, 1, None)]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:924: IntegrityError
____ ERROR at teardown of TestLoggingUsersLogic.test_raise_if_not_in_group _____
self = <tests.test_logging.TestLoggingUsersLogic object at 0x7fff90c34e30>
method = <bound method TestLoggingUsersLogic.test_raise_if_not_in_group of <tests.test_logging.TestLoggingUsersLogic object at 0x7fff90c34e30>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
________ ERROR at setup of TestLoggingUsersLogic.test_delete_user_data _________
self = <sqlalchemy.engine.base.Connection object at 0x7fff8fc19f10>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8fc1ba10>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff903111c0>
parameters = [('user1', 0, 1, None)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
                    self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
                    )
            elif not effective_parameters and context.no_parameters:
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_execute_no_params:
                        if fn(cursor, str_statement, context):
                            evt_handled = True
                            break
                if not evt_handled:
                    self.dialect.do_execute_no_params(
                        cursor, str_statement, context
                    )
            else:
                effective_parameters = cast(
                    "_CoreSingleExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_execute:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_execute(
                        cursor, str_statement, effective_parameters, context
                    )
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1960: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8ff60640>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8fc1ba10>
    def do_execute(self, cursor, statement, parameters, context=None):
>       cursor.execute(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: user.username
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:924: IntegrityError
The above exception was the direct cause of the following exception:
self = <tests.test_logging.TestLoggingUsersLogic object at 0x7fff90c35040>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1233: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1960: in _exec_single_context
    self.dialect.do_execute(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8ff60640>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8fc1ba10>
    def do_execute(self, cursor, statement, parameters, context=None):
>       cursor.execute(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: user.username
E       [SQL: INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)]
E       [parameters: ('user1', 0, 1, None)]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:924: IntegrityError
_______ ERROR at teardown of TestLoggingUsersLogic.test_delete_user_data _______
self = <tests.test_logging.TestLoggingUsersLogic object at 0x7fff90c35040>
method = <bound method TestLoggingUsersLogic.test_delete_user_data of <tests.test_logging.TestLoggingUsersLogic object at 0x7fff90c35040>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
_______ ERROR at setup of TestLoggingUsersLogic.test_create_user_wrapper _______
self = <sqlalchemy.engine.base.Connection object at 0x7fff8fc300e0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8fc304a0>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff903111c0>
parameters = [('user1', 0, 1, None)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
                    self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
                    )
            elif not effective_parameters and context.no_parameters:
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_execute_no_params:
                        if fn(cursor, str_statement, context):
                            evt_handled = True
                            break
                if not evt_handled:
                    self.dialect.do_execute_no_params(
                        cursor, str_statement, context
                    )
            else:
                effective_parameters = cast(
                    "_CoreSingleExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_execute:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_execute(
                        cursor, str_statement, effective_parameters, context
                    )
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1960: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8e6c92c0>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8fc304a0>
    def do_execute(self, cursor, statement, parameters, context=None):
>       cursor.execute(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: user.username
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:924: IntegrityError
The above exception was the direct cause of the following exception:
self = <tests.test_logging.TestLoggingUsersLogic object at 0x7fff90c351f0>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1233: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1960: in _exec_single_context
    self.dialect.do_execute(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8e6c92c0>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8fc304a0>
    def do_execute(self, cursor, statement, parameters, context=None):
>       cursor.execute(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: user.username
E       [SQL: INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)]
E       [parameters: ('user1', 0, 1, None)]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:924: IntegrityError
_____ ERROR at teardown of TestLoggingUsersLogic.test_create_user_wrapper ______
self = <tests.test_logging.TestLoggingUsersLogic object at 0x7fff90c351f0>
method = <bound method TestLoggingUsersLogic.test_create_user_wrapper of <tests.test_logging.TestLoggingUsersLogic object at 0x7fff90c351f0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
________ ERROR at setup of TestLoggingUsersLogic.test_user_data_dumper _________
self = <sqlalchemy.engine.base.Connection object at 0x7fff8fca7770>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8fca4ef0>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff903111c0>
parameters = [('user1', 0, 1, None)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
                    self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
                    )
            elif not effective_parameters and context.no_parameters:
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_execute_no_params:
                        if fn(cursor, str_statement, context):
                            evt_handled = True
                            break
                if not evt_handled:
                    self.dialect.do_execute_no_params(
                        cursor, str_statement, context
                    )
            else:
                effective_parameters = cast(
                    "_CoreSingleExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_execute:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_execute(
                        cursor, str_statement, effective_parameters, context
                    )
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1960: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8f32f0c0>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8fca4ef0>
    def do_execute(self, cursor, statement, parameters, context=None):
>       cursor.execute(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: user.username
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:924: IntegrityError
The above exception was the direct cause of the following exception:
self = <tests.test_logging.TestLoggingUsersLogic object at 0x7fff90c353a0>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1233: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1960: in _exec_single_context
    self.dialect.do_execute(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8f32f0c0>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8fca4ef0>
    def do_execute(self, cursor, statement, parameters, context=None):
>       cursor.execute(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: user.username
E       [SQL: INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)]
E       [parameters: ('user1', 0, 1, None)]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:924: IntegrityError
_______ ERROR at teardown of TestLoggingUsersLogic.test_user_data_dumper _______
self = <tests.test_logging.TestLoggingUsersLogic object at 0x7fff90c353a0>
method = <bound method TestLoggingUsersLogic.test_user_data_dumper of <tests.test_logging.TestLoggingUsersLogic object at 0x7fff90c353a0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
________ ERROR at setup of TestLoggingUserGeneral.test_delete_user_data ________
self = <sqlalchemy.engine.base.Connection object at 0x7fff8fc62090>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8fc60830>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff903111c0>
parameters = [('user1', 0, 1, None)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
                    self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
                    )
            elif not effective_parameters and context.no_parameters:
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_execute_no_params:
                        if fn(cursor, str_statement, context):
                            evt_handled = True
                            break
                if not evt_handled:
                    self.dialect.do_execute_no_params(
                        cursor, str_statement, context
                    )
            else:
                effective_parameters = cast(
                    "_CoreSingleExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_execute:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_execute(
                        cursor, str_statement, effective_parameters, context
                    )
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1960: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8ee7d9c0>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8fc60830>
    def do_execute(self, cursor, statement, parameters, context=None):
>       cursor.execute(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: user.username
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:924: IntegrityError
The above exception was the direct cause of the following exception:
self = <tests.test_logging.TestLoggingUserGeneral object at 0x7fff90c35e20>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1233: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1960: in _exec_single_context
    self.dialect.do_execute(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8ee7d9c0>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8fc60830>
    def do_execute(self, cursor, statement, parameters, context=None):
>       cursor.execute(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: user.username
E       [SQL: INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)]
E       [parameters: ('user1', 0, 1, None)]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:924: IntegrityError
______ ERROR at teardown of TestLoggingUserGeneral.test_delete_user_data _______
self = <tests.test_logging.TestLoggingUserGeneral object at 0x7fff90c35e20>
method = <bound method TestLoggingUserGeneral.test_delete_user_data of <tests.test_logging.TestLoggingUserGeneral object at 0x7fff90c35e20>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
__ ERROR at setup of TestLoggingCoprPermissionsLogic.test_update_permissions ___
self = <sqlalchemy.engine.base.Connection object at 0x7fff8fc62660>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8fc63350>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff903111c0>
parameters = [('user1', 0, 1, None)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
                    self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
                    )
            elif not effective_parameters and context.no_parameters:
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_execute_no_params:
                        if fn(cursor, str_statement, context):
                            evt_handled = True
                            break
                if not evt_handled:
                    self.dialect.do_execute_no_params(
                        cursor, str_statement, context
                    )
            else:
                effective_parameters = cast(
                    "_CoreSingleExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_execute:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_execute(
                        cursor, str_statement, effective_parameters, context
                    )
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1960: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8f3a5f40>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8fc63350>
    def do_execute(self, cursor, statement, parameters, context=None):
>       cursor.execute(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: user.username
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:924: IntegrityError
The above exception was the direct cause of the following exception:
self = <tests.test_logging.TestLoggingCoprPermissionsLogic object at 0x7fff90c36750>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1233: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1960: in _exec_single_context
    self.dialect.do_execute(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8f3a5f40>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8fc63350>
    def do_execute(self, cursor, statement, parameters, context=None):
>       cursor.execute(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: user.username
E       [SQL: INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)]
E       [parameters: ('user1', 0, 1, None)]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:924: IntegrityError
_ ERROR at teardown of TestLoggingCoprPermissionsLogic.test_update_permissions _
self = <tests.test_logging.TestLoggingCoprPermissionsLogic object at 0x7fff90c36750>
method = <bound method TestLoggingCoprPermissionsLogic.test_update_permissions of <tests.test_logging.TestLoggingCoprPermissionsLogic object at 0x7fff90c36750>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
_ ERROR at setup of TestLoggingCoprPermissionsLogic.test_update_permissions_by_applier _
self = <sqlalchemy.engine.base.Connection object at 0x7fff8fc81850>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8fc82840>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff903111c0>
parameters = [('user1', 0, 1, None)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
                    self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
                    )
            elif not effective_parameters and context.no_parameters:
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_execute_no_params:
                        if fn(cursor, str_statement, context):
                            evt_handled = True
                            break
                if not evt_handled:
                    self.dialect.do_execute_no_params(
                        cursor, str_statement, context
                    )
            else:
                effective_parameters = cast(
                    "_CoreSingleExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_execute:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_execute(
                        cursor, str_statement, effective_parameters, context
                    )
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1960: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8faa1940>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8fc82840>
    def do_execute(self, cursor, statement, parameters, context=None):
>       cursor.execute(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: user.username
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:924: IntegrityError
The above exception was the direct cause of the following exception:
self = <tests.test_logging.TestLoggingCoprPermissionsLogic object at 0x7fff90c36960>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1233: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1960: in _exec_single_context
    self.dialect.do_execute(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8faa1940>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8fc82840>
    def do_execute(self, cursor, statement, parameters, context=None):
>       cursor.execute(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: user.username
E       [SQL: INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)]
E       [parameters: ('user1', 0, 1, None)]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:924: IntegrityError
_ ERROR at teardown of TestLoggingCoprPermissionsLogic.test_update_permissions_by_applier _
self = <tests.test_logging.TestLoggingCoprPermissionsLogic object at 0x7fff90c36960>
method = <bound method TestLoggingCoprPermissionsLogic.test_update_permissions_by_applier of <tests.test_logging.TestLoggingCoprPermissionsLogic object at 0x7fff90c36960>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
____ ERROR at setup of TestLoggingCoprPermissionsLogic.test_set_permissions ____
self = <sqlalchemy.engine.base.Connection object at 0x7fff8fbdea50>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8fbdf5c0>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff903111c0>
parameters = [('user1', 0, 1, None)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
                    self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
                    )
            elif not effective_parameters and context.no_parameters:
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_execute_no_params:
                        if fn(cursor, str_statement, context):
                            evt_handled = True
                            break
                if not evt_handled:
                    self.dialect.do_execute_no_params(
                        cursor, str_statement, context
                    )
            else:
                effective_parameters = cast(
                    "_CoreSingleExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_execute:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_execute(
                        cursor, str_statement, effective_parameters, context
                    )
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1960: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8e6ca540>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8fbdf5c0>
    def do_execute(self, cursor, statement, parameters, context=None):
>       cursor.execute(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: user.username
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:924: IntegrityError
The above exception was the direct cause of the following exception:
self = <tests.test_logging.TestLoggingCoprPermissionsLogic object at 0x7fff90c36b70>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1233: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1960: in _exec_single_context
    self.dialect.do_execute(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8e6ca540>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8fbdf5c0>
    def do_execute(self, cursor, statement, parameters, context=None):
>       cursor.execute(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: user.username
E       [SQL: INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)]
E       [parameters: ('user1', 0, 1, None)]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:924: IntegrityError
__ ERROR at teardown of TestLoggingCoprPermissionsLogic.test_set_permissions ___
self = <tests.test_logging.TestLoggingCoprPermissionsLogic object at 0x7fff90c36b70>
method = <bound method TestLoggingCoprPermissionsLogic.test_set_permissions of <tests.test_logging.TestLoggingCoprPermissionsLogic object at 0x7fff90c36b70>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
__ ERROR at setup of TestLoggingCoprPermissionsLogic.test_request_permission ___
self = <sqlalchemy.engine.base.Connection object at 0x7fff8fc274d0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8fc25cd0>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff903111c0>
parameters = [('user1', 0, 1, None)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
                    self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
                    )
            elif not effective_parameters and context.no_parameters:
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_execute_no_params:
                        if fn(cursor, str_statement, context):
                            evt_handled = True
                            break
                if not evt_handled:
                    self.dialect.do_execute_no_params(
                        cursor, str_statement, context
                    )
            else:
                effective_parameters = cast(
                    "_CoreSingleExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_execute:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_execute(
                        cursor, str_statement, effective_parameters, context
                    )
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1960: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8f9e8740>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8fc25cd0>
    def do_execute(self, cursor, statement, parameters, context=None):
>       cursor.execute(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: user.username
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:924: IntegrityError
The above exception was the direct cause of the following exception:
self = <tests.test_logging.TestLoggingCoprPermissionsLogic object at 0x7fff90c36d80>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1233: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1960: in _exec_single_context
    self.dialect.do_execute(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8f9e8740>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8fc25cd0>
    def do_execute(self, cursor, statement, parameters, context=None):
>       cursor.execute(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: user.username
E       [SQL: INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)]
E       [parameters: ('user1', 0, 1, None)]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:924: IntegrityError
_ ERROR at teardown of TestLoggingCoprPermissionsLogic.test_request_permission _
self = <tests.test_logging.TestLoggingCoprPermissionsLogic object at 0x7fff90c36d80>
method = <bound method TestLoggingCoprPermissionsLogic.test_request_permission of <tests.test_logging.TestLoggingCoprPermissionsLogic object at 0x7fff90c36d80>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
____________ ERROR at setup of TestLoggingAuth.test_create_or_login ____________
self = <sqlalchemy.engine.base.Connection object at 0x7fff8fc25280>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8fc244d0>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff903111c0>
parameters = [('user1', 0, 1, None)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
                    self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
                    )
            elif not effective_parameters and context.no_parameters:
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_execute_no_params:
                        if fn(cursor, str_statement, context):
                            evt_handled = True
                            break
                if not evt_handled:
                    self.dialect.do_execute_no_params(
                        cursor, str_statement, context
                    )
            else:
                effective_parameters = cast(
                    "_CoreSingleExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_execute:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_execute(
                        cursor, str_statement, effective_parameters, context
                    )
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1960: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8ec364c0>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8fc244d0>
    def do_execute(self, cursor, statement, parameters, context=None):
>       cursor.execute(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: user.username
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:924: IntegrityError
The above exception was the direct cause of the following exception:
self = <tests.test_logging.TestLoggingAuth object at 0x7fff90c37980>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1233: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1960: in _exec_single_context
    self.dialect.do_execute(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8ec364c0>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8fc244d0>
    def do_execute(self, cursor, statement, parameters, context=None):
>       cursor.execute(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: user.username
E       [SQL: INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)]
E       [parameters: ('user1', 0, 1, None)]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:924: IntegrityError
__________ ERROR at teardown of TestLoggingAuth.test_create_or_login ___________
self = <tests.test_logging.TestLoggingAuth object at 0x7fff90c37980>
method = <bound method TestLoggingAuth.test_create_or_login of <tests.test_logging.TestLoggingAuth object at 0x7fff90c37980>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
________________ ERROR at setup of TestLoggingAuth.test_logout _________________
self = <sqlalchemy.engine.base.Connection object at 0x7fff8fc3e930>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8fc3d3d0>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff903111c0>
parameters = [('user1', 0, 1, None)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
                    self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
                    )
            elif not effective_parameters and context.no_parameters:
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_execute_no_params:
                        if fn(cursor, str_statement, context):
                            evt_handled = True
                            break
                if not evt_handled:
                    self.dialect.do_execute_no_params(
                        cursor, str_statement, context
                    )
            else:
                effective_parameters = cast(
                    "_CoreSingleExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_execute:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_execute(
                        cursor, str_statement, effective_parameters, context
                    )
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1960: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8ea141c0>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8fc3d3d0>
    def do_execute(self, cursor, statement, parameters, context=None):
>       cursor.execute(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: user.username
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:924: IntegrityError
The above exception was the direct cause of the following exception:
self = <tests.test_logging.TestLoggingAuth object at 0x7fff90c37b30>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1233: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1960: in _exec_single_context
    self.dialect.do_execute(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8ea141c0>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8fc3d3d0>
    def do_execute(self, cursor, statement, parameters, context=None):
>       cursor.execute(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: user.username
E       [SQL: INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)]
E       [parameters: ('user1', 0, 1, None)]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:924: IntegrityError
_______________ ERROR at teardown of TestLoggingAuth.test_logout _______________
self = <tests.test_logging.TestLoggingAuth object at 0x7fff90c37b30>
method = <bound method TestLoggingAuth.test_logout of <tests.test_logging.TestLoggingAuth object at 0x7fff90c37b30>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
______ ERROR at setup of TestLoggingAuth.test_api_login_required_invalid _______
self = <sqlalchemy.engine.base.Connection object at 0x7fff8fc6eb40>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8fc6d3d0>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff90310da0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8e8a1940>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8fc6d3d0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
The above exception was the direct cause of the following exception:
self = <tests.test_logging.TestLoggingAuth object at 0x7fff90c37ce0>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8e8a1940>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8fc6d3d0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
E       [SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
E       [parameters: [('f18',), ('fedora-17',), ('master',)]]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
_____ ERROR at teardown of TestLoggingAuth.test_api_login_required_invalid _____
self = <tests.test_logging.TestLoggingAuth object at 0x7fff90c37ce0>
method = <bound method TestLoggingAuth.test_api_login_required_invalid of <tests.test_logging.TestLoggingAuth object at 0x7fff90c37ce0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
_____ ERROR at setup of TestLoggingUsingAdminPermissions.test_update_copr ______
self = <sqlalchemy.engine.base.Connection object at 0x7fff8fbdf9b0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8fbddf10>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff903111c0>
parameters = [('user1', 0, 1, None)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
                    self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
                    )
            elif not effective_parameters and context.no_parameters:
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_execute_no_params:
                        if fn(cursor, str_statement, context):
                            evt_handled = True
                            break
                if not evt_handled:
                    self.dialect.do_execute_no_params(
                        cursor, str_statement, context
                    )
            else:
                effective_parameters = cast(
                    "_CoreSingleExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_execute:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_execute(
                        cursor, str_statement, effective_parameters, context
                    )
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1960: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8fdc7640>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8fbddf10>
    def do_execute(self, cursor, statement, parameters, context=None):
>       cursor.execute(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: user.username
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:924: IntegrityError
The above exception was the direct cause of the following exception:
self = <tests.test_logging.TestLoggingUsingAdminPermissions object at 0x7fff90c37950>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1233: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1960: in _exec_single_context
    self.dialect.do_execute(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8fdc7640>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8fbddf10>
    def do_execute(self, cursor, statement, parameters, context=None):
>       cursor.execute(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: user.username
E       [SQL: INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)]
E       [parameters: ('user1', 0, 1, None)]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:924: IntegrityError
____ ERROR at teardown of TestLoggingUsingAdminPermissions.test_update_copr ____
self = <tests.test_logging.TestLoggingUsingAdminPermissions object at 0x7fff90c37950>
method = <bound method TestLoggingUsingAdminPermissions.test_update_copr of <tests.test_logging.TestLoggingUsingAdminPermissions object at 0x7fff90c37950>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
__ ERROR at setup of TestLoggingUsingAdminPermissions.test_update_copr_chroot __
self = <sqlalchemy.engine.base.Connection object at 0x7fff8fc60170>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8fc60c50>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff90310da0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8ea17ec0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8fc60c50>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
The above exception was the direct cause of the following exception:
self = <tests.test_logging.TestLoggingUsingAdminPermissions object at 0x7fff90c36720>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8ea17ec0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8fc60c50>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
E       [SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
E       [parameters: [('f18',), ('fedora-17',), ('master',)]]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
_ ERROR at teardown of TestLoggingUsingAdminPermissions.test_update_copr_chroot _
self = <tests.test_logging.TestLoggingUsingAdminPermissions object at 0x7fff90c36720>
method = <bound method TestLoggingUsingAdminPermissions.test_update_copr_chroot of <tests.test_logging.TestLoggingUsingAdminPermissions object at 0x7fff90c36720>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
_ ERROR at setup of TestLoggingUsingAdminPermissions.test_update_package_webui _
self = <sqlalchemy.engine.base.Connection object at 0x7fff8fc500e0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8fc52720>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff903111c0>
parameters = [('user1', 0, 1, None)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
                    self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
                    )
            elif not effective_parameters and context.no_parameters:
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_execute_no_params:
                        if fn(cursor, str_statement, context):
                            evt_handled = True
                            break
                if not evt_handled:
                    self.dialect.do_execute_no_params(
                        cursor, str_statement, context
                    )
            else:
                effective_parameters = cast(
                    "_CoreSingleExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_execute:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_execute(
                        cursor, str_statement, effective_parameters, context
                    )
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1960: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8f3a4cc0>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8fc52720>
    def do_execute(self, cursor, statement, parameters, context=None):
>       cursor.execute(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: user.username
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:924: IntegrityError
The above exception was the direct cause of the following exception:
self = <tests.test_logging.TestLoggingUsingAdminPermissions object at 0x7fff90ca4800>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1233: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1960: in _exec_single_context
    self.dialect.do_execute(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8f3a4cc0>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8fc52720>
    def do_execute(self, cursor, statement, parameters, context=None):
>       cursor.execute(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: user.username
E       [SQL: INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)]
E       [parameters: ('user1', 0, 1, None)]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:924: IntegrityError
_ ERROR at teardown of TestLoggingUsingAdminPermissions.test_update_package_webui _
self = <tests.test_logging.TestLoggingUsingAdminPermissions object at 0x7fff90ca4800>
method = <bound method TestLoggingUsingAdminPermissions.test_update_package_webui of <tests.test_logging.TestLoggingUsingAdminPermissions object at 0x7fff90ca4800>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
_ ERROR at setup of TestLoggingUsingAdminPermissions.test_update_package_apiv3 _
self = <sqlalchemy.engine.base.Connection object at 0x7fff8fbfa0c0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8fbf9cd0>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff903111c0>
parameters = [('user1', 0, 1, None)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
                    self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
                    )
            elif not effective_parameters and context.no_parameters:
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_execute_no_params:
                        if fn(cursor, str_statement, context):
                            evt_handled = True
                            break
                if not evt_handled:
                    self.dialect.do_execute_no_params(
                        cursor, str_statement, context
                    )
            else:
                effective_parameters = cast(
                    "_CoreSingleExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_execute:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_execute(
                        cursor, str_statement, effective_parameters, context
                    )
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1960: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8e8a3b40>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8fbf9cd0>
    def do_execute(self, cursor, statement, parameters, context=None):
>       cursor.execute(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: user.username
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:924: IntegrityError
The above exception was the direct cause of the following exception:
self = <tests.test_logging.TestLoggingUsingAdminPermissions object at 0x7fff90ca4b90>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1233: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1960: in _exec_single_context
    self.dialect.do_execute(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8e8a3b40>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8fbf9cd0>
    def do_execute(self, cursor, statement, parameters, context=None):
>       cursor.execute(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: user.username
E       [SQL: INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)]
E       [parameters: ('user1', 0, 1, None)]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:924: IntegrityError
_ ERROR at teardown of TestLoggingUsingAdminPermissions.test_update_package_apiv3 _
self = <tests.test_logging.TestLoggingUsingAdminPermissions object at 0x7fff90ca4b90>
method = <bound method TestLoggingUsingAdminPermissions.test_update_package_apiv3 of <tests.test_logging.TestLoggingUsingAdminPermissions object at 0x7fff90ca4b90>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
_________ ERROR at setup of TestMail.test_permissions_request_message __________
self = <sqlalchemy.engine.base.Connection object at 0x7fff8fc27920>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8fc32cf0>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff903111c0>
parameters = [('user1', 0, 1, None)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
                    self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
                    )
            elif not effective_parameters and context.no_parameters:
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_execute_no_params:
                        if fn(cursor, str_statement, context):
                            evt_handled = True
                            break
                if not evt_handled:
                    self.dialect.do_execute_no_params(
                        cursor, str_statement, context
                    )
            else:
                effective_parameters = cast(
                    "_CoreSingleExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_execute:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_execute(
                        cursor, str_statement, effective_parameters, context
                    )
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1960: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8f9eacc0>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8fc32cf0>
    def do_execute(self, cursor, statement, parameters, context=None):
>       cursor.execute(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: user.username
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:924: IntegrityError
The above exception was the direct cause of the following exception:
self = <tests.test_mail.TestMail object at 0x7fff90ca4ef0>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1233: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1960: in _exec_single_context
    self.dialect.do_execute(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8f9eacc0>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8fc32cf0>
    def do_execute(self, cursor, statement, parameters, context=None):
>       cursor.execute(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: user.username
E       [SQL: INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)]
E       [parameters: ('user1', 0, 1, None)]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:924: IntegrityError
________ ERROR at teardown of TestMail.test_permissions_request_message ________
self = <tests.test_mail.TestMail object at 0x7fff90ca4ef0>
method = <bound method TestMail.test_permissions_request_message of <tests.test_mail.TestMail object at 0x7fff90ca4ef0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
__________ ERROR at setup of TestMail.test_permissions_change_message __________
self = <sqlalchemy.engine.base.Connection object at 0x7fff90ca4d70>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8fbfbd10>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff903111c0>
parameters = [('user1', 0, 1, None)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
                    self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
                    )
            elif not effective_parameters and context.no_parameters:
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_execute_no_params:
                        if fn(cursor, str_statement, context):
                            evt_handled = True
                            break
                if not evt_handled:
                    self.dialect.do_execute_no_params(
                        cursor, str_statement, context
                    )
            else:
                effective_parameters = cast(
                    "_CoreSingleExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_execute:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_execute(
                        cursor, str_statement, effective_parameters, context
                    )
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1960: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8f32e7c0>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8fbfbd10>
    def do_execute(self, cursor, statement, parameters, context=None):
>       cursor.execute(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: user.username
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:924: IntegrityError
The above exception was the direct cause of the following exception:
self = <tests.test_mail.TestMail object at 0x7fff90ca4e60>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1233: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1960: in _exec_single_context
    self.dialect.do_execute(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8f32e7c0>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8fbfbd10>
    def do_execute(self, cursor, statement, parameters, context=None):
>       cursor.execute(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: user.username
E       [SQL: INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)]
E       [parameters: ('user1', 0, 1, None)]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:924: IntegrityError
________ ERROR at teardown of TestMail.test_permissions_change_message _________
self = <tests.test_mail.TestMail object at 0x7fff90ca4e60>
method = <bound method TestMail.test_permissions_change_message of <tests.test_mail.TestMail object at 0x7fff90ca4e60>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
______________ ERROR at setup of TestMail.test_legal_flag_message ______________
self = <sqlalchemy.engine.base.Connection object at 0x7fff8f859bb0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8f85a3c0>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff903111c0>
parameters = [('user1', 0, 1, None)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
                    self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
                    )
            elif not effective_parameters and context.no_parameters:
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_execute_no_params:
                        if fn(cursor, str_statement, context):
                            evt_handled = True
                            break
                if not evt_handled:
                    self.dialect.do_execute_no_params(
                        cursor, str_statement, context
                    )
            else:
                effective_parameters = cast(
                    "_CoreSingleExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_execute:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_execute(
                        cursor, str_statement, effective_parameters, context
                    )
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1960: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8ec3bd40>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8f85a3c0>
    def do_execute(self, cursor, statement, parameters, context=None):
>       cursor.execute(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: user.username
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:924: IntegrityError
The above exception was the direct cause of the following exception:
self = <tests.test_mail.TestMail object at 0x7fff90ca5b50>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1233: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1960: in _exec_single_context
    self.dialect.do_execute(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8ec3bd40>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8f85a3c0>
    def do_execute(self, cursor, statement, parameters, context=None):
>       cursor.execute(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: user.username
E       [SQL: INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)]
E       [parameters: ('user1', 0, 1, None)]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:924: IntegrityError
____________ ERROR at teardown of TestMail.test_legal_flag_message _____________
self = <tests.test_mail.TestMail object at 0x7fff90ca5b50>
method = <bound method TestMail.test_legal_flag_message of <tests.test_mail.TestMail object at 0x7fff90ca5b50>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
___________ ERROR at setup of TestMail.test_outdated_chroot_message ____________
self = <sqlalchemy.engine.base.Connection object at 0x7fff8f881df0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8f85a030>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff90310da0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8fdc6040>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8f85a030>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
The above exception was the direct cause of the following exception:
self = <tests.test_mail.TestMail object at 0x7fff90ca5d30>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8fdc6040>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8f85a030>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
E       [SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
E       [parameters: [('f18',), ('fedora-17',), ('master',)]]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
__________ ERROR at teardown of TestMail.test_outdated_chroot_message __________
self = <tests.test_mail.TestMail object at 0x7fff90ca5d30>
method = <bound method TestMail.test_outdated_chroot_message of <tests.test_mail.TestMail object at 0x7fff90ca5d30>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
___ ERROR at teardown of TestMail.test_outdated_chroot_message_empty_chroots ___
self = <tests.test_mail.TestMail object at 0x7fff90ca5f40>
method = <bound method TestMail.test_outdated_chroot_message_empty_chroots of <tests.test_mail.TestMail object at 0x7fff90ca5f40>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
_____________ ERROR at teardown of TestMail.test_filter_recipients _____________
self = <tests.test_mail.TestMail object at 0x7fff90ca60c0>
method = <bound method TestMail.test_filter_recipients of <tests.test_mail.TestMail object at 0x7fff90ca60c0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
_________ ERROR at setup of TestBuildModel.test_get_chroots_by_status __________
self = <sqlalchemy.engine.base.Connection object at 0x7fff8f8b2420>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8f8b24b0>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff90310da0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8ffcc9c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8f8b24b0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
The above exception was the direct cause of the following exception:
self = <tests.test_models.TestBuildModel object at 0x7fff90ca7080>
    @pytest.fixture
    def f_mock_chroots_many(self):
        """
        Adds more chroots to self.c1
        Requires: f_mock_chroots
        """
        self.mc_list = []
        for arch in ["x86_64", "i386"]:
            for os_version in range(19, 24):
                mc = models.MockChroot(
                    os_release="fedora", os_version=os_version,
                    arch=arch, is_active=True)
                # Let's try slashes now. for example.  Some copr instances use
                # this pattern.
>               mc.distgit_branch = BranchesLogic.get_or_create(
                        'fedora/{0}'.format(os_version),
                        session=self.db.session)
tests/coprs_test_case.py:352: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
coprs/logic/coprs_logic.py:927: in get_or_create
    item = session.query(models.DistGitBranch).filter_by(name=name).first()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/query.py:2727: in first
    return self.limit(1)._iter().first()  # type: ignore
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/query.py:2826: in _iter
    result: Union[ScalarResult[_T], Result[_T]] = self.session.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:2306: in execute
    return self._execute_internal(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:2170: in _execute_internal
    ) = compile_state_cls.orm_pre_session_exec(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/context.py:549: in orm_pre_session_exec
    session._autoflush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:3005: in _autoflush
    raise e.with_traceback(sys.exc_info()[2])
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:2994: in _autoflush
    self.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8ffcc9c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8f8b24b0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (raised as a result of Query-invoked autoflush; consider using a session.no_autoflush block if this flush is occurring prematurely)
E       (sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
E       [SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
E       [parameters: [('f18',), ('fedora-17',), ('master',)]]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
________ ERROR at teardown of TestBuildModel.test_get_chroots_by_status ________
self = <tests.test_models.TestBuildModel object at 0x7fff90ca7080>
method = <bound method TestBuildModel.test_get_chroots_by_status of <tests.test_models.TestBuildModel object at 0x7fff90ca7080>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
____________ ERROR at setup of TestBuildModel.test_chroot_denylist _____________
self = <sqlalchemy.engine.base.Connection object at 0x7fff90511070>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff90511160>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff903111c0>
parameters = [('user1', 0, 1, None)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
                    self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
                    )
            elif not effective_parameters and context.no_parameters:
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_execute_no_params:
                        if fn(cursor, str_statement, context):
                            evt_handled = True
                            break
                if not evt_handled:
                    self.dialect.do_execute_no_params(
                        cursor, str_statement, context
                    )
            else:
                effective_parameters = cast(
                    "_CoreSingleExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_execute:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_execute(
                        cursor, str_statement, effective_parameters, context
                    )
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1960: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8e1e02c0>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff90511160>
    def do_execute(self, cursor, statement, parameters, context=None):
>       cursor.execute(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: user.username
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:924: IntegrityError
The above exception was the direct cause of the following exception:
self = <tests.test_models.TestBuildModel object at 0x7fff90ca7740>
    @pytest.fixture
    def f_mock_chroots_many(self):
        """
        Adds more chroots to self.c1
        Requires: f_mock_chroots
        """
        self.mc_list = []
        for arch in ["x86_64", "i386"]:
            for os_version in range(19, 24):
                mc = models.MockChroot(
                    os_release="fedora", os_version=os_version,
                    arch=arch, is_active=True)
                # Let's try slashes now. for example.  Some copr instances use
                # this pattern.
>               mc.distgit_branch = BranchesLogic.get_or_create(
                        'fedora/{0}'.format(os_version),
                        session=self.db.session)
tests/coprs_test_case.py:352: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
coprs/logic/coprs_logic.py:927: in get_or_create
    item = session.query(models.DistGitBranch).filter_by(name=name).first()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/query.py:2727: in first
    return self.limit(1)._iter().first()  # type: ignore
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/query.py:2826: in _iter
    result: Union[ScalarResult[_T], Result[_T]] = self.session.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:2306: in execute
    return self._execute_internal(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:2170: in _execute_internal
    ) = compile_state_cls.orm_pre_session_exec(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/context.py:549: in orm_pre_session_exec
    session._autoflush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:3005: in _autoflush
    raise e.with_traceback(sys.exc_info()[2])
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:2994: in _autoflush
    self.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1233: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1960: in _exec_single_context
    self.dialect.do_execute(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8e1e02c0>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff90511160>
    def do_execute(self, cursor, statement, parameters, context=None):
>       cursor.execute(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (raised as a result of Query-invoked autoflush; consider using a session.no_autoflush block if this flush is occurring prematurely)
E       (sqlite3.IntegrityError) UNIQUE constraint failed: user.username
E       [SQL: INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)]
E       [parameters: ('user1', 0, 1, None)]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:924: IntegrityError
___________ ERROR at teardown of TestBuildModel.test_chroot_denylist ___________
self = <tests.test_models.TestBuildModel object at 0x7fff90ca7740>
method = <bound method TestBuildModel.test_chroot_denylist of <tests.test_models.TestBuildModel object at 0x7fff90ca7740>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
__________ ERROR at setup of TestBuildModel.test_chroot_denylist_all ___________
self = <sqlalchemy.engine.base.Connection object at 0x7fff8fc60740>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8fc62990>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff903111c0>
parameters = [('user1', 0, 1, None)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
                    self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
                    )
            elif not effective_parameters and context.no_parameters:
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_execute_no_params:
                        if fn(cursor, str_statement, context):
                            evt_handled = True
                            break
                if not evt_handled:
                    self.dialect.do_execute_no_params(
                        cursor, str_statement, context
                    )
            else:
                effective_parameters = cast(
                    "_CoreSingleExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_execute:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_execute(
                        cursor, str_statement, effective_parameters, context
                    )
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1960: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff90bcd040>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8fc62990>
    def do_execute(self, cursor, statement, parameters, context=None):
>       cursor.execute(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: user.username
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:924: IntegrityError
The above exception was the direct cause of the following exception:
self = <tests.test_models.TestBuildModel object at 0x7fff90ca7530>
    @pytest.fixture
    def f_mock_chroots_many(self):
        """
        Adds more chroots to self.c1
        Requires: f_mock_chroots
        """
        self.mc_list = []
        for arch in ["x86_64", "i386"]:
            for os_version in range(19, 24):
                mc = models.MockChroot(
                    os_release="fedora", os_version=os_version,
                    arch=arch, is_active=True)
                # Let's try slashes now. for example.  Some copr instances use
                # this pattern.
>               mc.distgit_branch = BranchesLogic.get_or_create(
                        'fedora/{0}'.format(os_version),
                        session=self.db.session)
tests/coprs_test_case.py:352: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
coprs/logic/coprs_logic.py:927: in get_or_create
    item = session.query(models.DistGitBranch).filter_by(name=name).first()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/query.py:2727: in first
    return self.limit(1)._iter().first()  # type: ignore
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/query.py:2826: in _iter
    result: Union[ScalarResult[_T], Result[_T]] = self.session.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:2306: in execute
    return self._execute_internal(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:2170: in _execute_internal
    ) = compile_state_cls.orm_pre_session_exec(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/context.py:549: in orm_pre_session_exec
    session._autoflush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:3005: in _autoflush
    raise e.with_traceback(sys.exc_info()[2])
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:2994: in _autoflush
    self.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1233: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1960: in _exec_single_context
    self.dialect.do_execute(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff90bcd040>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8fc62990>
    def do_execute(self, cursor, statement, parameters, context=None):
>       cursor.execute(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (raised as a result of Query-invoked autoflush; consider using a session.no_autoflush block if this flush is occurring prematurely)
E       (sqlite3.IntegrityError) UNIQUE constraint failed: user.username
E       [SQL: INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)]
E       [parameters: ('user1', 0, 1, None)]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:924: IntegrityError
_________ ERROR at teardown of TestBuildModel.test_chroot_denylist_all _________
self = <tests.test_models.TestBuildModel object at 0x7fff90ca7530>
method = <bound method TestBuildModel.test_chroot_denylist_all of <tests.test_models.TestBuildModel object at 0x7fff90ca7530>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
________________ ERROR at setup of TestBuildModel.test_finished ________________
self = <sqlalchemy.engine.base.Connection object at 0x7fff8fbf91c0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8fbfbbc0>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff90310da0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8fdc7340>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8fbfbbc0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
The above exception was the direct cause of the following exception:
self = <tests.test_models.TestBuildModel object at 0x7fff90ca5b20>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8fdc7340>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8fbfbbc0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
E       [SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
E       [parameters: [('f18',), ('fedora-17',), ('master',)]]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
______________ ERROR at teardown of TestBuildModel.test_finished _______________
self = <tests.test_models.TestBuildModel object at 0x7fff90ca5b20>
method = <bound method TestBuildModel.test_finished of <tests.test_models.TestBuildModel object at 0x7fff90ca5b20>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
_____________ ERROR at setup of TestBuildModel.test_finished_srpms _____________
self = <sqlalchemy.engine.base.Connection object at 0x7fff8fc3d3a0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8fc3e510>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff903111c0>
parameters = [('user1', 0, 1, None)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
                    self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
                    )
            elif not effective_parameters and context.no_parameters:
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_execute_no_params:
                        if fn(cursor, str_statement, context):
                            evt_handled = True
                            break
                if not evt_handled:
                    self.dialect.do_execute_no_params(
                        cursor, str_statement, context
                    )
            else:
                effective_parameters = cast(
                    "_CoreSingleExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_execute:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_execute(
                        cursor, str_statement, effective_parameters, context
                    )
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1960: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8e6cbe40>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8fc3e510>
    def do_execute(self, cursor, statement, parameters, context=None):
>       cursor.execute(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: user.username
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:924: IntegrityError
The above exception was the direct cause of the following exception:
self = <tests.test_models.TestBuildModel object at 0x7fff90ca6300>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1233: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1960: in _exec_single_context
    self.dialect.do_execute(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8e6cbe40>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8fc3e510>
    def do_execute(self, cursor, statement, parameters, context=None):
>       cursor.execute(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: user.username
E       [SQL: INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)]
E       [parameters: ('user1', 0, 1, None)]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:924: IntegrityError
___________ ERROR at teardown of TestBuildModel.test_finished_srpms ____________
self = <tests.test_models.TestBuildModel object at 0x7fff90ca6300>
method = <bound method TestBuildModel.test_finished_srpms of <tests.test_models.TestBuildModel object at 0x7fff90ca6300>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
________________ ERROR at setup of TestBuildModel.test_canceled ________________
self = <sqlalchemy.engine.base.Connection object at 0x7fff90512630>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff905110d0>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff90310da0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8ef10fc0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff905110d0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
The above exception was the direct cause of the following exception:
self = <tests.test_models.TestBuildModel object at 0x7fff90ca6570>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8ef10fc0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff905110d0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
E       [SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
E       [parameters: [('f18',), ('fedora-17',), ('master',)]]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
______________ ERROR at teardown of TestBuildModel.test_canceled _______________
self = <tests.test_models.TestBuildModel object at 0x7fff90ca6570>
method = <bound method TestBuildModel.test_canceled of <tests.test_models.TestBuildModel object at 0x7fff90ca6570>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
_______________ ERROR at setup of TestBuildModel.test_build_logs _______________
self = <sqlalchemy.engine.base.Connection object at 0x7fff904cb020>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff904cbc50>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff90310da0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8e87da40>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff904cbc50>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
The above exception was the direct cause of the following exception:
self = <tests.test_models.TestBuildModel object at 0x7fff90ca6780>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8e87da40>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff904cbc50>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
E       [SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
E       [parameters: [('f18',), ('fedora-17',), ('master',)]]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
_____________ ERROR at teardown of TestBuildModel.test_build_logs ______________
self = <tests.test_models.TestBuildModel object at 0x7fff90ca6780>
method = <bound method TestBuildModel.test_build_logs of <tests.test_models.TestBuildModel object at 0x7fff90ca6780>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
____________ ERROR at setup of TestBuildModel.test_buildchroot_logs ____________
self = <sqlalchemy.engine.base.Connection object at 0x7fff904cb110>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff904cb6b0>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff90310da0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8f812b40>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff904cb6b0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
The above exception was the direct cause of the following exception:
self = <tests.test_models.TestBuildModel object at 0x7fff90ca69c0>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8f812b40>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff904cb6b0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
E       [SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
E       [parameters: [('f18',), ('fedora-17',), ('master',)]]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
__________ ERROR at teardown of TestBuildModel.test_buildchroot_logs ___________
self = <tests.test_models.TestBuildModel object at 0x7fff90ca69c0>
method = <bound method TestBuildModel.test_buildchroot_logs of <tests.test_models.TestBuildModel object at 0x7fff90ca69c0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
______ ERROR at teardown of TestBuildModel.test_source_state_translation _______
self = <tests.test_models.TestBuildModel object at 0x7fff90bb9d00>
method = <bound method TestBuildModel.test_source_state_translation of <tests.test_models.TestBuildModel object at 0x7fff90bb9d00>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
___________ ERROR at setup of TestCoprModel.test_permissible_chroots ___________
self = <sqlalchemy.engine.base.Connection object at 0x7fff90569b50>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff90569bb0>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff90310da0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8e5467c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff90569bb0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
The above exception was the direct cause of the following exception:
self = <tests.test_models.TestCoprModel object at 0x7fff90bb9040>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8e5467c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff90569bb0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
E       [SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
E       [parameters: [('f18',), ('fedora-17',), ('master',)]]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
_________ ERROR at teardown of TestCoprModel.test_permissible_chroots __________
self = <tests.test_models.TestCoprModel object at 0x7fff90bb9040>
method = <bound method TestCoprModel.test_permissible_chroots of <tests.test_models.TestCoprModel object at 0x7fff90bb9040>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
_ ERROR at teardown of TestPagureEvents.test_negative_event_info_from_pr_comment _
self = <tests.test_pagure_events.TestPagureEvents object at 0x7fff90bb8d40>
method = <bound method TestPagureEvents.test_negative_event_info_from_pr_comment of <tests.test_pagure_events.TestPagureEvents object at 0x7fff90bb8d40>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
------------------------------ Captured log call -------------------------------
INFO     coprs:pagure_events.py:101 This is most odd, we're not seeing comments.
_____ ERROR at teardown of TestPagureEvents.test_negative_is_dir_in_commit _____
self = <tests.test_pagure_events.TestPagureEvents object at 0x7fff90bb8f80>
method = <bound method TestPagureEvents.test_negative_is_dir_in_commit of <tests.test_pagure_events.TestPagureEvents object at 0x7fff90bb8f80>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
_____ ERROR at teardown of TestPagureEvents.test_positive_is_dir_in_commit _____
self = <tests.test_pagure_events.TestPagureEvents object at 0x7fff90bba9f0>
method = <bound method TestPagureEvents.test_positive_is_dir_in_commit of <tests.test_pagure_events.TestPagureEvents object at 0x7fff90bba9f0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
___ ERROR at teardown of TestPagureEvents.test_positive_build_from_pr_update ___
self = <tests.test_pagure_events.TestPagureEvents object at 0x7fff90bbaba0>
method = <bound method TestPagureEvents.test_positive_build_from_pr_update of <tests.test_pagure_events.TestPagureEvents object at 0x7fff90bbaba0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
------------------------------ Captured log call -------------------------------
INFO     coprs:pagure_events.py:220 Got topic: io.pagure.prod.pagure.pull-request.updated
INFO     coprs:pagure_events.py:233 event_info = Munch({'object_id': 1, 'object_type': 'pull-request', 'base_project_url_path': 'test/copr/copr', 'base_clone_url_path': 'test/copr/copr', 'base_clone_url': 'https://pagure.io/test/copr/copr', 'project_url_path': 'test/copr/copr', 'clone_url_path': 'test/copr/copr', 'clone_url': 'https://pagure.io/test/copr/copr', 'branch_from': 'test_PR', 'branch_to': 'master', 'start_commit': '78a74b02771506daf8927b3391a669cbc32ccf10', 'end_commit': 'da3d120f2ff24fa730067735c19a0b52c8bc1a44', 'user': 'jdoe'})
_ ERROR at teardown of TestPagureEvents.test_negative_event_info_from_pr_comment_random_comment _
self = <tests.test_pagure_events.TestPagureEvents object at 0x7fff90bbad80>
method = <bound method TestPagureEvents.test_negative_event_info_from_pr_comment_random_comment of <tests.test_pagure_events.TestPagureEvents object at 0x7fff90bbad80>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
------------------------------ Captured log call -------------------------------
INFO     coprs:pagure_events.py:110 The [copr-build] is not present in the message.
_ ERROR at teardown of TestPagureEvents.test_positive_event_info_from_pr_comment _
self = <tests.test_pagure_events.TestPagureEvents object at 0x7fff90bbaf30>
method = <bound method TestPagureEvents.test_positive_event_info_from_pr_comment of <tests.test_pagure_events.TestPagureEvents object at 0x7fff90bbaf30>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
__ ERROR at teardown of TestPagureEvents.test_negative_build_from_pr_comment ___
self = <tests.test_pagure_events.TestPagureEvents object at 0x7fff90bbb0b0>
method = <bound method TestPagureEvents.test_negative_build_from_pr_comment of <tests.test_pagure_events.TestPagureEvents object at 0x7fff90bbb0b0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
------------------------------ Captured log call -------------------------------
INFO     coprs:pagure_events.py:220 Got topic: io.pagure.prod.pagure.pull-request.comment.added
INFO     coprs:pagure_events.py:101 This is most odd, we're not seeing comments.
INFO     coprs:pagure_events.py:233 event_info = False
INFO     coprs:pagure_events.py:236 Received event was discarded. Continuing.
________ ERROR at teardown of TestPagureEvents.test_negative_event_info ________
self = <tests.test_pagure_events.TestPagureEvents object at 0x7fff90bbb260>
method = <bound method TestPagureEvents.test_negative_event_info of <tests.test_pagure_events.TestPagureEvents object at 0x7fff90bbb260>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
------------------------------ Captured log call -------------------------------
INFO     coprs:pagure_events.py:220 Got topic: io.pagure.prod.pagure.pull-request.comment.added
INFO     coprs:pagure_events.py:97 Pull-request not open, discarding.
INFO     coprs:pagure_events.py:233 event_info = False
INFO     coprs:pagure_events.py:236 Received event was discarded. Continuing.
_ ERROR at teardown of TestPagureEvents.test_negative_event_info_from_pr_comment_closed_pr _
self = <tests.test_pagure_events.TestPagureEvents object at 0x7fff90bbb410>
method = <bound method TestPagureEvents.test_negative_event_info_from_pr_comment_closed_pr of <tests.test_pagure_events.TestPagureEvents object at 0x7fff90bbb410>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
------------------------------ Captured log call -------------------------------
INFO     coprs:pagure_events.py:97 Pull-request not open, discarding.
____ ERROR at teardown of TestPagureEvents.test_positive_event_info_from_pr ____
self = <tests.test_pagure_events.TestPagureEvents object at 0x7fff90bbb620>
method = <bound method TestPagureEvents.test_positive_event_info_from_pr of <tests.test_pagure_events.TestPagureEvents object at 0x7fff90bbb620>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
___ ERROR at teardown of TestPagureEvents.test_positive_event_info_from_push ___
self = <tests.test_pagure_events.TestPagureEvents object at 0x7fff90bbb7a0>
method = <bound method TestPagureEvents.test_positive_event_info_from_push of <tests.test_pagure_events.TestPagureEvents object at 0x7fff90bbb7a0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
_____ ERROR at teardown of TestPagureEvents.test_positive_build_from_push ______
self = <tests.test_pagure_events.TestPagureEvents object at 0x7fff90bbb920>
method = <bound method TestPagureEvents.test_positive_build_from_push of <tests.test_pagure_events.TestPagureEvents object at 0x7fff90bbb920>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
------------------------------ Captured log call -------------------------------
INFO     coprs:pagure_events.py:220 Got topic: io.pagure.prod.pagure.git.receive
INFO     coprs:pagure_events.py:233 event_info = Munch({'object_id': '61bba3a6bd95fe83c651339018c1d36eae48b620', 'object_type': 'commit', 'base_project_url_path': 'test', 'base_clone_url_path': 'test', 'base_clone_url': 'https://pagure.io/test', 'project_url_path': 'test', 'clone_url_path': 'test', 'clone_url': 'https://pagure.io/test', 'branch_from': 'master', 'branch_to': 'master', 'start_commit': '61bba3a6bd95fe83c651339018c1d36eae48b620', 'end_commit': '61bba3a6bd95fe83c651339018c1d36eae48b620', 'user': 'test'})
_____ ERROR at teardown of TestPagureEvents.test_negative_build_from_push ______
self = <tests.test_pagure_events.TestPagureEvents object at 0x7fff90bbbbf0>
method = <bound method TestPagureEvents.test_negative_build_from_push of <tests.test_pagure_events.TestPagureEvents object at 0x7fff90bbbbf0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
------------------------------ Captured log call -------------------------------
INFO     coprs:pagure_events.py:220 Got topic: io.pagure.prod.pagure.git.receive
INFO     coprs:pagure_events.py:233 event_info = Munch({'object_id': '61bba3a6bd95fe83c651339018c1d36eae48b620', 'object_type': 'commit', 'base_project_url_path': 'test', 'base_clone_url_path': 'test', 'base_clone_url': 'https://pagure.io/test', 'project_url_path': 'test', 'clone_url_path': 'test', 'clone_url': 'https://pagure.io/test', 'branch_from': 'master', 'branch_to': 'master', 'start_commit': '61bba3a6bd95fe83c651339018c1d36eae48b620', 'end_commit': '61bba3a6bd95fe83c651339018c1d36eae48b620', 'user': 'test'})
INFO     coprs:pagure_events.py:259 changed files:
______ ERROR at teardown of TestPagureEvents.test_negative_unknown_topic _______
self = <tests.test_pagure_events.TestPagureEvents object at 0x7fff90bbbda0>
method = <bound method TestPagureEvents.test_negative_unknown_topic of <tests.test_pagure_events.TestPagureEvents object at 0x7fff90bbbda0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
------------------------------ Captured log call -------------------------------
INFO     coprs:pagure_events.py:220 Got topic: io.pagure.prod.pagure.git.test
ERROR    coprs:pagure_events.py:223 Unknown topic {} received. Continuing.
____ ERROR at teardown of TestPagureEvents.test_positive_build_from_pr_fork ____
self = <tests.test_pagure_events.TestPagureEvents object at 0x7fff90bbb8f0>
method = <bound method TestPagureEvents.test_positive_build_from_pr_fork of <tests.test_pagure_events.TestPagureEvents object at 0x7fff90bbb8f0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
------------------------------ Captured log call -------------------------------
ERROR    coprs:error_handlers.py:102 Admin-only exception
Request: POST http://localhost.localdomain/api_3/package/add/user1/foocopr/hello-world/distgit
User: None
Traceback (most recent call last):
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py", line 1929, in _exec_single_context
    self.dialect.do_executemany(
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py", line 921, in do_executemany
    cursor.executemany(statement, parameters)
sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
  File "/usr/lib/python3.12/site-packages/flask/app.py", line 870, in full_dispatch_request
    rv = self.dispatch_request()
         ^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.12/site-packages/flask/app.py", line 855, in dispatch_request
    return self.ensure_sync(self.view_functions[rule.endpoint])(**view_args)  # type: ignore[no-any-return]
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.12/site-packages/flask_restx/api.py", line 402, in wrapper
    resp = resource(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.12/site-packages/flask/views.py", line 110, in view
    return current_app.ensure_sync(self.dispatch_request)(**kwargs)  # type: ignore[no-any-return]
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.12/site-packages/flask_restx/resource.py", line 41, in dispatch_request
    resp = meth(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^
  File "/builddir/build/BUILD/copr-frontend-1.204/coprs_frontend/coprs/views/misc.py", line 341, in check_if_api_login_is_required
    retval = _shared_api_login_required_wrapper()
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/builddir/build/BUILD/copr-frontend-1.204/coprs_frontend/coprs/views/misc.py", line 170, in _shared_api_login_required_wrapper
    user = UsersLogic.get_by_api_login(api_login).first()
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/query.py", line 2727, in first
    return self.limit(1)._iter().first()  # type: ignore
           ^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/query.py", line 2826, in _iter
    result: Union[ScalarResult[_T], Result[_T]] = self.session.execute(
                                                  ^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py", line 2306, in execute
    return self._execute_internal(
           ^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py", line 2170, in _execute_internal
    ) = compile_state_cls.orm_pre_session_exec(
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/context.py", line 549, in orm_pre_session_exec
    session._autoflush()
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py", line 3005, in _autoflush
    raise e.with_traceback(sys.exc_info()[2])
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py", line 2994, in _autoflush
    self.flush()
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py", line 4296, in flush
    self._flush(objects)
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py", line 4431, in _flush
    with util.safe_reraise():
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py", line 146, in __exit__
    raise exc_value.with_traceback(exc_tb)
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py", line 4392, in _flush
    flush_context.execute()
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py", line 466, in execute
    rec.execute(self)
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py", line 642, in execute
    util.preloaded.orm_persistence.save_obj(
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py", line 93, in save_obj
    _emit_insert_statements(
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py", line 1048, in _emit_insert_statements
    result = connection.execute(
             ^^^^^^^^^^^^^^^^^^^
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py", line 1408, in execute
    return meth(
           ^^^^^
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py", line 513, in _execute_on_connection
    return connection._execute_clauseelement(
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py", line 1630, in _execute_clauseelement
    ret = self._execute_context(
          ^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py", line 1839, in _execute_context
    return self._exec_single_context(
           ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py", line 1979, in _exec_single_context
    self._handle_dbapi_exception(
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py", line 2335, in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py", line 1929, in _exec_single_context
    self.dialect.do_executemany(
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py", line 921, in do_executemany
    cursor.executemany(statement, parameters)
sqlalchemy.exc.IntegrityError: (raised as a result of Query-invoked autoflush; consider using a session.no_autoflush block if this flush is occurring prematurely)
(sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
[SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
[parameters: [('f18',), ('fedora-17',), ('master',)]]
(Background on this error at: https://sqlalche.me/e/20/gkpj)
ERROR    coprs:error_handlers.py:42 Response error: gkpj Database error, contact admin
ERROR    coprs:error_handlers.py:102 Admin-only exception
Request: POST http://localhost.localdomain/api_3/package/add/user1/foocopr/hello-world/distgit
User: None
Traceback (most recent call last):
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py", line 1929, in _exec_single_context
    self.dialect.do_executemany(
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py", line 921, in do_executemany
    cursor.executemany(statement, parameters)
sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
  File "/usr/lib/python3.12/site-packages/flask/app.py", line 870, in full_dispatch_request
    rv = self.dispatch_request()
         ^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.12/site-packages/flask/app.py", line 855, in dispatch_request
    return self.ensure_sync(self.view_functions[rule.endpoint])(**view_args)  # type: ignore[no-any-return]
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.12/site-packages/flask_restx/api.py", line 402, in wrapper
    resp = resource(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.12/site-packages/flask/views.py", line 110, in view
    return current_app.ensure_sync(self.dispatch_request)(**kwargs)  # type: ignore[no-any-return]
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.12/site-packages/flask_restx/resource.py", line 41, in dispatch_request
    resp = meth(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^
  File "/builddir/build/BUILD/copr-frontend-1.204/coprs_frontend/coprs/views/misc.py", line 341, in check_if_api_login_is_required
    retval = _shared_api_login_required_wrapper()
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/builddir/build/BUILD/copr-frontend-1.204/coprs_frontend/coprs/views/misc.py", line 170, in _shared_api_login_required_wrapper
    user = UsersLogic.get_by_api_login(api_login).first()
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/query.py", line 2727, in first
    return self.limit(1)._iter().first()  # type: ignore
           ^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/query.py", line 2826, in _iter
    result: Union[ScalarResult[_T], Result[_T]] = self.session.execute(
                                                  ^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py", line 2306, in execute
    return self._execute_internal(
           ^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py", line 2170, in _execute_internal
    ) = compile_state_cls.orm_pre_session_exec(
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/context.py", line 549, in orm_pre_session_exec
    session._autoflush()
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py", line 3005, in _autoflush
    raise e.with_traceback(sys.exc_info()[2])
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py", line 2994, in _autoflush
    self.flush()
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py", line 4296, in flush
    self._flush(objects)
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py", line 4431, in _flush
    with util.safe_reraise():
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py", line 146, in __exit__
    raise exc_value.with_traceback(exc_tb)
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py", line 4392, in _flush
    flush_context.execute()
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py", line 466, in execute
    rec.execute(self)
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py", line 642, in execute
    util.preloaded.orm_persistence.save_obj(
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py", line 93, in save_obj
    _emit_insert_statements(
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py", line 1048, in _emit_insert_statements
    result = connection.execute(
             ^^^^^^^^^^^^^^^^^^^
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py", line 1408, in execute
    return meth(
           ^^^^^
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py", line 513, in _execute_on_connection
    return connection._execute_clauseelement(
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py", line 1630, in _execute_clauseelement
    ret = self._execute_context(
          ^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py", line 1839, in _execute_context
    return self._exec_single_context(
           ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py", line 1979, in _exec_single_context
    self._handle_dbapi_exception(
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py", line 2335, in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py", line 1929, in _exec_single_context
    self.dialect.do_executemany(
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py", line 921, in do_executemany
    cursor.executemany(statement, parameters)
sqlalchemy.exc.IntegrityError: (raised as a result of Query-invoked autoflush; consider using a session.no_autoflush block if this flush is occurring prematurely)
(sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
[SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
[parameters: [('f18',), ('fedora-17',), ('master',)]]
(Background on this error at: https://sqlalche.me/e/20/gkpj)
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
  File "/usr/lib/python3.12/site-packages/flask_restx/api.py", line 669, in error_router
    return self.handle_error(e)
           ^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.12/site-packages/flask_restx/api.py", line 753, in handle_error
    if code >= HTTPStatus.INTERNAL_SERVER_ERROR:
       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
TypeError: '>=' not supported between instances of 'str' and 'HTTPStatus'
ERROR    coprs:error_handlers.py:42 Response error: 500 Request wasn't successful, there is probably a bug in the Copr code.
_ ERROR at setup of TestCoprResubmitBuild.test_copr_repeat_build_attributes_upload _
self = <sqlalchemy.engine.base.Connection object at 0x7fff8ff38500>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8ff38590>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff90310da0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8e8a2b40>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8ff38590>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
The above exception was the direct cause of the following exception:
self = <tests.test_resubmit.TestCoprResubmitBuild object at 0x7fff90a85d60>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8e8a2b40>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8ff38590>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
E       [SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
E       [parameters: [('f18',), ('fedora-17',), ('master',)]]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
_ ERROR at teardown of TestCoprResubmitBuild.test_copr_repeat_build_attributes_upload _
self = <tests.test_resubmit.TestCoprResubmitBuild object at 0x7fff90a85d60>
method = <bound method TestCoprResubmitBuild.test_copr_repeat_build_attributes_upload of <tests.test_resubmit.TestCoprResubmitBuild object at 0x7fff90a85d60>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
__________ ERROR at setup of TestCustomWebhook.test_package_not_found __________
self = <sqlalchemy.engine.base.Connection object at 0x7fff8ff3ac90>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8ff3adb0>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff90310da0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8fda27c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8ff3adb0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
The above exception was the direct cause of the following exception:
self = <tests.test_webhooks.TestCustomWebhook object at 0x7fff90bba360>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8fda27c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8ff3adb0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
E       [SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
E       [parameters: [('f18',), ('fedora-17',), ('master',)]]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
________ ERROR at teardown of TestCustomWebhook.test_package_not_found _________
self = <tests.test_webhooks.TestCustomWebhook object at 0x7fff90bba360>
method = <bound method TestCustomWebhook.test_package_not_found of <tests.test_webhooks.TestCustomWebhook object at 0x7fff90bba360>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
__________ ERROR at setup of TestCustomWebhook.test_hook_data_stored ___________
self = <sqlalchemy.engine.base.Connection object at 0x7fff8ff394f0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8ff3bbf0>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff90310da0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff9007b6c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8ff3bbf0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
The above exception was the direct cause of the following exception:
self = <tests.test_webhooks.TestCustomWebhook object at 0x7fff90a858b0>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff9007b6c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8ff3bbf0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
E       [SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
E       [parameters: [('f18',), ('fedora-17',), ('master',)]]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
_________ ERROR at teardown of TestCustomWebhook.test_hook_data_stored _________
self = <tests.test_webhooks.TestCustomWebhook object at 0x7fff90a858b0>
method = <bound method TestCustomWebhook.test_hook_data_stored of <tests.test_webhooks.TestCustomWebhook object at 0x7fff90a858b0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
______________ ERROR at setup of TestCustomWebhook.test_bad_uuid _______________
self = <sqlalchemy.engine.base.Connection object at 0x7fff90041250>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff900412e0>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff90310da0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8ffc8c40>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff900412e0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
The above exception was the direct cause of the following exception:
self = <tests.test_webhooks.TestCustomWebhook object at 0x7fff90a86d80>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8ffc8c40>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff900412e0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
E       [SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
E       [parameters: [('f18',), ('fedora-17',), ('master',)]]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
_____________ ERROR at teardown of TestCustomWebhook.test_bad_uuid _____________
self = <tests.test_webhooks.TestCustomWebhook object at 0x7fff90a86d80>
method = <bound method TestCustomWebhook.test_bad_uuid of <tests.test_webhooks.TestCustomWebhook object at 0x7fff90a86d80>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
_________ ERROR at setup of TestGithubWebhook.test_package_bad_request _________
self = <sqlalchemy.engine.base.Connection object at 0x7fff90004ad0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff90004b60>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff90310da0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff90079140>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff90004b60>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
The above exception was the direct cause of the following exception:
self = <tests.test_webhooks.TestGithubWebhook object at 0x7fff90a854f0>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff90079140>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff90004b60>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
E       [SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
E       [parameters: [('f18',), ('fedora-17',), ('master',)]]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
_______ ERROR at teardown of TestGithubWebhook.test_package_bad_request ________
self = <tests.test_webhooks.TestGithubWebhook object at 0x7fff90a854f0>
method = <bound method TestGithubWebhook.test_package_bad_request of <tests.test_webhooks.TestGithubWebhook object at 0x7fff90a854f0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
_______ ERROR at setup of TestGithubWebhook.test_hook_status_ping_event ________
self = <sqlalchemy.engine.base.Connection object at 0x7fff8ff38500>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8ff38710>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff90310da0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8e954a40>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8ff38710>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
The above exception was the direct cause of the following exception:
self = <tests.test_webhooks.TestGithubWebhook object at 0x7fff90a85340>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8e954a40>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8ff38710>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
E       [SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
E       [parameters: [('f18',), ('fedora-17',), ('master',)]]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
______ ERROR at teardown of TestGithubWebhook.test_hook_status_ping_event ______
self = <tests.test_webhooks.TestGithubWebhook object at 0x7fff90a85340>
method = <bound method TestGithubWebhook.test_hook_status_ping_event of <tests.test_webhooks.TestGithubWebhook object at 0x7fff90a85340>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
__________ ERROR at setup of TestGithubWebhook.test_hook_data_stored ___________
self = <sqlalchemy.engine.base.Connection object at 0x7fff904cb110>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff904cb6b0>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff90310da0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8df0b3c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff904cb6b0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
The above exception was the direct cause of the following exception:
self = <tests.test_webhooks.TestGithubWebhook object at 0x7fff90a85760>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8df0b3c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff904cb6b0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
E       [SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
E       [parameters: [('f18',), ('fedora-17',), ('master',)]]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
_________ ERROR at teardown of TestGithubWebhook.test_hook_data_stored _________
self = <tests.test_webhooks.TestGithubWebhook object at 0x7fff90a85760>
method = <bound method TestGithubWebhook.test_hook_data_stored of <tests.test_webhooks.TestGithubWebhook object at 0x7fff90a85760>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
______________ ERROR at setup of TestGithubWebhook.test_bad_uuid _______________
self = <sqlalchemy.engine.base.Connection object at 0x7fff8ff4a000>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8ff4bd70>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff90310da0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8e2a3740>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8ff4bd70>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
The above exception was the direct cause of the following exception:
self = <tests.test_webhooks.TestGithubWebhook object at 0x7fff90a84d70>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8e2a3740>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8ff4bd70>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
E       [SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
E       [parameters: [('f18',), ('fedora-17',), ('master',)]]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
_____________ ERROR at teardown of TestGithubWebhook.test_bad_uuid _____________
self = <tests.test_webhooks.TestGithubWebhook object at 0x7fff90a84d70>
method = <bound method TestGithubWebhook.test_bad_uuid of <tests.test_webhooks.TestGithubWebhook object at 0x7fff90a84d70>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
_________ ERROR at setup of TestGitlabWebhook.test_package_bad_request _________
self = <sqlalchemy.engine.base.Connection object at 0x7fff8fed95b0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8fed9490>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff90310da0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8e1e27c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8fed9490>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
The above exception was the direct cause of the following exception:
self = <tests.test_webhooks.TestGitlabWebhook object at 0x7fff90a84680>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8e1e27c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8fed9490>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
E       [SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
E       [parameters: [('f18',), ('fedora-17',), ('master',)]]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
_______ ERROR at teardown of TestGitlabWebhook.test_package_bad_request ________
self = <tests.test_webhooks.TestGitlabWebhook object at 0x7fff90a84680>
method = <bound method TestGitlabWebhook.test_package_bad_request of <tests.test_webhooks.TestGitlabWebhook object at 0x7fff90a84680>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
__________ ERROR at setup of TestGitlabWebhook.test_hook_data_stored ___________
self = <sqlalchemy.engine.base.Connection object at 0x7fff8fed9520>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8feda180>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff90310da0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8e8a15c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8feda180>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
The above exception was the direct cause of the following exception:
self = <tests.test_webhooks.TestGitlabWebhook object at 0x7fff90a86de0>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8e8a15c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8feda180>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
E       [SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
E       [parameters: [('f18',), ('fedora-17',), ('master',)]]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
_________ ERROR at teardown of TestGitlabWebhook.test_hook_data_stored _________
self = <tests.test_webhooks.TestGitlabWebhook object at 0x7fff90a86de0>
method = <bound method TestGitlabWebhook.test_hook_data_stored of <tests.test_webhooks.TestGitlabWebhook object at 0x7fff90a86de0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
______________ ERROR at setup of TestGitlabWebhook.test_bad_uuid _______________
self = <sqlalchemy.engine.base.Connection object at 0x7fff8fd24cb0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8fd24d40>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff90310da0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8df3b9c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8fd24d40>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
The above exception was the direct cause of the following exception:
self = <tests.test_webhooks.TestGitlabWebhook object at 0x7fff90a87200>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8df3b9c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8fd24d40>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
E       [SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
E       [parameters: [('f18',), ('fedora-17',), ('master',)]]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
_____________ ERROR at teardown of TestGitlabWebhook.test_bad_uuid _____________
self = <tests.test_webhooks.TestGitlabWebhook object at 0x7fff90a87200>
method = <bound method TestGitlabWebhook.test_bad_uuid of <tests.test_webhooks.TestGitlabWebhook object at 0x7fff90a87200>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
_______ ERROR at setup of TestBitbucketWebhook.test_package_bad_request ________
self = <sqlalchemy.engine.base.Connection object at 0x7fff8fce8500>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8fce8590>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff90310da0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8e4c10c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8fce8590>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
The above exception was the direct cause of the following exception:
self = <tests.test_webhooks.TestBitbucketWebhook object at 0x7fff909dc8c0>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8e4c10c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8fce8590>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
E       [SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
E       [parameters: [('f18',), ('fedora-17',), ('master',)]]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
______ ERROR at teardown of TestBitbucketWebhook.test_package_bad_request ______
self = <tests.test_webhooks.TestBitbucketWebhook object at 0x7fff909dc8c0>
method = <bound method TestBitbucketWebhook.test_package_bad_request of <tests.test_webhooks.TestBitbucketWebhook object at 0x7fff909dc8c0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
_________ ERROR at setup of TestBitbucketWebhook.test_hook_data_stored _________
self = <sqlalchemy.engine.base.Connection object at 0x7fff8fcebf20>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8fcebfe0>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff90310da0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8def2840>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8fcebfe0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
The above exception was the direct cause of the following exception:
self = <tests.test_webhooks.TestBitbucketWebhook object at 0x7fff909de750>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8def2840>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8fcebfe0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
E       [SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
E       [parameters: [('f18',), ('fedora-17',), ('master',)]]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
_______ ERROR at teardown of TestBitbucketWebhook.test_hook_data_stored ________
self = <tests.test_webhooks.TestBitbucketWebhook object at 0x7fff909de750>
method = <bound method TestBitbucketWebhook.test_hook_data_stored of <tests.test_webhooks.TestBitbucketWebhook object at 0x7fff909de750>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
_____________ ERROR at setup of TestBitbucketWebhook.test_bad_uuid _____________
self = <sqlalchemy.engine.base.Connection object at 0x7fff8fd97170>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8fd97200>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff90310da0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8e479240>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8fd97200>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
The above exception was the direct cause of the following exception:
self = <tests.test_webhooks.TestBitbucketWebhook object at 0x7fff909df530>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8e479240>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8fd97200>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
E       [SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
E       [parameters: [('f18',), ('fedora-17',), ('master',)]]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
___________ ERROR at teardown of TestBitbucketWebhook.test_bad_uuid ____________
self = <tests.test_webhooks.TestBitbucketWebhook object at 0x7fff909df530>
method = <bound method TestBitbucketWebhook.test_bad_uuid of <tests.test_webhooks.TestBitbucketWebhook object at 0x7fff909df530>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
_ ERROR at setup of TestAPIv3BuildChrootsResults.test_build_chroot_built_packages[None] _
self = <sqlalchemy.engine.base.Connection object at 0x7fff8fd321e0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8fd32270>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff90310da0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8e450e40>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8fd32270>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
The above exception was the direct cause of the following exception:
self = <test_build_chroots.TestAPIv3BuildChrootsResults object at 0x7fff909dd2e0>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8e450e40>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8fd32270>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
E       [SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
E       [parameters: [('f18',), ('fedora-17',), ('master',)]]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
_ ERROR at teardown of TestAPIv3BuildChrootsResults.test_build_chroot_built_packages[None] _
self = <test_build_chroots.TestAPIv3BuildChrootsResults object at 0x7fff909dd2e0>
method = <bound method TestAPIv3BuildChrootsResults.test_build_chroot_built_packages of <test_build_chroots.TestAPIv3BuildChrootsResults object at 0x7fff909dd2e0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
_ ERROR at setup of TestAPIv3BuildChrootsResults.test_build_chroot_built_packages[1] _
self = <sqlalchemy.engine.base.Connection object at 0x7fff8fd24e00>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8fd27350>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff90310da0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8ffcb540>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8fd27350>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
The above exception was the direct cause of the following exception:
self = <test_build_chroots.TestAPIv3BuildChrootsResults object at 0x7fff909dd550>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8ffcb540>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8fd27350>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
E       [SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
E       [parameters: [('f18',), ('fedora-17',), ('master',)]]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
_ ERROR at teardown of TestAPIv3BuildChrootsResults.test_build_chroot_built_packages[1] _
self = <test_build_chroots.TestAPIv3BuildChrootsResults object at 0x7fff909dd550>
method = <bound method TestAPIv3BuildChrootsResults.test_build_chroot_built_packages of <test_build_chroots.TestAPIv3BuildChrootsResults object at 0x7fff909dd550>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
_ ERROR at setup of TestAPIv3BuildChrootsResults.test_build_chroot_built_packages[11] _
self = <sqlalchemy.engine.base.Connection object at 0x7fff90511ca0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8fd949b0>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff90310da0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8e2a1140>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8fd949b0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
The above exception was the direct cause of the following exception:
self = <test_build_chroots.TestAPIv3BuildChrootsResults object at 0x7fff909dd5e0>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8e2a1140>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8fd949b0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
E       [SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
E       [parameters: [('f18',), ('fedora-17',), ('master',)]]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
_ ERROR at teardown of TestAPIv3BuildChrootsResults.test_build_chroot_built_packages[11] _
self = <test_build_chroots.TestAPIv3BuildChrootsResults object at 0x7fff909dd5e0>
method = <bound method TestAPIv3BuildChrootsResults.test_build_chroot_built_packages of <test_build_chroots.TestAPIv3BuildChrootsResults object at 0x7fff909dd5e0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
__ ERROR at setup of TestAPIv3BuildChrootsResults.test_build_chroot_list[ASC] __
self = <sqlalchemy.engine.base.Connection object at 0x7fff90004b30>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff90006d50>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff90310da0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8e635cc0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff90006d50>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
The above exception was the direct cause of the following exception:
self = <test_build_chroots.TestAPIv3BuildChrootsResults object at 0x7fff909dd940>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8e635cc0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff90006d50>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
E       [SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
E       [parameters: [('f18',), ('fedora-17',), ('master',)]]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
_ ERROR at teardown of TestAPIv3BuildChrootsResults.test_build_chroot_list[ASC] _
self = <test_build_chroots.TestAPIv3BuildChrootsResults object at 0x7fff909dd940>
method = <bound method TestAPIv3BuildChrootsResults.test_build_chroot_list of <test_build_chroots.TestAPIv3BuildChrootsResults object at 0x7fff909dd940>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
_ ERROR at setup of TestAPIv3BuildChrootsResults.test_build_chroot_list[DESC] __
self = <sqlalchemy.engine.base.Connection object at 0x7fff8ea812b0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8ea81340>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff90310da0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8e452fc0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8ea81340>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
The above exception was the direct cause of the following exception:
self = <test_build_chroots.TestAPIv3BuildChrootsResults object at 0x7fff909ddbb0>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8e452fc0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8ea81340>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
E       [SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
E       [parameters: [('f18',), ('fedora-17',), ('master',)]]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
_ ERROR at teardown of TestAPIv3BuildChrootsResults.test_build_chroot_list[DESC] _
self = <test_build_chroots.TestAPIv3BuildChrootsResults object at 0x7fff909ddbb0>
method = <bound method TestAPIv3BuildChrootsResults.test_build_chroot_list of <test_build_chroots.TestAPIv3BuildChrootsResults object at 0x7fff909ddbb0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
_ ERROR at setup of TestAPIv3BuildChrootsResults.test_build_chroot_list_no_id __
self = <sqlalchemy.engine.base.Connection object at 0x7fff8eaa4c50>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8eaa41d0>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff90310da0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8e4f9240>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8eaa41d0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
The above exception was the direct cause of the following exception:
self = <test_build_chroots.TestAPIv3BuildChrootsResults object at 0x7fff909ddc70>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8e4f9240>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8eaa41d0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
E       [SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
E       [parameters: [('f18',), ('fedora-17',), ('master',)]]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
_ ERROR at teardown of TestAPIv3BuildChrootsResults.test_build_chroot_list_no_id _
self = <test_build_chroots.TestAPIv3BuildChrootsResults object at 0x7fff909ddc70>
method = <bound method TestAPIv3BuildChrootsResults.test_build_chroot_list_no_id of <test_build_chroots.TestAPIv3BuildChrootsResults object at 0x7fff909ddc70>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
______ ERROR at setup of TestAPIv3Builds.test_v3_builds[buildopts0-case0] ______
self = <sqlalchemy.engine.base.Connection object at 0x7fff8e9ecd10>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8e9ecd70>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff90310da0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8e2a3cc0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8e9ecd70>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
The above exception was the direct cause of the following exception:
self = <test_builds.TestAPIv3Builds object at 0x7fff909de5d0>
    @pytest.fixture
    def f_other_distgit(self):
>       self.dg0 = DistGitLogic.get_with_default()
tests/coprs_test_case.py:762: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
coprs/logic/dist_git_logic.py:15: in get_with_default
    return cls.ordered().limit(1).one()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/query.py:2777: in one
    return self._iter().one()  # type: ignore
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/query.py:2826: in _iter
    result: Union[ScalarResult[_T], Result[_T]] = self.session.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:2306: in execute
    return self._execute_internal(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:2170: in _execute_internal
    ) = compile_state_cls.orm_pre_session_exec(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/context.py:549: in orm_pre_session_exec
    session._autoflush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:3005: in _autoflush
    raise e.with_traceback(sys.exc_info()[2])
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:2994: in _autoflush
    self.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8e2a3cc0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8e9ecd70>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (raised as a result of Query-invoked autoflush; consider using a session.no_autoflush block if this flush is occurring prematurely)
E       (sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
E       [SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
E       [parameters: [('f18',), ('fedora-17',), ('master',)]]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
____ ERROR at teardown of TestAPIv3Builds.test_v3_builds[buildopts0-case0] _____
self = <test_builds.TestAPIv3Builds object at 0x7fff909de5d0>
method = <bound method TestAPIv3Builds.test_v3_builds of <test_builds.TestAPIv3Builds object at 0x7fff909de5d0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
______ ERROR at setup of TestAPIv3Builds.test_v3_builds[buildopts0-case1] ______
self = <sqlalchemy.engine.base.Connection object at 0x7fff8e9ef440>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8e9ef4a0>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff90310da0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8e39ff40>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8e9ef4a0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
The above exception was the direct cause of the following exception:
self = <test_builds.TestAPIv3Builds object at 0x7fff909de600>
    @pytest.fixture
    def f_other_distgit(self):
>       self.dg0 = DistGitLogic.get_with_default()
tests/coprs_test_case.py:762: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
coprs/logic/dist_git_logic.py:15: in get_with_default
    return cls.ordered().limit(1).one()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/query.py:2777: in one
    return self._iter().one()  # type: ignore
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/query.py:2826: in _iter
    result: Union[ScalarResult[_T], Result[_T]] = self.session.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:2306: in execute
    return self._execute_internal(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:2170: in _execute_internal
    ) = compile_state_cls.orm_pre_session_exec(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/context.py:549: in orm_pre_session_exec
    session._autoflush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:3005: in _autoflush
    raise e.with_traceback(sys.exc_info()[2])
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:2994: in _autoflush
    self.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8e39ff40>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8e9ef4a0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (raised as a result of Query-invoked autoflush; consider using a session.no_autoflush block if this flush is occurring prematurely)
E       (sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
E       [SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
E       [parameters: [('f18',), ('fedora-17',), ('master',)]]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
____ ERROR at teardown of TestAPIv3Builds.test_v3_builds[buildopts0-case1] _____
self = <test_builds.TestAPIv3Builds object at 0x7fff909de600>
method = <bound method TestAPIv3Builds.test_v3_builds of <test_builds.TestAPIv3Builds object at 0x7fff909de600>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
______ ERROR at setup of TestAPIv3Builds.test_v3_builds[buildopts0-case2] ______
self = <sqlalchemy.engine.base.Connection object at 0x7fff8ea725d0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8ea72630>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff90310da0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8e538ac0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8ea72630>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
The above exception was the direct cause of the following exception:
self = <test_builds.TestAPIv3Builds object at 0x7fff90a373e0>
    @pytest.fixture
    def f_other_distgit(self):
>       self.dg0 = DistGitLogic.get_with_default()
tests/coprs_test_case.py:762: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
coprs/logic/dist_git_logic.py:15: in get_with_default
    return cls.ordered().limit(1).one()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/query.py:2777: in one
    return self._iter().one()  # type: ignore
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/query.py:2826: in _iter
    result: Union[ScalarResult[_T], Result[_T]] = self.session.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:2306: in execute
    return self._execute_internal(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:2170: in _execute_internal
    ) = compile_state_cls.orm_pre_session_exec(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/context.py:549: in orm_pre_session_exec
    session._autoflush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:3005: in _autoflush
    raise e.with_traceback(sys.exc_info()[2])
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:2994: in _autoflush
    self.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8e538ac0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8ea72630>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (raised as a result of Query-invoked autoflush; consider using a session.no_autoflush block if this flush is occurring prematurely)
E       (sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
E       [SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
E       [parameters: [('f18',), ('fedora-17',), ('master',)]]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
____ ERROR at teardown of TestAPIv3Builds.test_v3_builds[buildopts0-case2] _____
self = <test_builds.TestAPIv3Builds object at 0x7fff90a373e0>
method = <bound method TestAPIv3Builds.test_v3_builds of <test_builds.TestAPIv3Builds object at 0x7fff90a373e0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
______ ERROR at setup of TestAPIv3Builds.test_v3_builds[buildopts0-case3] ______
self = <sqlalchemy.engine.base.Connection object at 0x7fff8ea79700>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8ea79760>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff90310da0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8e39dfc0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8ea79760>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
The above exception was the direct cause of the following exception:
self = <test_builds.TestAPIv3Builds object at 0x7fff90a34a70>
    @pytest.fixture
    def f_other_distgit(self):
>       self.dg0 = DistGitLogic.get_with_default()
tests/coprs_test_case.py:762: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
coprs/logic/dist_git_logic.py:15: in get_with_default
    return cls.ordered().limit(1).one()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/query.py:2777: in one
    return self._iter().one()  # type: ignore
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/query.py:2826: in _iter
    result: Union[ScalarResult[_T], Result[_T]] = self.session.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:2306: in execute
    return self._execute_internal(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:2170: in _execute_internal
    ) = compile_state_cls.orm_pre_session_exec(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/context.py:549: in orm_pre_session_exec
    session._autoflush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:3005: in _autoflush
    raise e.with_traceback(sys.exc_info()[2])
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:2994: in _autoflush
    self.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8e39dfc0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8ea79760>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (raised as a result of Query-invoked autoflush; consider using a session.no_autoflush block if this flush is occurring prematurely)
E       (sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
E       [SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
E       [parameters: [('f18',), ('fedora-17',), ('master',)]]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
____ ERROR at teardown of TestAPIv3Builds.test_v3_builds[buildopts0-case3] _____
self = <test_builds.TestAPIv3Builds object at 0x7fff90a34a70>
method = <bound method TestAPIv3Builds.test_v3_builds of <test_builds.TestAPIv3Builds object at 0x7fff90a34a70>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
______ ERROR at setup of TestAPIv3Builds.test_v3_builds[buildopts1-case0] ______
self = <sqlalchemy.engine.base.Connection object at 0x7fff8ea890d0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8ea89130>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff90310da0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8dd474c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8ea89130>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
The above exception was the direct cause of the following exception:
self = <test_builds.TestAPIv3Builds object at 0x7fff90a34ef0>
    @pytest.fixture
    def f_other_distgit(self):
>       self.dg0 = DistGitLogic.get_with_default()
tests/coprs_test_case.py:762: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
coprs/logic/dist_git_logic.py:15: in get_with_default
    return cls.ordered().limit(1).one()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/query.py:2777: in one
    return self._iter().one()  # type: ignore
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/query.py:2826: in _iter
    result: Union[ScalarResult[_T], Result[_T]] = self.session.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:2306: in execute
    return self._execute_internal(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:2170: in _execute_internal
    ) = compile_state_cls.orm_pre_session_exec(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/context.py:549: in orm_pre_session_exec
    session._autoflush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:3005: in _autoflush
    raise e.with_traceback(sys.exc_info()[2])
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:2994: in _autoflush
    self.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8dd474c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8ea89130>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (raised as a result of Query-invoked autoflush; consider using a session.no_autoflush block if this flush is occurring prematurely)
E       (sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
E       [SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
E       [parameters: [('f18',), ('fedora-17',), ('master',)]]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
____ ERROR at teardown of TestAPIv3Builds.test_v3_builds[buildopts1-case0] _____
self = <test_builds.TestAPIv3Builds object at 0x7fff90a34ef0>
method = <bound method TestAPIv3Builds.test_v3_builds of <test_builds.TestAPIv3Builds object at 0x7fff90a34ef0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
______ ERROR at setup of TestAPIv3Builds.test_v3_builds[buildopts1-case1] ______
self = <sqlalchemy.engine.base.Connection object at 0x7fff8e9ef770>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8e9ef800>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff90310da0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8e2a0f40>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8e9ef800>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
The above exception was the direct cause of the following exception:
self = <test_builds.TestAPIv3Builds object at 0x7fff90a353a0>
    @pytest.fixture
    def f_other_distgit(self):
>       self.dg0 = DistGitLogic.get_with_default()
tests/coprs_test_case.py:762: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
coprs/logic/dist_git_logic.py:15: in get_with_default
    return cls.ordered().limit(1).one()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/query.py:2777: in one
    return self._iter().one()  # type: ignore
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/query.py:2826: in _iter
    result: Union[ScalarResult[_T], Result[_T]] = self.session.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:2306: in execute
    return self._execute_internal(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:2170: in _execute_internal
    ) = compile_state_cls.orm_pre_session_exec(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/context.py:549: in orm_pre_session_exec
    session._autoflush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:3005: in _autoflush
    raise e.with_traceback(sys.exc_info()[2])
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:2994: in _autoflush
    self.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8e2a0f40>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8e9ef800>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (raised as a result of Query-invoked autoflush; consider using a session.no_autoflush block if this flush is occurring prematurely)
E       (sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
E       [SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
E       [parameters: [('f18',), ('fedora-17',), ('master',)]]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
____ ERROR at teardown of TestAPIv3Builds.test_v3_builds[buildopts1-case1] _____
self = <test_builds.TestAPIv3Builds object at 0x7fff90a353a0>
method = <bound method TestAPIv3Builds.test_v3_builds of <test_builds.TestAPIv3Builds object at 0x7fff90a353a0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
______ ERROR at setup of TestAPIv3Builds.test_v3_builds[buildopts1-case2] ______
self = <sqlalchemy.engine.base.Connection object at 0x7fff8ea81af0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8ea81b80>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff90310da0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8ddd6bc0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8ea81b80>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
The above exception was the direct cause of the following exception:
self = <test_builds.TestAPIv3Builds object at 0x7fff90a35cd0>
    @pytest.fixture
    def f_other_distgit(self):
>       self.dg0 = DistGitLogic.get_with_default()
tests/coprs_test_case.py:762: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
coprs/logic/dist_git_logic.py:15: in get_with_default
    return cls.ordered().limit(1).one()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/query.py:2777: in one
    return self._iter().one()  # type: ignore
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/query.py:2826: in _iter
    result: Union[ScalarResult[_T], Result[_T]] = self.session.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:2306: in execute
    return self._execute_internal(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:2170: in _execute_internal
    ) = compile_state_cls.orm_pre_session_exec(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/context.py:549: in orm_pre_session_exec
    session._autoflush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:3005: in _autoflush
    raise e.with_traceback(sys.exc_info()[2])
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:2994: in _autoflush
    self.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8ddd6bc0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8ea81b80>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (raised as a result of Query-invoked autoflush; consider using a session.no_autoflush block if this flush is occurring prematurely)
E       (sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
E       [SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
E       [parameters: [('f18',), ('fedora-17',), ('master',)]]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
____ ERROR at teardown of TestAPIv3Builds.test_v3_builds[buildopts1-case2] _____
self = <test_builds.TestAPIv3Builds object at 0x7fff90a35cd0>
method = <bound method TestAPIv3Builds.test_v3_builds of <test_builds.TestAPIv3Builds object at 0x7fff90a35cd0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
______ ERROR at setup of TestAPIv3Builds.test_v3_builds[buildopts1-case3] ______
self = <sqlalchemy.engine.base.Connection object at 0x7fff905bb770>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8eaa4ce0>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff90310da0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8e39d0c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8eaa4ce0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
The above exception was the direct cause of the following exception:
self = <test_builds.TestAPIv3Builds object at 0x7fff90a36240>
    @pytest.fixture
    def f_other_distgit(self):
>       self.dg0 = DistGitLogic.get_with_default()
tests/coprs_test_case.py:762: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
coprs/logic/dist_git_logic.py:15: in get_with_default
    return cls.ordered().limit(1).one()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/query.py:2777: in one
    return self._iter().one()  # type: ignore
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/query.py:2826: in _iter
    result: Union[ScalarResult[_T], Result[_T]] = self.session.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:2306: in execute
    return self._execute_internal(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:2170: in _execute_internal
    ) = compile_state_cls.orm_pre_session_exec(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/context.py:549: in orm_pre_session_exec
    session._autoflush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:3005: in _autoflush
    raise e.with_traceback(sys.exc_info()[2])
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:2994: in _autoflush
    self.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8e39d0c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8eaa4ce0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (raised as a result of Query-invoked autoflush; consider using a session.no_autoflush block if this flush is occurring prematurely)
E       (sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
E       [SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
E       [parameters: [('f18',), ('fedora-17',), ('master',)]]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
____ ERROR at teardown of TestAPIv3Builds.test_v3_builds[buildopts1-case3] _____
self = <test_builds.TestAPIv3Builds object at 0x7fff90a36240>
method = <bound method TestAPIv3Builds.test_v3_builds of <test_builds.TestAPIv3Builds object at 0x7fff90a36240>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
______ ERROR at setup of TestAPIv3Builds.test_v3_builds[buildopts2-case0] ______
self = <sqlalchemy.engine.base.Connection object at 0x7fff8fceb140>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8ff4a180>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff90310da0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8ddd7540>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8ff4a180>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
The above exception was the direct cause of the following exception:
self = <test_builds.TestAPIv3Builds object at 0x7fff90a36540>
    @pytest.fixture
    def f_other_distgit(self):
>       self.dg0 = DistGitLogic.get_with_default()
tests/coprs_test_case.py:762: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
coprs/logic/dist_git_logic.py:15: in get_with_default
    return cls.ordered().limit(1).one()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/query.py:2777: in one
    return self._iter().one()  # type: ignore
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/query.py:2826: in _iter
    result: Union[ScalarResult[_T], Result[_T]] = self.session.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:2306: in execute
    return self._execute_internal(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:2170: in _execute_internal
    ) = compile_state_cls.orm_pre_session_exec(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/context.py:549: in orm_pre_session_exec
    session._autoflush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:3005: in _autoflush
    raise e.with_traceback(sys.exc_info()[2])
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:2994: in _autoflush
    self.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8ddd7540>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8ff4a180>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (raised as a result of Query-invoked autoflush; consider using a session.no_autoflush block if this flush is occurring prematurely)
E       (sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
E       [SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
E       [parameters: [('f18',), ('fedora-17',), ('master',)]]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
____ ERROR at teardown of TestAPIv3Builds.test_v3_builds[buildopts2-case0] _____
self = <test_builds.TestAPIv3Builds object at 0x7fff90a36540>
method = <bound method TestAPIv3Builds.test_v3_builds of <test_builds.TestAPIv3Builds object at 0x7fff90a36540>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
______ ERROR at setup of TestAPIv3Builds.test_v3_builds[buildopts2-case1] ______
self = <sqlalchemy.engine.base.Connection object at 0x7fff8fcea480>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8ea8b4d0>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff90310da0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8dfc0a40>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8ea8b4d0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
The above exception was the direct cause of the following exception:
self = <test_builds.TestAPIv3Builds object at 0x7fff90a375c0>
    @pytest.fixture
    def f_other_distgit(self):
>       self.dg0 = DistGitLogic.get_with_default()
tests/coprs_test_case.py:762: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
coprs/logic/dist_git_logic.py:15: in get_with_default
    return cls.ordered().limit(1).one()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/query.py:2777: in one
    return self._iter().one()  # type: ignore
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/query.py:2826: in _iter
    result: Union[ScalarResult[_T], Result[_T]] = self.session.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:2306: in execute
    return self._execute_internal(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:2170: in _execute_internal
    ) = compile_state_cls.orm_pre_session_exec(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/context.py:549: in orm_pre_session_exec
    session._autoflush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:3005: in _autoflush
    raise e.with_traceback(sys.exc_info()[2])
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:2994: in _autoflush
    self.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8dfc0a40>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8ea8b4d0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (raised as a result of Query-invoked autoflush; consider using a session.no_autoflush block if this flush is occurring prematurely)
E       (sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
E       [SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
E       [parameters: [('f18',), ('fedora-17',), ('master',)]]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
____ ERROR at teardown of TestAPIv3Builds.test_v3_builds[buildopts2-case1] _____
self = <test_builds.TestAPIv3Builds object at 0x7fff90a375c0>
method = <bound method TestAPIv3Builds.test_v3_builds of <test_builds.TestAPIv3Builds object at 0x7fff90a375c0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
______ ERROR at setup of TestAPIv3Builds.test_v3_builds[buildopts2-case2] ______
self = <sqlalchemy.engine.base.Connection object at 0x7fff8ea79070>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8f249880>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff90310da0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8e4403c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8f249880>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
The above exception was the direct cause of the following exception:
self = <test_builds.TestAPIv3Builds object at 0x7fff90a37a40>
    @pytest.fixture
    def f_other_distgit(self):
>       self.dg0 = DistGitLogic.get_with_default()
tests/coprs_test_case.py:762: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
coprs/logic/dist_git_logic.py:15: in get_with_default
    return cls.ordered().limit(1).one()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/query.py:2777: in one
    return self._iter().one()  # type: ignore
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/query.py:2826: in _iter
    result: Union[ScalarResult[_T], Result[_T]] = self.session.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:2306: in execute
    return self._execute_internal(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:2170: in _execute_internal
    ) = compile_state_cls.orm_pre_session_exec(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/context.py:549: in orm_pre_session_exec
    session._autoflush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:3005: in _autoflush
    raise e.with_traceback(sys.exc_info()[2])
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:2994: in _autoflush
    self.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8e4403c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8f249880>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (raised as a result of Query-invoked autoflush; consider using a session.no_autoflush block if this flush is occurring prematurely)
E       (sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
E       [SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
E       [parameters: [('f18',), ('fedora-17',), ('master',)]]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
____ ERROR at teardown of TestAPIv3Builds.test_v3_builds[buildopts2-case2] _____
self = <test_builds.TestAPIv3Builds object at 0x7fff90a37a40>
method = <bound method TestAPIv3Builds.test_v3_builds of <test_builds.TestAPIv3Builds object at 0x7fff90a37a40>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
______ ERROR at setup of TestAPIv3Builds.test_v3_builds[buildopts2-case3] ______
self = <sqlalchemy.engine.base.Connection object at 0x7fff8f24b2f0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8f2264e0>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff90310da0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8e153540>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8f2264e0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
The above exception was the direct cause of the following exception:
self = <test_builds.TestAPIv3Builds object at 0x7fff90a37c20>
    @pytest.fixture
    def f_other_distgit(self):
>       self.dg0 = DistGitLogic.get_with_default()
tests/coprs_test_case.py:762: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
coprs/logic/dist_git_logic.py:15: in get_with_default
    return cls.ordered().limit(1).one()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/query.py:2777: in one
    return self._iter().one()  # type: ignore
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/query.py:2826: in _iter
    result: Union[ScalarResult[_T], Result[_T]] = self.session.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:2306: in execute
    return self._execute_internal(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:2170: in _execute_internal
    ) = compile_state_cls.orm_pre_session_exec(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/context.py:549: in orm_pre_session_exec
    session._autoflush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:3005: in _autoflush
    raise e.with_traceback(sys.exc_info()[2])
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:2994: in _autoflush
    self.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8e153540>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8f2264e0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (raised as a result of Query-invoked autoflush; consider using a session.no_autoflush block if this flush is occurring prematurely)
E       (sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
E       [SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
E       [parameters: [('f18',), ('fedora-17',), ('master',)]]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
____ ERROR at teardown of TestAPIv3Builds.test_v3_builds[buildopts2-case3] _____
self = <test_builds.TestAPIv3Builds object at 0x7fff90a37c20>
method = <bound method TestAPIv3Builds.test_v3_builds of <test_builds.TestAPIv3Builds object at 0x7fff90a37c20>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
______ ERROR at setup of TestAPIv3Builds.test_v3_builds[buildopts3-case0] ______
self = <sqlalchemy.engine.base.Connection object at 0x7fff8ea8a390>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8f2272f0>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff90310da0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8e634dc0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8f2272f0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
The above exception was the direct cause of the following exception:
self = <test_builds.TestAPIv3Builds object at 0x7fff90a35f10>
    @pytest.fixture
    def f_other_distgit(self):
>       self.dg0 = DistGitLogic.get_with_default()
tests/coprs_test_case.py:762: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
coprs/logic/dist_git_logic.py:15: in get_with_default
    return cls.ordered().limit(1).one()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/query.py:2777: in one
    return self._iter().one()  # type: ignore
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/query.py:2826: in _iter
    result: Union[ScalarResult[_T], Result[_T]] = self.session.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:2306: in execute
    return self._execute_internal(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:2170: in _execute_internal
    ) = compile_state_cls.orm_pre_session_exec(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/context.py:549: in orm_pre_session_exec
    session._autoflush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:3005: in _autoflush
    raise e.with_traceback(sys.exc_info()[2])
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:2994: in _autoflush
    self.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8e634dc0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8f2272f0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (raised as a result of Query-invoked autoflush; consider using a session.no_autoflush block if this flush is occurring prematurely)
E       (sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
E       [SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
E       [parameters: [('f18',), ('fedora-17',), ('master',)]]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
____ ERROR at teardown of TestAPIv3Builds.test_v3_builds[buildopts3-case0] _____
self = <test_builds.TestAPIv3Builds object at 0x7fff90a35f10>
method = <bound method TestAPIv3Builds.test_v3_builds of <test_builds.TestAPIv3Builds object at 0x7fff90a35f10>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
______ ERROR at setup of TestAPIv3Builds.test_v3_builds[buildopts3-case1] ______
self = <sqlalchemy.engine.base.Connection object at 0x7fff8f225fd0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8f2932c0>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff90310da0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8e151540>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8f2932c0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
The above exception was the direct cause of the following exception:
self = <test_builds.TestAPIv3Builds object at 0x7fff90a34920>
    @pytest.fixture
    def f_other_distgit(self):
>       self.dg0 = DistGitLogic.get_with_default()
tests/coprs_test_case.py:762: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
coprs/logic/dist_git_logic.py:15: in get_with_default
    return cls.ordered().limit(1).one()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/query.py:2777: in one
    return self._iter().one()  # type: ignore
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/query.py:2826: in _iter
    result: Union[ScalarResult[_T], Result[_T]] = self.session.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:2306: in execute
    return self._execute_internal(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:2170: in _execute_internal
    ) = compile_state_cls.orm_pre_session_exec(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/context.py:549: in orm_pre_session_exec
    session._autoflush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:3005: in _autoflush
    raise e.with_traceback(sys.exc_info()[2])
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:2994: in _autoflush
    self.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8e151540>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8f2932c0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (raised as a result of Query-invoked autoflush; consider using a session.no_autoflush block if this flush is occurring prematurely)
E       (sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
E       [SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
E       [parameters: [('f18',), ('fedora-17',), ('master',)]]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
____ ERROR at teardown of TestAPIv3Builds.test_v3_builds[buildopts3-case1] _____
self = <test_builds.TestAPIv3Builds object at 0x7fff90a34920>
method = <bound method TestAPIv3Builds.test_v3_builds of <test_builds.TestAPIv3Builds object at 0x7fff90a34920>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
______ ERROR at setup of TestAPIv3Builds.test_v3_builds[buildopts3-case2] ______
self = <sqlalchemy.engine.base.Connection object at 0x7fff8f249a30>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8f1c3cb0>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff90310da0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8de662c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8f1c3cb0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
The above exception was the direct cause of the following exception:
self = <test_builds.TestAPIv3Builds object at 0x7fff90a349b0>
    @pytest.fixture
    def f_other_distgit(self):
>       self.dg0 = DistGitLogic.get_with_default()
tests/coprs_test_case.py:762: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
coprs/logic/dist_git_logic.py:15: in get_with_default
    return cls.ordered().limit(1).one()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/query.py:2777: in one
    return self._iter().one()  # type: ignore
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/query.py:2826: in _iter
    result: Union[ScalarResult[_T], Result[_T]] = self.session.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:2306: in execute
    return self._execute_internal(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:2170: in _execute_internal
    ) = compile_state_cls.orm_pre_session_exec(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/context.py:549: in orm_pre_session_exec
    session._autoflush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:3005: in _autoflush
    raise e.with_traceback(sys.exc_info()[2])
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:2994: in _autoflush
    self.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8de662c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8f1c3cb0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (raised as a result of Query-invoked autoflush; consider using a session.no_autoflush block if this flush is occurring prematurely)
E       (sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
E       [SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
E       [parameters: [('f18',), ('fedora-17',), ('master',)]]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
____ ERROR at teardown of TestAPIv3Builds.test_v3_builds[buildopts3-case2] _____
self = <test_builds.TestAPIv3Builds object at 0x7fff90a349b0>
method = <bound method TestAPIv3Builds.test_v3_builds of <test_builds.TestAPIv3Builds object at 0x7fff90a349b0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
______ ERROR at setup of TestAPIv3Builds.test_v3_builds[buildopts3-case3] ______
self = <sqlalchemy.engine.base.Connection object at 0x7fff8f1c3c80>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8f1cdd90>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff90310da0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8e2fc6c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8f1cdd90>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
The above exception was the direct cause of the following exception:
self = <test_builds.TestAPIv3Builds object at 0x7fff90a34a40>
    @pytest.fixture
    def f_other_distgit(self):
>       self.dg0 = DistGitLogic.get_with_default()
tests/coprs_test_case.py:762: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
coprs/logic/dist_git_logic.py:15: in get_with_default
    return cls.ordered().limit(1).one()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/query.py:2777: in one
    return self._iter().one()  # type: ignore
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/query.py:2826: in _iter
    result: Union[ScalarResult[_T], Result[_T]] = self.session.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:2306: in execute
    return self._execute_internal(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:2170: in _execute_internal
    ) = compile_state_cls.orm_pre_session_exec(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/context.py:549: in orm_pre_session_exec
    session._autoflush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:3005: in _autoflush
    raise e.with_traceback(sys.exc_info()[2])
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:2994: in _autoflush
    self.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8e2fc6c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8f1cdd90>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (raised as a result of Query-invoked autoflush; consider using a session.no_autoflush block if this flush is occurring prematurely)
E       (sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
E       [SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
E       [parameters: [('f18',), ('fedora-17',), ('master',)]]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
____ ERROR at teardown of TestAPIv3Builds.test_v3_builds[buildopts3-case3] _____
self = <test_builds.TestAPIv3Builds object at 0x7fff90a34a40>
method = <bound method TestAPIv3Builds.test_v3_builds of <test_builds.TestAPIv3Builds object at 0x7fff90a34a40>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
________ ERROR at setup of TestAPIv3Builds.test_v3_build_failure[case0] ________
self = <sqlalchemy.engine.base.Connection object at 0x7fff8f2051c0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8f204b30>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff90310da0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8de76940>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8f204b30>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
The above exception was the direct cause of the following exception:
self = <test_builds.TestAPIv3Builds object at 0x7fff90a34da0>
    @pytest.fixture
    def f_other_distgit(self):
>       self.dg0 = DistGitLogic.get_with_default()
tests/coprs_test_case.py:762: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
coprs/logic/dist_git_logic.py:15: in get_with_default
    return cls.ordered().limit(1).one()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/query.py:2777: in one
    return self._iter().one()  # type: ignore
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/query.py:2826: in _iter
    result: Union[ScalarResult[_T], Result[_T]] = self.session.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:2306: in execute
    return self._execute_internal(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:2170: in _execute_internal
    ) = compile_state_cls.orm_pre_session_exec(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/context.py:549: in orm_pre_session_exec
    session._autoflush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:3005: in _autoflush
    raise e.with_traceback(sys.exc_info()[2])
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:2994: in _autoflush
    self.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8de76940>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8f204b30>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (raised as a result of Query-invoked autoflush; consider using a session.no_autoflush block if this flush is occurring prematurely)
E       (sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
E       [SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
E       [parameters: [('f18',), ('fedora-17',), ('master',)]]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
______ ERROR at teardown of TestAPIv3Builds.test_v3_build_failure[case0] _______
self = <test_builds.TestAPIv3Builds object at 0x7fff90a34da0>
method = <bound method TestAPIv3Builds.test_v3_build_failure of <test_builds.TestAPIv3Builds object at 0x7fff90a34da0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
________ ERROR at setup of TestAPIv3Builds.test_v3_build_failure[case1] ________
self = <sqlalchemy.engine.base.Connection object at 0x7fff8f1ce7b0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8f1ce810>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff90310da0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8e441540>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8f1ce810>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
The above exception was the direct cause of the following exception:
self = <test_builds.TestAPIv3Builds object at 0x7fff90a34f20>
    @pytest.fixture
    def f_other_distgit(self):
>       self.dg0 = DistGitLogic.get_with_default()
tests/coprs_test_case.py:762: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
coprs/logic/dist_git_logic.py:15: in get_with_default
    return cls.ordered().limit(1).one()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/query.py:2777: in one
    return self._iter().one()  # type: ignore
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/query.py:2826: in _iter
    result: Union[ScalarResult[_T], Result[_T]] = self.session.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:2306: in execute
    return self._execute_internal(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:2170: in _execute_internal
    ) = compile_state_cls.orm_pre_session_exec(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/context.py:549: in orm_pre_session_exec
    session._autoflush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:3005: in _autoflush
    raise e.with_traceback(sys.exc_info()[2])
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:2994: in _autoflush
    self.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8e441540>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8f1ce810>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (raised as a result of Query-invoked autoflush; consider using a session.no_autoflush block if this flush is occurring prematurely)
E       (sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
E       [SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
E       [parameters: [('f18',), ('fedora-17',), ('master',)]]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
______ ERROR at teardown of TestAPIv3Builds.test_v3_build_failure[case1] _______
self = <test_builds.TestAPIv3Builds object at 0x7fff90a34f20>
method = <bound method TestAPIv3Builds.test_v3_build_failure of <test_builds.TestAPIv3Builds object at 0x7fff90a34f20>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
_____________ ERROR at setup of TestAPIv3Builds.test_v3_get_build ______________
self = <sqlalchemy.engine.base.Connection object at 0x7fff8f2279e0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8f227380>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff90310da0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8ddd4f40>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8f227380>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
The above exception was the direct cause of the following exception:
self = <test_builds.TestAPIv3Builds object at 0x7fff90a35040>
    @pytest.fixture
    def f_other_distgit(self):
>       self.dg0 = DistGitLogic.get_with_default()
tests/coprs_test_case.py:762: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
coprs/logic/dist_git_logic.py:15: in get_with_default
    return cls.ordered().limit(1).one()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/query.py:2777: in one
    return self._iter().one()  # type: ignore
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/query.py:2826: in _iter
    result: Union[ScalarResult[_T], Result[_T]] = self.session.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:2306: in execute
    return self._execute_internal(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:2170: in _execute_internal
    ) = compile_state_cls.orm_pre_session_exec(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/context.py:549: in orm_pre_session_exec
    session._autoflush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:3005: in _autoflush
    raise e.with_traceback(sys.exc_info()[2])
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:2994: in _autoflush
    self.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8ddd4f40>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8f227380>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (raised as a result of Query-invoked autoflush; consider using a session.no_autoflush block if this flush is occurring prematurely)
E       (sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
E       [SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
E       [parameters: [('f18',), ('fedora-17',), ('master',)]]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
____________ ERROR at teardown of TestAPIv3Builds.test_v3_get_build ____________
self = <test_builds.TestAPIv3Builds object at 0x7fff90a35040>
method = <bound method TestAPIv3Builds.test_v3_get_build of <test_builds.TestAPIv3Builds object at 0x7fff90a35040>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
_ ERROR at setup of TestAPIv3Builds.test_v3_builds_exclude_chroots[exclude_chroots0-case0] _
self = <sqlalchemy.engine.base.Connection object at 0x7fff90041820>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff90041b20>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff90310da0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8de770c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff90041b20>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
The above exception was the direct cause of the following exception:
self = <test_builds.TestAPIv3Builds object at 0x7fff90a35400>
    @pytest.fixture
    def f_other_distgit(self):
>       self.dg0 = DistGitLogic.get_with_default()
tests/coprs_test_case.py:762: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
coprs/logic/dist_git_logic.py:15: in get_with_default
    return cls.ordered().limit(1).one()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/query.py:2777: in one
    return self._iter().one()  # type: ignore
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/query.py:2826: in _iter
    result: Union[ScalarResult[_T], Result[_T]] = self.session.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:2306: in execute
    return self._execute_internal(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:2170: in _execute_internal
    ) = compile_state_cls.orm_pre_session_exec(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/context.py:549: in orm_pre_session_exec
    session._autoflush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:3005: in _autoflush
    raise e.with_traceback(sys.exc_info()[2])
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:2994: in _autoflush
    self.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8de770c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff90041b20>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (raised as a result of Query-invoked autoflush; consider using a session.no_autoflush block if this flush is occurring prematurely)
E       (sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
E       [SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
E       [parameters: [('f18',), ('fedora-17',), ('master',)]]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
_ ERROR at teardown of TestAPIv3Builds.test_v3_builds_exclude_chroots[exclude_chroots0-case0] _
self = <test_builds.TestAPIv3Builds object at 0x7fff90a35400>
method = <bound method TestAPIv3Builds.test_v3_builds_exclude_chroots of <test_builds.TestAPIv3Builds object at 0x7fff90a35400>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
_ ERROR at setup of TestAPIv3Builds.test_v3_builds_exclude_chroots[exclude_chroots0-case1] _
self = <sqlalchemy.engine.base.Connection object at 0x7fff8ea89340>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8ea89730>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff90310da0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8e0f8ac0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8ea89730>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
The above exception was the direct cause of the following exception:
self = <test_builds.TestAPIv3Builds object at 0x7fff90a35880>
    @pytest.fixture
    def f_other_distgit(self):
>       self.dg0 = DistGitLogic.get_with_default()
tests/coprs_test_case.py:762: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
coprs/logic/dist_git_logic.py:15: in get_with_default
    return cls.ordered().limit(1).one()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/query.py:2777: in one
    return self._iter().one()  # type: ignore
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/query.py:2826: in _iter
    result: Union[ScalarResult[_T], Result[_T]] = self.session.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:2306: in execute
    return self._execute_internal(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:2170: in _execute_internal
    ) = compile_state_cls.orm_pre_session_exec(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/context.py:549: in orm_pre_session_exec
    session._autoflush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:3005: in _autoflush
    raise e.with_traceback(sys.exc_info()[2])
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:2994: in _autoflush
    self.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8e0f8ac0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8ea89730>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (raised as a result of Query-invoked autoflush; consider using a session.no_autoflush block if this flush is occurring prematurely)
E       (sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
E       [SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
E       [parameters: [('f18',), ('fedora-17',), ('master',)]]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
_ ERROR at teardown of TestAPIv3Builds.test_v3_builds_exclude_chroots[exclude_chroots0-case1] _
self = <test_builds.TestAPIv3Builds object at 0x7fff90a35880>
method = <bound method TestAPIv3Builds.test_v3_builds_exclude_chroots of <test_builds.TestAPIv3Builds object at 0x7fff90a35880>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
_ ERROR at setup of TestAPIv3Builds.test_v3_builds_exclude_chroots[exclude_chroots0-case2] _
self = <sqlalchemy.engine.base.Connection object at 0x7fff8ed2c680>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8ed2c710>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff90310da0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8dd47a40>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8ed2c710>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
The above exception was the direct cause of the following exception:
self = <test_builds.TestAPIv3Builds object at 0x7fff90a35910>
    @pytest.fixture
    def f_other_distgit(self):
>       self.dg0 = DistGitLogic.get_with_default()
tests/coprs_test_case.py:762: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
coprs/logic/dist_git_logic.py:15: in get_with_default
    return cls.ordered().limit(1).one()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/query.py:2777: in one
    return self._iter().one()  # type: ignore
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/query.py:2826: in _iter
    result: Union[ScalarResult[_T], Result[_T]] = self.session.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:2306: in execute
    return self._execute_internal(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:2170: in _execute_internal
    ) = compile_state_cls.orm_pre_session_exec(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/context.py:549: in orm_pre_session_exec
    session._autoflush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:3005: in _autoflush
    raise e.with_traceback(sys.exc_info()[2])
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:2994: in _autoflush
    self.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8dd47a40>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8ed2c710>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (raised as a result of Query-invoked autoflush; consider using a session.no_autoflush block if this flush is occurring prematurely)
E       (sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
E       [SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
E       [parameters: [('f18',), ('fedora-17',), ('master',)]]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
_ ERROR at teardown of TestAPIv3Builds.test_v3_builds_exclude_chroots[exclude_chroots0-case2] _
self = <test_builds.TestAPIv3Builds object at 0x7fff90a35910>
method = <bound method TestAPIv3Builds.test_v3_builds_exclude_chroots of <test_builds.TestAPIv3Builds object at 0x7fff90a35910>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
_ ERROR at setup of TestAPIv3Builds.test_v3_builds_exclude_chroots[exclude_chroots0-case3] _
self = <sqlalchemy.engine.base.Connection object at 0x7fff8ece05c0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8ece0620>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff90310da0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8e599b40>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8ece0620>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
The above exception was the direct cause of the following exception:
self = <test_builds.TestAPIv3Builds object at 0x7fff90a35a00>
    @pytest.fixture
    def f_other_distgit(self):
>       self.dg0 = DistGitLogic.get_with_default()
tests/coprs_test_case.py:762: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
coprs/logic/dist_git_logic.py:15: in get_with_default
    return cls.ordered().limit(1).one()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/query.py:2777: in one
    return self._iter().one()  # type: ignore
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/query.py:2826: in _iter
    result: Union[ScalarResult[_T], Result[_T]] = self.session.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:2306: in execute
    return self._execute_internal(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:2170: in _execute_internal
    ) = compile_state_cls.orm_pre_session_exec(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/context.py:549: in orm_pre_session_exec
    session._autoflush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:3005: in _autoflush
    raise e.with_traceback(sys.exc_info()[2])
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:2994: in _autoflush
    self.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8e599b40>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8ece0620>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (raised as a result of Query-invoked autoflush; consider using a session.no_autoflush block if this flush is occurring prematurely)
E       (sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
E       [SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
E       [parameters: [('f18',), ('fedora-17',), ('master',)]]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
_ ERROR at teardown of TestAPIv3Builds.test_v3_builds_exclude_chroots[exclude_chroots0-case3] _
self = <test_builds.TestAPIv3Builds object at 0x7fff90a35a00>
method = <bound method TestAPIv3Builds.test_v3_builds_exclude_chroots of <test_builds.TestAPIv3Builds object at 0x7fff90a35a00>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
_ ERROR at setup of TestAPIv3Builds.test_v3_builds_exclude_chroots[exclude_chroots1-case0] _
self = <sqlalchemy.engine.base.Connection object at 0x7fff8ece3950>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8ece39b0>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff90310da0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8dd35940>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8ece39b0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
The above exception was the direct cause of the following exception:
self = <test_builds.TestAPIv3Builds object at 0x7fff90a35b20>
    @pytest.fixture
    def f_other_distgit(self):
>       self.dg0 = DistGitLogic.get_with_default()
tests/coprs_test_case.py:762: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
coprs/logic/dist_git_logic.py:15: in get_with_default
    return cls.ordered().limit(1).one()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/query.py:2777: in one
    return self._iter().one()  # type: ignore
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/query.py:2826: in _iter
    result: Union[ScalarResult[_T], Result[_T]] = self.session.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:2306: in execute
    return self._execute_internal(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:2170: in _execute_internal
    ) = compile_state_cls.orm_pre_session_exec(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/context.py:549: in orm_pre_session_exec
    session._autoflush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:3005: in _autoflush
    raise e.with_traceback(sys.exc_info()[2])
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:2994: in _autoflush
    self.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8dd35940>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8ece39b0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (raised as a result of Query-invoked autoflush; consider using a session.no_autoflush block if this flush is occurring prematurely)
E       (sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
E       [SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
E       [parameters: [('f18',), ('fedora-17',), ('master',)]]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
_ ERROR at teardown of TestAPIv3Builds.test_v3_builds_exclude_chroots[exclude_chroots1-case0] _
self = <test_builds.TestAPIv3Builds object at 0x7fff90a35b20>
method = <bound method TestAPIv3Builds.test_v3_builds_exclude_chroots of <test_builds.TestAPIv3Builds object at 0x7fff90a35b20>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
_ ERROR at setup of TestAPIv3Builds.test_v3_builds_exclude_chroots[exclude_chroots1-case1] _
self = <sqlalchemy.engine.base.Connection object at 0x7fff8edaa390>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8edaab10>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff90310da0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8dcccdc0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8edaab10>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
The above exception was the direct cause of the following exception:
self = <test_builds.TestAPIv3Builds object at 0x7fff90a35ca0>
    @pytest.fixture
    def f_other_distgit(self):
>       self.dg0 = DistGitLogic.get_with_default()
tests/coprs_test_case.py:762: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
coprs/logic/dist_git_logic.py:15: in get_with_default
    return cls.ordered().limit(1).one()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/query.py:2777: in one
    return self._iter().one()  # type: ignore
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/query.py:2826: in _iter
    result: Union[ScalarResult[_T], Result[_T]] = self.session.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:2306: in execute
    return self._execute_internal(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:2170: in _execute_internal
    ) = compile_state_cls.orm_pre_session_exec(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/context.py:549: in orm_pre_session_exec
    session._autoflush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:3005: in _autoflush
    raise e.with_traceback(sys.exc_info()[2])
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:2994: in _autoflush
    self.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8dcccdc0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8edaab10>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (raised as a result of Query-invoked autoflush; consider using a session.no_autoflush block if this flush is occurring prematurely)
E       (sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
E       [SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
E       [parameters: [('f18',), ('fedora-17',), ('master',)]]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
_ ERROR at teardown of TestAPIv3Builds.test_v3_builds_exclude_chroots[exclude_chroots1-case1] _
self = <test_builds.TestAPIv3Builds object at 0x7fff90a35ca0>
method = <bound method TestAPIv3Builds.test_v3_builds_exclude_chroots of <test_builds.TestAPIv3Builds object at 0x7fff90a35ca0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
_ ERROR at setup of TestAPIv3Builds.test_v3_builds_exclude_chroots[exclude_chroots1-case2] _
self = <sqlalchemy.engine.base.Connection object at 0x7fff8edb5be0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8edb5c40>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff90310da0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8dce64c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8edb5c40>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
The above exception was the direct cause of the following exception:
self = <test_builds.TestAPIv3Builds object at 0x7fff90a35e20>
    @pytest.fixture
    def f_other_distgit(self):
>       self.dg0 = DistGitLogic.get_with_default()
tests/coprs_test_case.py:762: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
coprs/logic/dist_git_logic.py:15: in get_with_default
    return cls.ordered().limit(1).one()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/query.py:2777: in one
    return self._iter().one()  # type: ignore
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/query.py:2826: in _iter
    result: Union[ScalarResult[_T], Result[_T]] = self.session.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:2306: in execute
    return self._execute_internal(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:2170: in _execute_internal
    ) = compile_state_cls.orm_pre_session_exec(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/context.py:549: in orm_pre_session_exec
    session._autoflush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:3005: in _autoflush
    raise e.with_traceback(sys.exc_info()[2])
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:2994: in _autoflush
    self.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8dce64c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8edb5c40>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (raised as a result of Query-invoked autoflush; consider using a session.no_autoflush block if this flush is occurring prematurely)
E       (sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
E       [SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
E       [parameters: [('f18',), ('fedora-17',), ('master',)]]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
_ ERROR at teardown of TestAPIv3Builds.test_v3_builds_exclude_chroots[exclude_chroots1-case2] _
self = <test_builds.TestAPIv3Builds object at 0x7fff90a35e20>
method = <bound method TestAPIv3Builds.test_v3_builds_exclude_chroots of <test_builds.TestAPIv3Builds object at 0x7fff90a35e20>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
_ ERROR at setup of TestAPIv3Builds.test_v3_builds_exclude_chroots[exclude_chroots1-case3] _
self = <sqlalchemy.engine.base.Connection object at 0x7fff8ed70e60>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8ed70ec0>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff90310da0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8e33c1c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8ed70ec0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
The above exception was the direct cause of the following exception:
self = <test_builds.TestAPIv3Builds object at 0x7fff90a35f40>
    @pytest.fixture
    def f_other_distgit(self):
>       self.dg0 = DistGitLogic.get_with_default()
tests/coprs_test_case.py:762: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
coprs/logic/dist_git_logic.py:15: in get_with_default
    return cls.ordered().limit(1).one()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/query.py:2777: in one
    return self._iter().one()  # type: ignore
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/query.py:2826: in _iter
    result: Union[ScalarResult[_T], Result[_T]] = self.session.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:2306: in execute
    return self._execute_internal(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:2170: in _execute_internal
    ) = compile_state_cls.orm_pre_session_exec(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/context.py:549: in orm_pre_session_exec
    session._autoflush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:3005: in _autoflush
    raise e.with_traceback(sys.exc_info()[2])
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:2994: in _autoflush
    self.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8e33c1c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8ed70ec0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (raised as a result of Query-invoked autoflush; consider using a session.no_autoflush block if this flush is occurring prematurely)
E       (sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
E       [SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
E       [parameters: [('f18',), ('fedora-17',), ('master',)]]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
_ ERROR at teardown of TestAPIv3Builds.test_v3_builds_exclude_chroots[exclude_chroots1-case3] _
self = <test_builds.TestAPIv3Builds object at 0x7fff90a35f40>
method = <bound method TestAPIv3Builds.test_v3_builds_exclude_chroots of <test_builds.TestAPIv3Builds object at 0x7fff90a35f40>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
_________ ERROR at setup of TestWebUIBuilds.test_isolation_option_set __________
self = <sqlalchemy.engine.base.Connection object at 0x7fff8ed72db0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8ed73260>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff90310da0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8dccfec0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8ed73260>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
The above exception was the direct cause of the following exception:
self = <test_builds.TestWebUIBuilds object at 0x7fff90a36db0>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8dccfec0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8ed73260>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
E       [SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
E       [parameters: [('f18',), ('fedora-17',), ('master',)]]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
________ ERROR at teardown of TestWebUIBuilds.test_isolation_option_set ________
self = <test_builds.TestWebUIBuilds object at 0x7fff90a36db0>
method = <bound method TestWebUIBuilds.test_isolation_option_set of <test_builds.TestWebUIBuilds object at 0x7fff90a36db0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
______ ERROR at setup of TestAPIv3BuildsResults.test_build_built_packages ______
self = <sqlalchemy.engine.base.Connection object at 0x7fff8ece3e00>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8ece3ec0>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff90310da0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8e440d40>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8ece3ec0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
The above exception was the direct cause of the following exception:
self = <test_builds.TestAPIv3BuildsResults object at 0x7fff90a37ef0>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8e440d40>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8ece3ec0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
E       [SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
E       [parameters: [('f18',), ('fedora-17',), ('master',)]]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
____ ERROR at teardown of TestAPIv3BuildsResults.test_build_built_packages _____
self = <test_builds.TestAPIv3BuildsResults object at 0x7fff90a37ef0>
method = <bound method TestAPIv3BuildsResults.test_build_built_packages of <test_builds.TestAPIv3BuildsResults object at 0x7fff90a37ef0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
___________ ERROR at setup of TestCoprChroots.test_edit_chroot_form ____________
self = <sqlalchemy.engine.base.Connection object at 0x7fff8ea81670>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8ea81cd0>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff90310da0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8dc641c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8ea81cd0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
The above exception was the direct cause of the following exception:
self = <test_copr_chroot.TestCoprChroots object at 0x7fff90ab52b0>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8dc641c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8ea81cd0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
E       [SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
E       [parameters: [('f18',), ('fedora-17',), ('master',)]]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
__________ ERROR at teardown of TestCoprChroots.test_edit_chroot_form __________
self = <test_copr_chroot.TestCoprChroots object at 0x7fff90ab52b0>
method = <bound method TestCoprChroots.test_edit_chroot_form of <test_copr_chroot.TestCoprChroots object at 0x7fff90ab52b0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
____________ ERROR at setup of TestCoprChroots.test_v3_edit_chroot _____________
self = <sqlalchemy.engine.base.Connection object at 0x7fff8f215be0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8f2147d0>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff90310da0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8e151dc0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8f2147d0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
The above exception was the direct cause of the following exception:
self = <test_copr_chroot.TestCoprChroots object at 0x7fff90ab52e0>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8e151dc0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8f2147d0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
E       [SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
E       [parameters: [('f18',), ('fedora-17',), ('master',)]]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
___________ ERROR at teardown of TestCoprChroots.test_v3_edit_chroot ___________
self = <test_copr_chroot.TestCoprChroots object at 0x7fff90ab52e0>
method = <bound method TestCoprChroots.test_v3_edit_chroot of <test_copr_chroot.TestCoprChroots object at 0x7fff90ab52e0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
_________ ERROR at setup of TestCoprChroots.test_v3_edit_chroot_reset __________
self = <sqlalchemy.engine.base.Connection object at 0x7fff8e9efbc0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8e9edd90>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff90310da0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8dc67a40>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8e9edd90>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
The above exception was the direct cause of the following exception:
self = <test_copr_chroot.TestCoprChroots object at 0x7fff90ab55b0>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8dc67a40>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8e9edd90>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
E       [SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
E       [parameters: [('f18',), ('fedora-17',), ('master',)]]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
________ ERROR at teardown of TestCoprChroots.test_v3_edit_chroot_reset ________
self = <test_copr_chroot.TestCoprChroots object at 0x7fff90ab55b0>
method = <bound method TestCoprChroots.test_v3_edit_chroot_reset of <test_copr_chroot.TestCoprChroots object at 0x7fff90ab55b0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
________ ERROR at setup of TestCoprChroots.test_edit_chroot_permission _________
self = <sqlalchemy.engine.base.Connection object at 0x7fff8ecf8050>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8ecf8830>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff90310da0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8e3b3640>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8ecf8830>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
The above exception was the direct cause of the following exception:
self = <test_copr_chroot.TestCoprChroots object at 0x7fff90ab5a00>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8e3b3640>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8ecf8830>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
E       [SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
E       [parameters: [('f18',), ('fedora-17',), ('master',)]]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
_______ ERROR at teardown of TestCoprChroots.test_edit_chroot_permission _______
self = <test_copr_chroot.TestCoprChroots object at 0x7fff90ab5a00>
method = <bound method TestCoprChroots.test_edit_chroot_permission of <test_copr_chroot.TestCoprChroots object at 0x7fff90ab5a00>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
________ ERROR at setup of TestCoprChroots.test_edit_chroot_form_error _________
self = <sqlalchemy.engine.base.Connection object at 0x7fff8ed14920>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8ed14980>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff90310da0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8e33dbc0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8ed14980>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
The above exception was the direct cause of the following exception:
self = <test_copr_chroot.TestCoprChroots object at 0x7fff90ab5d00>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8e33dbc0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8ed14980>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
E       [SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
E       [parameters: [('f18',), ('fedora-17',), ('master',)]]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
_______ ERROR at teardown of TestCoprChroots.test_edit_chroot_form_error _______
self = <test_copr_chroot.TestCoprChroots object at 0x7fff90ab5d00>
method = <bound method TestCoprChroots.test_edit_chroot_form_error of <test_copr_chroot.TestCoprChroots object at 0x7fff90ab5d00>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
______________ ERROR at setup of TestCoprDir.test_custom_copr_dir ______________
self = <sqlalchemy.engine.base.Connection object at 0x7fff8ed17ad0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8ed17b60>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff90310da0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8e3c50c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8ed17b60>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
The above exception was the direct cause of the following exception:
self = <test_coprdirs.TestCoprDir object at 0x7fff90ab6450>
    @pytest.fixture
    def f_other_distgit(self):
>       self.dg0 = DistGitLogic.get_with_default()
tests/coprs_test_case.py:762: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
coprs/logic/dist_git_logic.py:15: in get_with_default
    return cls.ordered().limit(1).one()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/query.py:2777: in one
    return self._iter().one()  # type: ignore
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/query.py:2826: in _iter
    result: Union[ScalarResult[_T], Result[_T]] = self.session.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:2306: in execute
    return self._execute_internal(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:2170: in _execute_internal
    ) = compile_state_cls.orm_pre_session_exec(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/context.py:549: in orm_pre_session_exec
    session._autoflush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:3005: in _autoflush
    raise e.with_traceback(sys.exc_info()[2])
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:2994: in _autoflush
    self.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8e3c50c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8ed17b60>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (raised as a result of Query-invoked autoflush; consider using a session.no_autoflush block if this flush is occurring prematurely)
E       (sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
E       [SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
E       [parameters: [('f18',), ('fedora-17',), ('master',)]]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
____________ ERROR at teardown of TestCoprDir.test_custom_copr_dir _____________
self = <test_coprdirs.TestCoprDir object at 0x7fff90ab6450>
method = <bound method TestCoprDir.test_custom_copr_dir of <test_coprdirs.TestCoprDir object at 0x7fff90ab6450>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
___________ ERROR at setup of TestCoprDir.test_custom_dir_validation ___________
self = <sqlalchemy.engine.base.Connection object at 0x7fff8eceef90>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8ecef020>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff90310da0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8de90240>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8ecef020>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
The above exception was the direct cause of the following exception:
self = <test_coprdirs.TestCoprDir object at 0x7fff90ab69f0>
    @pytest.fixture
    def f_other_distgit(self):
>       self.dg0 = DistGitLogic.get_with_default()
tests/coprs_test_case.py:762: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
coprs/logic/dist_git_logic.py:15: in get_with_default
    return cls.ordered().limit(1).one()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/query.py:2777: in one
    return self._iter().one()  # type: ignore
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/query.py:2826: in _iter
    result: Union[ScalarResult[_T], Result[_T]] = self.session.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:2306: in execute
    return self._execute_internal(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:2170: in _execute_internal
    ) = compile_state_cls.orm_pre_session_exec(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/context.py:549: in orm_pre_session_exec
    session._autoflush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:3005: in _autoflush
    raise e.with_traceback(sys.exc_info()[2])
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:2994: in _autoflush
    self.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8de90240>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8ecef020>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (raised as a result of Query-invoked autoflush; consider using a session.no_autoflush block if this flush is occurring prematurely)
E       (sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
E       [SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
E       [parameters: [('f18',), ('fedora-17',), ('master',)]]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
_________ ERROR at teardown of TestCoprDir.test_custom_dir_validation __________
self = <test_coprdirs.TestCoprDir object at 0x7fff90ab69f0>
method = <bound method TestCoprDir.test_custom_dir_validation of <test_coprdirs.TestCoprDir object at 0x7fff90ab69f0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
_______ ERROR at teardown of TestMockChroot.test_list_available_chroots ________
self = <test_mock_chroot.TestMockChroot object at 0x7fff90a8c1a0>
method = <bound method TestMockChroot.test_list_available_chroots of <test_mock_chroot.TestMockChroot object at 0x7fff90a8c1a0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
------------------------------ Captured log call -------------------------------
ERROR    coprs:error_handlers.py:102 Admin-only exception
Request: GET http://localhost.localdomain/api_3/mock-chroots/list
User: None
Traceback (most recent call last):
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py", line 1929, in _exec_single_context
    self.dialect.do_executemany(
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py", line 921, in do_executemany
    cursor.executemany(statement, parameters)
sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
  File "/usr/lib/python3.12/site-packages/flask/app.py", line 870, in full_dispatch_request
    rv = self.dispatch_request()
         ^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.12/site-packages/flask/app.py", line 855, in dispatch_request
    return self.ensure_sync(self.view_functions[rule.endpoint])(**view_args)  # type: ignore[no-any-return]
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.12/site-packages/flask_restx/api.py", line 402, in wrapper
    resp = resource(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.12/site-packages/flask/views.py", line 110, in view
    return current_app.ensure_sync(self.dispatch_request)(**kwargs)  # type: ignore[no-any-return]
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.12/site-packages/flask_restx/resource.py", line 41, in dispatch_request
    resp = meth(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^
  File "/builddir/build/BUILD/copr-frontend-1.204/coprs_frontend/coprs/views/apiv3_ns/apiv3_mock_chroots.py", line 28, in get
    chroots = MockChrootsLogic.active_names_with_comments()
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/builddir/build/BUILD/copr-frontend-1.204/coprs_frontend/coprs/logic/coprs_logic.py", line 1419, in active_names_with_comments
    return [(ch.name, ch.comment) for ch in cls.get_multiple(active_only=True).all()]
                                            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/query.py", line 2672, in all
    return self._iter().all()  # type: ignore
           ^^^^^^^^^^^^
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/query.py", line 2826, in _iter
    result: Union[ScalarResult[_T], Result[_T]] = self.session.execute(
                                                  ^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py", line 2306, in execute
    return self._execute_internal(
           ^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py", line 2170, in _execute_internal
    ) = compile_state_cls.orm_pre_session_exec(
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/context.py", line 549, in orm_pre_session_exec
    session._autoflush()
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py", line 3005, in _autoflush
    raise e.with_traceback(sys.exc_info()[2])
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py", line 2994, in _autoflush
    self.flush()
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py", line 4296, in flush
    self._flush(objects)
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py", line 4431, in _flush
    with util.safe_reraise():
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py", line 146, in __exit__
    raise exc_value.with_traceback(exc_tb)
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py", line 4392, in _flush
    flush_context.execute()
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py", line 466, in execute
    rec.execute(self)
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py", line 642, in execute
    util.preloaded.orm_persistence.save_obj(
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py", line 93, in save_obj
    _emit_insert_statements(
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py", line 1048, in _emit_insert_statements
    result = connection.execute(
             ^^^^^^^^^^^^^^^^^^^
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py", line 1408, in execute
    return meth(
           ^^^^^
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py", line 513, in _execute_on_connection
    return connection._execute_clauseelement(
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py", line 1630, in _execute_clauseelement
    ret = self._execute_context(
          ^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py", line 1839, in _execute_context
    return self._exec_single_context(
           ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py", line 1979, in _exec_single_context
    self._handle_dbapi_exception(
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py", line 2335, in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py", line 1929, in _exec_single_context
    self.dialect.do_executemany(
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py", line 921, in do_executemany
    cursor.executemany(statement, parameters)
sqlalchemy.exc.IntegrityError: (raised as a result of Query-invoked autoflush; consider using a session.no_autoflush block if this flush is occurring prematurely)
(sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
[SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
[parameters: [('f18',), ('fedora-17',), ('master',)]]
(Background on this error at: https://sqlalche.me/e/20/gkpj)
ERROR    coprs:error_handlers.py:42 Response error: gkpj Database error, contact admin
ERROR    coprs:error_handlers.py:102 Admin-only exception
Request: GET http://localhost.localdomain/api_3/mock-chroots/list
User: None
Traceback (most recent call last):
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py", line 1929, in _exec_single_context
    self.dialect.do_executemany(
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py", line 921, in do_executemany
    cursor.executemany(statement, parameters)
sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
  File "/usr/lib/python3.12/site-packages/flask/app.py", line 870, in full_dispatch_request
    rv = self.dispatch_request()
         ^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.12/site-packages/flask/app.py", line 855, in dispatch_request
    return self.ensure_sync(self.view_functions[rule.endpoint])(**view_args)  # type: ignore[no-any-return]
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.12/site-packages/flask_restx/api.py", line 402, in wrapper
    resp = resource(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.12/site-packages/flask/views.py", line 110, in view
    return current_app.ensure_sync(self.dispatch_request)(**kwargs)  # type: ignore[no-any-return]
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.12/site-packages/flask_restx/resource.py", line 41, in dispatch_request
    resp = meth(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^
  File "/builddir/build/BUILD/copr-frontend-1.204/coprs_frontend/coprs/views/apiv3_ns/apiv3_mock_chroots.py", line 28, in get
    chroots = MockChrootsLogic.active_names_with_comments()
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/builddir/build/BUILD/copr-frontend-1.204/coprs_frontend/coprs/logic/coprs_logic.py", line 1419, in active_names_with_comments
    return [(ch.name, ch.comment) for ch in cls.get_multiple(active_only=True).all()]
                                            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/query.py", line 2672, in all
    return self._iter().all()  # type: ignore
           ^^^^^^^^^^^^
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/query.py", line 2826, in _iter
    result: Union[ScalarResult[_T], Result[_T]] = self.session.execute(
                                                  ^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py", line 2306, in execute
    return self._execute_internal(
           ^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py", line 2170, in _execute_internal
    ) = compile_state_cls.orm_pre_session_exec(
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/context.py", line 549, in orm_pre_session_exec
    session._autoflush()
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py", line 3005, in _autoflush
    raise e.with_traceback(sys.exc_info()[2])
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py", line 2994, in _autoflush
    self.flush()
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py", line 4296, in flush
    self._flush(objects)
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py", line 4431, in _flush
    with util.safe_reraise():
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py", line 146, in __exit__
    raise exc_value.with_traceback(exc_tb)
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py", line 4392, in _flush
    flush_context.execute()
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py", line 466, in execute
    rec.execute(self)
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py", line 642, in execute
    util.preloaded.orm_persistence.save_obj(
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py", line 93, in save_obj
    _emit_insert_statements(
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py", line 1048, in _emit_insert_statements
    result = connection.execute(
             ^^^^^^^^^^^^^^^^^^^
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py", line 1408, in execute
    return meth(
           ^^^^^
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py", line 513, in _execute_on_connection
    return connection._execute_clauseelement(
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py", line 1630, in _execute_clauseelement
    ret = self._execute_context(
          ^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py", line 1839, in _execute_context
    return self._exec_single_context(
           ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py", line 1979, in _exec_single_context
    self._handle_dbapi_exception(
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py", line 2335, in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py", line 1929, in _exec_single_context
    self.dialect.do_executemany(
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py", line 921, in do_executemany
    cursor.executemany(statement, parameters)
sqlalchemy.exc.IntegrityError: (raised as a result of Query-invoked autoflush; consider using a session.no_autoflush block if this flush is occurring prematurely)
(sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
[SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
[parameters: [('f18',), ('fedora-17',), ('master',)]]
(Background on this error at: https://sqlalche.me/e/20/gkpj)
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
  File "/usr/lib/python3.12/site-packages/flask_restx/api.py", line 669, in error_router
    return self.handle_error(e)
           ^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.12/site-packages/flask_restx/api.py", line 753, in handle_error
    if code >= HTTPStatus.INTERNAL_SERVER_ERROR:
       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
TypeError: '>=' not supported between instances of 'str' and 'HTTPStatus'
ERROR    coprs:error_handlers.py:42 Response error: 500 Request wasn't successful, there is probably a bug in the Copr code.
__________ ERROR at setup of TestAPIv3Monitor.test_v3_monitor[case0] ___________
self = <sqlalchemy.engine.base.Connection object at 0x7fff8e91bdd0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8e91be60>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff90310da0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8dafc3c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8e91be60>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
The above exception was the direct cause of the following exception:
self = <test_monitor.TestAPIv3Monitor object at 0x7fff90a8cbc0>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8dafc3c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8e91be60>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
E       [SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
E       [parameters: [('f18',), ('fedora-17',), ('master',)]]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
_________ ERROR at teardown of TestAPIv3Monitor.test_v3_monitor[case0] _________
self = <test_monitor.TestAPIv3Monitor object at 0x7fff90a8cbc0>
method = <bound method TestAPIv3Monitor.test_v3_monitor of <test_monitor.TestAPIv3Monitor object at 0x7fff90a8cbc0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
__________ ERROR at setup of TestAPIv3Monitor.test_v3_monitor[case1] ___________
self = <sqlalchemy.engine.base.Connection object at 0x7fff8e96f5f0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8e96f680>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff90310da0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8df98640>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8e96f680>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
The above exception was the direct cause of the following exception:
self = <test_monitor.TestAPIv3Monitor object at 0x7fff90a8ce30>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8df98640>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8e96f680>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
E       [SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
E       [parameters: [('f18',), ('fedora-17',), ('master',)]]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
_________ ERROR at teardown of TestAPIv3Monitor.test_v3_monitor[case1] _________
self = <test_monitor.TestAPIv3Monitor object at 0x7fff90a8ce30>
method = <bound method TestAPIv3Monitor.test_v3_monitor of <test_monitor.TestAPIv3Monitor object at 0x7fff90a8ce30>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
__________ ERROR at setup of TestAPIv3Monitor.test_v3_monitor[case2] ___________
self = <sqlalchemy.engine.base.Connection object at 0x7fff8ecef5f0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8ecef650>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff90310da0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8dafef40>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8ecef650>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
The above exception was the direct cause of the following exception:
self = <test_monitor.TestAPIv3Monitor object at 0x7fff90a8cef0>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8dafef40>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8ecef650>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
E       [SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
E       [parameters: [('f18',), ('fedora-17',), ('master',)]]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
_________ ERROR at teardown of TestAPIv3Monitor.test_v3_monitor[case2] _________
self = <test_monitor.TestAPIv3Monitor object at 0x7fff90a8cef0>
method = <bound method TestAPIv3Monitor.test_v3_monitor of <test_monitor.TestAPIv3Monitor object at 0x7fff90a8cef0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
__________ ERROR at setup of TestAPIv3Monitor.test_v3_monitor[case3] ___________
self = <sqlalchemy.engine.base.Connection object at 0x7fff8ecf8860>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8e9efe30>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff90310da0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8df99b40>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8e9efe30>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
The above exception was the direct cause of the following exception:
self = <test_monitor.TestAPIv3Monitor object at 0x7fff90a8cf80>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8df99b40>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8e9efe30>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
E       [SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
E       [parameters: [('f18',), ('fedora-17',), ('master',)]]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
_________ ERROR at teardown of TestAPIv3Monitor.test_v3_monitor[case3] _________
self = <test_monitor.TestAPIv3Monitor object at 0x7fff90a8cf80>
method = <bound method TestAPIv3Monitor.test_v3_monitor of <test_monitor.TestAPIv3Monitor object at 0x7fff90a8cf80>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
_______ ERROR at setup of TestAPIv3Monitor.test_v3_monitor_empty_project _______
self = <sqlalchemy.engine.base.Connection object at 0x7fff8edb5ac0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8edb6180>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff90310da0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8dafe2c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8edb6180>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
The above exception was the direct cause of the following exception:
self = <test_monitor.TestAPIv3Monitor object at 0x7fff90a8d040>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8dafe2c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8edb6180>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
E       [SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
E       [parameters: [('f18',), ('fedora-17',), ('master',)]]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
_____ ERROR at teardown of TestAPIv3Monitor.test_v3_monitor_empty_project ______
self = <test_monitor.TestAPIv3Monitor object at 0x7fff90a8d040>
method = <bound method TestAPIv3Monitor.test_v3_monitor_empty_project of <test_monitor.TestAPIv3Monitor object at 0x7fff90a8d040>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
_______ ERROR at setup of TestAPIv3Monitor.test_v3_monitor_multi_chroot ________
self = <sqlalchemy.engine.base.Connection object at 0x7fff8ff5abd0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8ff5a960>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff90310da0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8df984c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8ff5a960>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
The above exception was the direct cause of the following exception:
self = <test_monitor.TestAPIv3Monitor object at 0x7fff90a8d2b0>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8df984c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8ff5a960>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
E       [SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
E       [parameters: [('f18',), ('fedora-17',), ('master',)]]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
______ ERROR at teardown of TestAPIv3Monitor.test_v3_monitor_multi_chroot ______
self = <test_monitor.TestAPIv3Monitor object at 0x7fff90a8d2b0>
method = <bound method TestAPIv3Monitor.test_v3_monitor_multi_chroot of <test_monitor.TestAPIv3Monitor object at 0x7fff90a8d2b0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
_______ ERROR at setup of TestAPIv3Monitor.test_v3_monitor_source_build ________
self = <sqlalchemy.engine.base.Connection object at 0x7fff8e98dbe0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8e98dcd0>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff90310da0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8dccd5c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8e98dcd0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
The above exception was the direct cause of the following exception:
self = <test_monitor.TestAPIv3Monitor object at 0x7fff90a8d5b0>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8dccd5c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8e98dcd0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
E       [SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
E       [parameters: [('f18',), ('fedora-17',), ('master',)]]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
______ ERROR at teardown of TestAPIv3Monitor.test_v3_monitor_source_build ______
self = <test_monitor.TestAPIv3Monitor object at 0x7fff90a8d5b0>
method = <bound method TestAPIv3Monitor.test_v3_monitor_source_build of <test_monitor.TestAPIv3Monitor object at 0x7fff90a8d5b0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
_____ ERROR at setup of TestAPIv3Packages.test_v3_packages[chroots0-case0] _____
self = <sqlalchemy.engine.base.Connection object at 0x7fff8e8d8ec0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8e8d8f20>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff90310da0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8dc677c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8e8d8f20>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
The above exception was the direct cause of the following exception:
self = <test_packages.TestAPIv3Packages object at 0x7fff90a8f650>
    @pytest.fixture
    def f_other_distgit(self):
>       self.dg0 = DistGitLogic.get_with_default()
tests/coprs_test_case.py:762: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
coprs/logic/dist_git_logic.py:15: in get_with_default
    return cls.ordered().limit(1).one()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/query.py:2777: in one
    return self._iter().one()  # type: ignore
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/query.py:2826: in _iter
    result: Union[ScalarResult[_T], Result[_T]] = self.session.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:2306: in execute
    return self._execute_internal(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:2170: in _execute_internal
    ) = compile_state_cls.orm_pre_session_exec(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/context.py:549: in orm_pre_session_exec
    session._autoflush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:3005: in _autoflush
    raise e.with_traceback(sys.exc_info()[2])
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:2994: in _autoflush
    self.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8dc677c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8e8d8f20>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (raised as a result of Query-invoked autoflush; consider using a session.no_autoflush block if this flush is occurring prematurely)
E       (sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
E       [SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
E       [parameters: [('f18',), ('fedora-17',), ('master',)]]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
___ ERROR at teardown of TestAPIv3Packages.test_v3_packages[chroots0-case0] ____
self = <test_packages.TestAPIv3Packages object at 0x7fff90a8f650>
method = <bound method TestAPIv3Packages.test_v3_packages of <test_packages.TestAPIv3Packages object at 0x7fff90a8f650>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
_____ ERROR at setup of TestAPIv3Packages.test_v3_packages[chroots0-case1] _____
self = <sqlalchemy.engine.base.Connection object at 0x7fff8e9911c0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8e991220>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff90310da0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8db642c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8e991220>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
The above exception was the direct cause of the following exception:
self = <test_packages.TestAPIv3Packages object at 0x7fff90a8faa0>
    @pytest.fixture
    def f_other_distgit(self):
>       self.dg0 = DistGitLogic.get_with_default()
tests/coprs_test_case.py:762: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
coprs/logic/dist_git_logic.py:15: in get_with_default
    return cls.ordered().limit(1).one()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/query.py:2777: in one
    return self._iter().one()  # type: ignore
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/query.py:2826: in _iter
    result: Union[ScalarResult[_T], Result[_T]] = self.session.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:2306: in execute
    return self._execute_internal(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:2170: in _execute_internal
    ) = compile_state_cls.orm_pre_session_exec(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/context.py:549: in orm_pre_session_exec
    session._autoflush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:3005: in _autoflush
    raise e.with_traceback(sys.exc_info()[2])
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:2994: in _autoflush
    self.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8db642c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8e991220>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (raised as a result of Query-invoked autoflush; consider using a session.no_autoflush block if this flush is occurring prematurely)
E       (sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
E       [SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
E       [parameters: [('f18',), ('fedora-17',), ('master',)]]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
___ ERROR at teardown of TestAPIv3Packages.test_v3_packages[chroots0-case1] ____
self = <test_packages.TestAPIv3Packages object at 0x7fff90a8faa0>
method = <bound method TestAPIv3Packages.test_v3_packages of <test_packages.TestAPIv3Packages object at 0x7fff90a8faa0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
_____ ERROR at setup of TestAPIv3Packages.test_v3_packages[chroots0-case2] _____
self = <sqlalchemy.engine.base.Connection object at 0x7fff8ebe8560>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8ebe85c0>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff90310da0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8daf3cc0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8ebe85c0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
The above exception was the direct cause of the following exception:
self = <test_packages.TestAPIv3Packages object at 0x7fff90a8fb60>
    @pytest.fixture
    def f_other_distgit(self):
>       self.dg0 = DistGitLogic.get_with_default()
tests/coprs_test_case.py:762: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
coprs/logic/dist_git_logic.py:15: in get_with_default
    return cls.ordered().limit(1).one()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/query.py:2777: in one
    return self._iter().one()  # type: ignore
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/query.py:2826: in _iter
    result: Union[ScalarResult[_T], Result[_T]] = self.session.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:2306: in execute
    return self._execute_internal(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:2170: in _execute_internal
    ) = compile_state_cls.orm_pre_session_exec(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/context.py:549: in orm_pre_session_exec
    session._autoflush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:3005: in _autoflush
    raise e.with_traceback(sys.exc_info()[2])
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:2994: in _autoflush
    self.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8daf3cc0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8ebe85c0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (raised as a result of Query-invoked autoflush; consider using a session.no_autoflush block if this flush is occurring prematurely)
E       (sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
E       [SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
E       [parameters: [('f18',), ('fedora-17',), ('master',)]]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
___ ERROR at teardown of TestAPIv3Packages.test_v3_packages[chroots0-case2] ____
self = <test_packages.TestAPIv3Packages object at 0x7fff90a8fb60>
method = <bound method TestAPIv3Packages.test_v3_packages of <test_packages.TestAPIv3Packages object at 0x7fff90a8fb60>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
_____ ERROR at setup of TestAPIv3Packages.test_v3_packages[chroots0-case3] _____
self = <sqlalchemy.engine.base.Connection object at 0x7fff8ebeb890>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8ebeb8f0>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff90310da0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8e0b0c40>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8ebeb8f0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
The above exception was the direct cause of the following exception:
self = <test_packages.TestAPIv3Packages object at 0x7fff90a8fc50>
    @pytest.fixture
    def f_other_distgit(self):
>       self.dg0 = DistGitLogic.get_with_default()
tests/coprs_test_case.py:762: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
coprs/logic/dist_git_logic.py:15: in get_with_default
    return cls.ordered().limit(1).one()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/query.py:2777: in one
    return self._iter().one()  # type: ignore
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/query.py:2826: in _iter
    result: Union[ScalarResult[_T], Result[_T]] = self.session.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:2306: in execute
    return self._execute_internal(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:2170: in _execute_internal
    ) = compile_state_cls.orm_pre_session_exec(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/context.py:549: in orm_pre_session_exec
    session._autoflush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:3005: in _autoflush
    raise e.with_traceback(sys.exc_info()[2])
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:2994: in _autoflush
    self.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8e0b0c40>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8ebeb8f0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (raised as a result of Query-invoked autoflush; consider using a session.no_autoflush block if this flush is occurring prematurely)
E       (sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
E       [SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
E       [parameters: [('f18',), ('fedora-17',), ('master',)]]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
___ ERROR at teardown of TestAPIv3Packages.test_v3_packages[chroots0-case3] ____
self = <test_packages.TestAPIv3Packages object at 0x7fff90a8fc50>
method = <bound method TestAPIv3Packages.test_v3_packages of <test_packages.TestAPIv3Packages object at 0x7fff90a8fc50>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
_____ ERROR at setup of TestAPIv3Packages.test_v3_packages[chroots1-case0] _____
self = <sqlalchemy.engine.base.Connection object at 0x7fff8ebe6ab0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8ebe6b10>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff90310da0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8e2483c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8ebe6b10>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
The above exception was the direct cause of the following exception:
self = <test_packages.TestAPIv3Packages object at 0x7fff90a8fce0>
    @pytest.fixture
    def f_other_distgit(self):
>       self.dg0 = DistGitLogic.get_with_default()
tests/coprs_test_case.py:762: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
coprs/logic/dist_git_logic.py:15: in get_with_default
    return cls.ordered().limit(1).one()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/query.py:2777: in one
    return self._iter().one()  # type: ignore
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/query.py:2826: in _iter
    result: Union[ScalarResult[_T], Result[_T]] = self.session.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:2306: in execute
    return self._execute_internal(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:2170: in _execute_internal
    ) = compile_state_cls.orm_pre_session_exec(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/context.py:549: in orm_pre_session_exec
    session._autoflush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:3005: in _autoflush
    raise e.with_traceback(sys.exc_info()[2])
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:2994: in _autoflush
    self.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8e2483c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8ebe6b10>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (raised as a result of Query-invoked autoflush; consider using a session.no_autoflush block if this flush is occurring prematurely)
E       (sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
E       [SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
E       [parameters: [('f18',), ('fedora-17',), ('master',)]]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
___ ERROR at teardown of TestAPIv3Packages.test_v3_packages[chroots1-case0] ____
self = <test_packages.TestAPIv3Packages object at 0x7fff90a8fce0>
method = <bound method TestAPIv3Packages.test_v3_packages of <test_packages.TestAPIv3Packages object at 0x7fff90a8fce0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
_____ ERROR at setup of TestAPIv3Packages.test_v3_packages[chroots1-case1] _____
self = <sqlalchemy.engine.base.Connection object at 0x7fff8ec5dbb0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8ec5dc10>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff90310da0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8e2490c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8ec5dc10>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
The above exception was the direct cause of the following exception:
self = <test_packages.TestAPIv3Packages object at 0x7fff90a8fd70>
    @pytest.fixture
    def f_other_distgit(self):
>       self.dg0 = DistGitLogic.get_with_default()
tests/coprs_test_case.py:762: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
coprs/logic/dist_git_logic.py:15: in get_with_default
    return cls.ordered().limit(1).one()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/query.py:2777: in one
    return self._iter().one()  # type: ignore
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/query.py:2826: in _iter
    result: Union[ScalarResult[_T], Result[_T]] = self.session.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:2306: in execute
    return self._execute_internal(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:2170: in _execute_internal
    ) = compile_state_cls.orm_pre_session_exec(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/context.py:549: in orm_pre_session_exec
    session._autoflush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:3005: in _autoflush
    raise e.with_traceback(sys.exc_info()[2])
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:2994: in _autoflush
    self.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8e2490c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8ec5dc10>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (raised as a result of Query-invoked autoflush; consider using a session.no_autoflush block if this flush is occurring prematurely)
E       (sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
E       [SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
E       [parameters: [('f18',), ('fedora-17',), ('master',)]]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
___ ERROR at teardown of TestAPIv3Packages.test_v3_packages[chroots1-case1] ____
self = <test_packages.TestAPIv3Packages object at 0x7fff90a8fd70>
method = <bound method TestAPIv3Packages.test_v3_packages of <test_packages.TestAPIv3Packages object at 0x7fff90a8fd70>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
_____ ERROR at setup of TestAPIv3Packages.test_v3_packages[chroots1-case2] _____
self = <sqlalchemy.engine.base.Connection object at 0x7fff8e991490>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8e990050>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff90310da0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8e024540>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8e990050>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
The above exception was the direct cause of the following exception:
self = <test_packages.TestAPIv3Packages object at 0x7fff90a8fe00>
    @pytest.fixture
    def f_other_distgit(self):
>       self.dg0 = DistGitLogic.get_with_default()
tests/coprs_test_case.py:762: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
coprs/logic/dist_git_logic.py:15: in get_with_default
    return cls.ordered().limit(1).one()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/query.py:2777: in one
    return self._iter().one()  # type: ignore
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/query.py:2826: in _iter
    result: Union[ScalarResult[_T], Result[_T]] = self.session.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:2306: in execute
    return self._execute_internal(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:2170: in _execute_internal
    ) = compile_state_cls.orm_pre_session_exec(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/context.py:549: in orm_pre_session_exec
    session._autoflush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:3005: in _autoflush
    raise e.with_traceback(sys.exc_info()[2])
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:2994: in _autoflush
    self.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8e024540>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8e990050>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (raised as a result of Query-invoked autoflush; consider using a session.no_autoflush block if this flush is occurring prematurely)
E       (sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
E       [SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
E       [parameters: [('f18',), ('fedora-17',), ('master',)]]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
___ ERROR at teardown of TestAPIv3Packages.test_v3_packages[chroots1-case2] ____
self = <test_packages.TestAPIv3Packages object at 0x7fff90a8fe00>
method = <bound method TestAPIv3Packages.test_v3_packages of <test_packages.TestAPIv3Packages object at 0x7fff90a8fe00>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
_____ ERROR at setup of TestAPIv3Packages.test_v3_packages[chroots1-case3] _____
self = <sqlalchemy.engine.base.Connection object at 0x7fff90ab6030>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8f2934a0>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff90310da0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8e0b0e40>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8f2934a0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
The above exception was the direct cause of the following exception:
self = <test_packages.TestAPIv3Packages object at 0x7fff90a8fec0>
    @pytest.fixture
    def f_other_distgit(self):
>       self.dg0 = DistGitLogic.get_with_default()
tests/coprs_test_case.py:762: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
coprs/logic/dist_git_logic.py:15: in get_with_default
    return cls.ordered().limit(1).one()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/query.py:2777: in one
    return self._iter().one()  # type: ignore
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/query.py:2826: in _iter
    result: Union[ScalarResult[_T], Result[_T]] = self.session.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:2306: in execute
    return self._execute_internal(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:2170: in _execute_internal
    ) = compile_state_cls.orm_pre_session_exec(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/context.py:549: in orm_pre_session_exec
    session._autoflush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:3005: in _autoflush
    raise e.with_traceback(sys.exc_info()[2])
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:2994: in _autoflush
    self.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8e0b0e40>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8f2934a0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (raised as a result of Query-invoked autoflush; consider using a session.no_autoflush block if this flush is occurring prematurely)
E       (sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
E       [SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
E       [parameters: [('f18',), ('fedora-17',), ('master',)]]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
___ ERROR at teardown of TestAPIv3Packages.test_v3_packages[chroots1-case3] ____
self = <test_packages.TestAPIv3Packages object at 0x7fff90a8fec0>
method = <bound method TestAPIv3Packages.test_v3_packages of <test_packages.TestAPIv3Packages object at 0x7fff90a8fec0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
____ ERROR at setup of TestApiv3ProjectChroots.test_edit_project_chroot_api ____
self = <sqlalchemy.engine.base.Connection object at 0x7fff8ebe5250>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff90ab4dd0>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff90310da0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8dba1c40>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff90ab4dd0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
The above exception was the direct cause of the following exception:
self = <test_project_chroots.TestApiv3ProjectChroots object at 0x7fff90a88920>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8dba1c40>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff90ab4dd0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
E       [SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
E       [parameters: [('f18',), ('fedora-17',), ('master',)]]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
__ ERROR at teardown of TestApiv3ProjectChroots.test_edit_project_chroot_api ___
self = <test_project_chroots.TestApiv3ProjectChroots object at 0x7fff90a88920>
method = <bound method TestApiv3ProjectChroots.test_edit_project_chroot_api of <test_project_chroots.TestApiv3ProjectChroots object at 0x7fff90a88920>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
_______ ERROR at setup of TestApiv3Projects.test_get_project_list_order ________
self = <sqlalchemy.engine.base.Connection object at 0x7fff8ecfb0b0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8ea89d90>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff90310da0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8e4192c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8ea89d90>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
The above exception was the direct cause of the following exception:
self = <test_projects.TestApiv3Projects object at 0x7fff90aa9250>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8e4192c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8ea89d90>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
E       [SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
E       [parameters: [('f18',), ('fedora-17',), ('master',)]]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
______ ERROR at teardown of TestApiv3Projects.test_get_project_list_order ______
self = <test_projects.TestApiv3Projects object at 0x7fff90aa9250>
method = <bound method TestApiv3Projects.test_get_project_list_order of <test_projects.TestApiv3Projects object at 0x7fff90aa9250>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
__ ERROR at setup of TestApiv3Projects.test_compat_bootstrap_config[True-on] ___
self = <sqlalchemy.engine.base.Connection object at 0x7fff8ebc1040>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8ebc1a60>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff90310da0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8dfeb740>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8ebc1a60>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
The above exception was the direct cause of the following exception:
self = <test_projects.TestApiv3Projects object at 0x7fff90aa94c0>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8dfeb740>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8ebc1a60>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
E       [SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
E       [parameters: [('f18',), ('fedora-17',), ('master',)]]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
_ ERROR at teardown of TestApiv3Projects.test_compat_bootstrap_config[True-on] _
self = <test_projects.TestApiv3Projects object at 0x7fff90aa94c0>
method = <bound method TestApiv3Projects.test_compat_bootstrap_config of <test_projects.TestApiv3Projects object at 0x7fff90aa94c0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
_ ERROR at setup of TestApiv3Projects.test_compat_bootstrap_config[False-off] __
self = <sqlalchemy.engine.base.Connection object at 0x7fff8ec88bf0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8ec88c50>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff90310da0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8e025040>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8ec88c50>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
The above exception was the direct cause of the following exception:
self = <test_projects.TestApiv3Projects object at 0x7fff90aaadb0>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8e025040>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8ec88c50>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
E       [SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
E       [parameters: [('f18',), ('fedora-17',), ('master',)]]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
_ ERROR at teardown of TestApiv3Projects.test_compat_bootstrap_config[False-off] _
self = <test_projects.TestApiv3Projects object at 0x7fff90aaadb0>
method = <bound method TestApiv3Projects.test_compat_bootstrap_config of <test_projects.TestApiv3Projects object at 0x7fff90aaadb0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
___ ERROR at setup of TestApiv3Projects.test_isolation_config[nspawn-nspawn] ___
self = <sqlalchemy.engine.base.Connection object at 0x7fff8ec8b5c0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8ec8b620>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff90310da0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8daf3740>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8ec8b620>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
The above exception was the direct cause of the following exception:
self = <test_projects.TestApiv3Projects object at 0x7fff90aa8c20>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8daf3740>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8ec8b620>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
E       [SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
E       [parameters: [('f18',), ('fedora-17',), ('master',)]]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
_ ERROR at teardown of TestApiv3Projects.test_isolation_config[nspawn-nspawn] __
self = <test_projects.TestApiv3Projects object at 0x7fff90aa8c20>
method = <bound method TestApiv3Projects.test_isolation_config of <test_projects.TestApiv3Projects object at 0x7fff90aa8c20>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
___ ERROR at setup of TestApiv3Projects.test_isolation_config[simple-simple] ___
self = <sqlalchemy.engine.base.Connection object at 0x7fff8ebc5df0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8ebc5e50>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff90310da0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8e248b40>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8ebc5e50>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
The above exception was the direct cause of the following exception:
self = <test_projects.TestApiv3Projects object at 0x7fff90aabb30>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8e248b40>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8ebc5e50>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
E       [SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
E       [parameters: [('f18',), ('fedora-17',), ('master',)]]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
_ ERROR at teardown of TestApiv3Projects.test_isolation_config[simple-simple] __
self = <test_projects.TestApiv3Projects object at 0x7fff90aabb30>
method = <bound method TestApiv3Projects.test_isolation_config of <test_projects.TestApiv3Projects object at 0x7fff90aabb30>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
___ ERROR at setup of TestApiv3Projects.test_isolation_config[None-default] ____
self = <sqlalchemy.engine.base.Connection object at 0x7fff8f3bd1f0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8f3bd250>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff90310da0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8e447cc0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8f3bd250>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
The above exception was the direct cause of the following exception:
self = <test_projects.TestApiv3Projects object at 0x7fff90aa8680>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8e447cc0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8f3bd250>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
E       [SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
E       [parameters: [('f18',), ('fedora-17',), ('master',)]]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
__ ERROR at teardown of TestApiv3Projects.test_isolation_config[None-default] __
self = <test_projects.TestApiv3Projects object at 0x7fff90aa8680>
method = <bound method TestApiv3Projects.test_isolation_config of <test_projects.TestApiv3Projects object at 0x7fff90aa8680>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
__________ ERROR at setup of TestApiv3Projects.test_update_copr_api3 ___________
self = <sqlalchemy.engine.base.Connection object at 0x7fff8ebea9f0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8f3003b0>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff903111c0>
parameters = [('user1', 0, 1, None)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
                    self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
                    )
            elif not effective_parameters and context.no_parameters:
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_execute_no_params:
                        if fn(cursor, str_statement, context):
                            evt_handled = True
                            break
                if not evt_handled:
                    self.dialect.do_execute_no_params(
                        cursor, str_statement, context
                    )
            else:
                effective_parameters = cast(
                    "_CoreSingleExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_execute:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_execute(
                        cursor, str_statement, effective_parameters, context
                    )
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1960: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8dfea040>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8f3003b0>
    def do_execute(self, cursor, statement, parameters, context=None):
>       cursor.execute(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: user.username
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:924: IntegrityError
The above exception was the direct cause of the following exception:
self = <test_projects.TestApiv3Projects object at 0x7fff90aa8650>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1233: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1960: in _exec_single_context
    self.dialect.do_execute(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8dfea040>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8f3003b0>
    def do_execute(self, cursor, statement, parameters, context=None):
>       cursor.execute(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: user.username
E       [SQL: INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)]
E       [parameters: ('user1', 0, 1, None)]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:924: IntegrityError
_________ ERROR at teardown of TestApiv3Projects.test_update_copr_api3 _________
self = <test_projects.TestApiv3Projects object at 0x7fff90aa8650>
method = <bound method TestApiv3Projects.test_update_copr_api3 of <test_projects.TestApiv3Projects object at 0x7fff90aa8650>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
________ ERROR at setup of TestApiv3Projects.test_fedora_review_setting ________
self = <sqlalchemy.engine.base.Connection object at 0x7fff8f3033e0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8f303440>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff90310da0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8e05c440>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8f303440>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
The above exception was the direct cause of the following exception:
self = <test_projects.TestApiv3Projects object at 0x7fff90aa84d0>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8e05c440>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8f303440>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
E       [SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
E       [parameters: [('f18',), ('fedora-17',), ('master',)]]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
______ ERROR at teardown of TestApiv3Projects.test_fedora_review_setting _______
self = <test_projects.TestApiv3Projects object at 0x7fff90aa84d0>
method = <bound method TestApiv3Projects.test_fedora_review_setting of <test_projects.TestApiv3Projects object at 0x7fff90aa84d0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
__________ ERROR at setup of TestApiv3Projects.test_regenerate_repos ___________
self = <sqlalchemy.engine.base.Connection object at 0x7fff8f2f2120>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8f2f2180>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff90310da0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8fe6cdc0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8f2f2180>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
The above exception was the direct cause of the following exception:
self = <test_projects.TestApiv3Projects object at 0x7fff90aa82f0>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8fe6cdc0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8f2f2180>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
E       [SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
E       [parameters: [('f18',), ('fedora-17',), ('master',)]]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
_________ ERROR at teardown of TestApiv3Projects.test_regenerate_repos _________
self = <test_projects.TestApiv3Projects object at 0x7fff90aa82f0>
method = <bound method TestApiv3Projects.test_regenerate_repos of <test_projects.TestApiv3Projects object at 0x7fff90aa82f0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
_____ ERROR at setup of TestApiV3Permissions.test_perms_get_require_admin ______
self = <sqlalchemy.engine.base.Connection object at 0x7fff8ec89490>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8ec8b200>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff90310da0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8db655c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8ec8b200>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
The above exception was the direct cause of the following exception:
self = <test_projects.TestApiV3Permissions object at 0x7fff90ab08c0>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8db655c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8ec8b200>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
E       [SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
E       [parameters: [('f18',), ('fedora-17',), ('master',)]]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
____ ERROR at teardown of TestApiV3Permissions.test_perms_get_require_admin ____
self = <test_projects.TestApiV3Permissions object at 0x7fff90ab08c0>
method = <bound method TestApiV3Permissions.test_perms_get_require_admin of <test_projects.TestApiV3Permissions object at 0x7fff90ab08c0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
________ ERROR at setup of TestApiV3Permissions.test_no_permission_set _________
self = <sqlalchemy.engine.base.Connection object at 0x7fff8e8d9460>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8f2917f0>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff90310da0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8fe6e2c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8f2917f0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
The above exception was the direct cause of the following exception:
self = <test_projects.TestApiV3Permissions object at 0x7fff90ab0b90>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8fe6e2c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8f2917f0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
E       [SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
E       [parameters: [('f18',), ('fedora-17',), ('master',)]]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
_______ ERROR at teardown of TestApiV3Permissions.test_no_permission_set _______
self = <test_projects.TestApiV3Permissions object at 0x7fff90ab0b90>
method = <bound method TestApiV3Permissions.test_no_permission_set of <test_projects.TestApiV3Permissions object at 0x7fff90ab0b90>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
_____ ERROR at setup of TestApiV3Permissions.test_perms_accessible_by_user _____
self = <sqlalchemy.engine.base.Connection object at 0x7fff8e98fa70>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8edb6480>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff90310da0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8e418dc0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8edb6480>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
The above exception was the direct cause of the following exception:
self = <test_projects.TestApiV3Permissions object at 0x7fff90ab0e00>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8e418dc0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8edb6480>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
E       [SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
E       [parameters: [('f18',), ('fedora-17',), ('master',)]]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
___ ERROR at teardown of TestApiV3Permissions.test_perms_accessible_by_user ____
self = <test_projects.TestApiV3Permissions object at 0x7fff90ab0e00>
method = <bound method TestApiV3Permissions.test_perms_accessible_by_user of <test_projects.TestApiV3Permissions object at 0x7fff90ab0e00>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
_____ ERROR at setup of TestApiV3Permissions.test_perms_set_require_admin ______
self = <sqlalchemy.engine.base.Connection object at 0x7fff8f2f1850>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8f2f1460>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff90310da0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8dba01c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8f2f1460>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
The above exception was the direct cause of the following exception:
self = <test_projects.TestApiV3Permissions object at 0x7fff90ab10a0>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8dba01c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8f2f1460>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
E       [SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
E       [parameters: [('f18',), ('fedora-17',), ('master',)]]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
____ ERROR at teardown of TestApiV3Permissions.test_perms_set_require_admin ____
self = <test_projects.TestApiV3Permissions object at 0x7fff90ab10a0>
method = <bound method TestApiV3Permissions.test_perms_set_require_admin of <test_projects.TestApiV3Permissions object at 0x7fff90ab10a0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
___________ ERROR at setup of TestApiV3Permissions.test_set_bad_data ___________
self = <sqlalchemy.engine.base.Connection object at 0x7fff8f2e2ae0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8f2e2bd0>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff90310da0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8e0fd840>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8f2e2bd0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
The above exception was the direct cause of the following exception:
self = <test_projects.TestApiV3Permissions object at 0x7fff90ab1370>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8e0fd840>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8f2e2bd0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
E       [SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
E       [parameters: [('f18',), ('fedora-17',), ('master',)]]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
_________ ERROR at teardown of TestApiV3Permissions.test_set_bad_data __________
self = <test_projects.TestApiV3Permissions object at 0x7fff90ab1370>
method = <bound method TestApiV3Permissions.test_set_bad_data of <test_projects.TestApiV3Permissions object at 0x7fff90ab1370>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
_____________ ERROR at setup of TestApiV3Permissions.test_settable _____________
self = <sqlalchemy.engine.base.Connection object at 0x7fff8f39c0b0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8f39e7b0>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff90310da0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8dba31c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8f39e7b0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
The above exception was the direct cause of the following exception:
self = <test_projects.TestApiV3Permissions object at 0x7fff90ab16d0>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8dba31c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8f39e7b0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
E       [SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
E       [parameters: [('f18',), ('fedora-17',), ('master',)]]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
___________ ERROR at teardown of TestApiV3Permissions.test_settable ____________
self = <test_projects.TestApiV3Permissions object at 0x7fff90ab16d0>
method = <bound method TestApiV3Permissions.test_settable of <test_projects.TestApiV3Permissions object at 0x7fff90ab16d0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
_________ ERROR at setup of TestApiV3Permissions.test_cant_readd_owner _________
self = <sqlalchemy.engine.base.Connection object at 0x7fff8f385640>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8f3854c0>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff90310da0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8e35cac0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8f3854c0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
The above exception was the direct cause of the following exception:
self = <test_projects.TestApiV3Permissions object at 0x7fff90ab19a0>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8e35cac0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8f3854c0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
E       [SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
E       [parameters: [('f18',), ('fedora-17',), ('master',)]]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
_______ ERROR at teardown of TestApiV3Permissions.test_cant_readd_owner ________
self = <test_projects.TestApiV3Permissions object at 0x7fff90ab19a0>
method = <bound method TestApiV3Permissions.test_cant_readd_owner of <test_projects.TestApiV3Permissions object at 0x7fff90ab19a0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
_________ ERROR at setup of TestApiV3Permissions.test_request_invalid __________
self = <sqlalchemy.engine.base.Connection object at 0x7fff8eee0980>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8eee0a10>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff90310da0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8e3aca40>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8eee0a10>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
The above exception was the direct cause of the following exception:
self = <test_projects.TestApiV3Permissions object at 0x7fff90ab1c40>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8e3aca40>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8eee0a10>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
E       [SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
E       [parameters: [('f18',), ('fedora-17',), ('master',)]]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
________ ERROR at teardown of TestApiV3Permissions.test_request_invalid ________
self = <test_projects.TestApiV3Permissions object at 0x7fff90ab1c40>
method = <bound method TestApiV3Permissions.test_request_invalid of <test_projects.TestApiV3Permissions object at 0x7fff90ab1c40>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
__________ ERROR at setup of TestApiV3Permissions.test_request_valid ___________
self = <sqlalchemy.engine.base.Connection object at 0x7fff8eee3ce0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8eee3a70>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff90310da0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8dcb9140>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8eee3a70>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
The above exception was the direct cause of the following exception:
self = <test_projects.TestApiV3Permissions object at 0x7fff90ab1ee0>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8dcb9140>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8eee3a70>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
E       [SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
E       [parameters: [('f18',), ('fedora-17',), ('master',)]]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
_________ ERROR at teardown of TestApiV3Permissions.test_request_valid _________
self = <test_projects.TestApiV3Permissions object at 0x7fff90ab1ee0>
method = <bound method TestApiV3Permissions.test_request_valid of <test_projects.TestApiV3Permissions object at 0x7fff90ab1ee0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
______ ERROR at setup of TestApiV3Permissions.test_perms_set_sends_emails ______
self = <sqlalchemy.engine.base.Connection object at 0x7fff8ef72a20>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8ef72b40>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff903111c0>
parameters = [('user1', 0, 1, None)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
                    self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
                    )
            elif not effective_parameters and context.no_parameters:
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_execute_no_params:
                        if fn(cursor, str_statement, context):
                            evt_handled = True
                            break
                if not evt_handled:
                    self.dialect.do_execute_no_params(
                        cursor, str_statement, context
                    )
            else:
                effective_parameters = cast(
                    "_CoreSingleExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_execute:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_execute(
                        cursor, str_statement, effective_parameters, context
                    )
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1960: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8df47e40>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8ef72b40>
    def do_execute(self, cursor, statement, parameters, context=None):
>       cursor.execute(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: user.username
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:924: IntegrityError
The above exception was the direct cause of the following exception:
self = <test_projects.TestApiV3Permissions object at 0x7fff90ab21b0>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1233: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1960: in _exec_single_context
    self.dialect.do_execute(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8df47e40>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8ef72b40>
    def do_execute(self, cursor, statement, parameters, context=None):
>       cursor.execute(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: user.username
E       [SQL: INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)]
E       [parameters: ('user1', 0, 1, None)]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:924: IntegrityError
____ ERROR at teardown of TestApiV3Permissions.test_perms_set_sends_emails _____
self = <test_projects.TestApiV3Permissions object at 0x7fff90ab21b0>
method = <bound method TestApiV3Permissions.test_perms_set_sends_emails of <test_projects.TestApiV3Permissions object at 0x7fff90ab21b0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
_____ ERROR at setup of TestApiV3Permissions.test_perms_set_sends_emails_2 _____
self = <sqlalchemy.engine.base.Connection object at 0x7fff8f39e3f0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8f39d940>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff903111c0>
parameters = [('user1', 0, 1, None)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
                    self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
                    )
            elif not effective_parameters and context.no_parameters:
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_execute_no_params:
                        if fn(cursor, str_statement, context):
                            evt_handled = True
                            break
                if not evt_handled:
                    self.dialect.do_execute_no_params(
                        cursor, str_statement, context
                    )
            else:
                effective_parameters = cast(
                    "_CoreSingleExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_execute:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_execute(
                        cursor, str_statement, effective_parameters, context
                    )
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1960: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8e1ac140>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8f39d940>
    def do_execute(self, cursor, statement, parameters, context=None):
>       cursor.execute(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: user.username
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:924: IntegrityError
The above exception was the direct cause of the following exception:
self = <test_projects.TestApiV3Permissions object at 0x7fff90ab2450>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1233: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1960: in _exec_single_context
    self.dialect.do_execute(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8e1ac140>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8f39d940>
    def do_execute(self, cursor, statement, parameters, context=None):
>       cursor.execute(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: user.username
E       [SQL: INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)]
E       [parameters: ('user1', 0, 1, None)]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:924: IntegrityError
___ ERROR at teardown of TestApiV3Permissions.test_perms_set_sends_emails_2 ____
self = <test_projects.TestApiV3Permissions object at 0x7fff90ab2450>
method = <bound method TestApiV3Permissions.test_perms_set_sends_emails_2 of <test_projects.TestApiV3Permissions object at 0x7fff90ab2450>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
___________ ERROR at setup of TestApiV3Permissions.test_add_exist_ok ___________
self = <sqlalchemy.engine.base.Connection object at 0x7fff8ec5e900>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8ec5f170>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff90310da0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8de92b40>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8ec5f170>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
The above exception was the direct cause of the following exception:
self = <test_projects.TestApiV3Permissions object at 0x7fff90ab26c0>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8de92b40>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8ec5f170>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
E       [SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
E       [parameters: [('f18',), ('fedora-17',), ('master',)]]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
_________ ERROR at teardown of TestApiV3Permissions.test_add_exist_ok __________
self = <test_projects.TestApiV3Permissions object at 0x7fff90ab26c0>
method = <bound method TestApiV3Permissions.test_add_exist_ok of <test_projects.TestApiV3Permissions object at 0x7fff90ab26c0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
______ ERROR at setup of TestApiRPMRepo.test_apiv3_rpmrepo_external_deps _______
self = <sqlalchemy.engine.base.Connection object at 0x7fff8f3bdb20>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8f3bdbe0>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff90310da0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8e05cbc0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8f3bdbe0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
The above exception was the direct cause of the following exception:
self = <test_rpmrepo.TestApiRPMRepo object at 0x7fff90ab2ea0>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8e05cbc0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8f3bdbe0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
E       [SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
E       [parameters: [('f18',), ('fedora-17',), ('master',)]]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
_____ ERROR at teardown of TestApiRPMRepo.test_apiv3_rpmrepo_external_deps _____
self = <test_rpmrepo.TestApiRPMRepo object at 0x7fff90ab2ea0>
method = <bound method TestApiRPMRepo.test_apiv3_rpmrepo_external_deps of <test_rpmrepo.TestApiRPMRepo object at 0x7fff90ab2ea0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
_________ ERROR at setup of TestApiRPMRepo.test_apiv3_rpmrepo_multilib _________
self = <sqlalchemy.engine.base.Connection object at 0x7fff8eee1160>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8eee12b0>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff90310da0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8e1b87c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8eee12b0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
The above exception was the direct cause of the following exception:
self = <test_rpmrepo.TestApiRPMRepo object at 0x7fff90ab3380>
    @pytest.fixture
    def f_mock_chroots_many(self):
        """
        Adds more chroots to self.c1
        Requires: f_mock_chroots
        """
        self.mc_list = []
        for arch in ["x86_64", "i386"]:
            for os_version in range(19, 24):
                mc = models.MockChroot(
                    os_release="fedora", os_version=os_version,
                    arch=arch, is_active=True)
                # Let's try slashes now. for example.  Some copr instances use
                # this pattern.
>               mc.distgit_branch = BranchesLogic.get_or_create(
                        'fedora/{0}'.format(os_version),
                        session=self.db.session)
tests/coprs_test_case.py:352: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
coprs/logic/coprs_logic.py:927: in get_or_create
    item = session.query(models.DistGitBranch).filter_by(name=name).first()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/query.py:2727: in first
    return self.limit(1)._iter().first()  # type: ignore
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/query.py:2826: in _iter
    result: Union[ScalarResult[_T], Result[_T]] = self.session.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:2306: in execute
    return self._execute_internal(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:2170: in _execute_internal
    ) = compile_state_cls.orm_pre_session_exec(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/context.py:549: in orm_pre_session_exec
    session._autoflush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:3005: in _autoflush
    raise e.with_traceback(sys.exc_info()[2])
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:2994: in _autoflush
    self.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8e1b87c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8eee12b0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (raised as a result of Query-invoked autoflush; consider using a session.no_autoflush block if this flush is occurring prematurely)
E       (sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
E       [SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
E       [parameters: [('f18',), ('fedora-17',), ('master',)]]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
_______ ERROR at teardown of TestApiRPMRepo.test_apiv3_rpmrepo_multilib ________
self = <test_rpmrepo.TestApiRPMRepo object at 0x7fff90ab3380>
method = <bound method TestApiRPMRepo.test_apiv3_rpmrepo_multilib of <test_rpmrepo.TestApiRPMRepo object at 0x7fff90ab3380>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
___________ ERROR at setup of TestApiRPMRepo.test_apiv3_rpmrepo_dirs ___________
self = <sqlalchemy.engine.base.Connection object at 0x7fff8efa1b20>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8efa1c40>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff90310da0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8d804c40>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8efa1c40>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
The above exception was the direct cause of the following exception:
self = <test_rpmrepo.TestApiRPMRepo object at 0x7fff90ab3800>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8d804c40>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8efa1c40>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
E       [SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
E       [parameters: [('f18',), ('fedora-17',), ('master',)]]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
_________ ERROR at teardown of TestApiRPMRepo.test_apiv3_rpmrepo_dirs __________
self = <test_rpmrepo.TestApiRPMRepo object at 0x7fff90ab3800>
method = <bound method TestApiRPMRepo.test_apiv3_rpmrepo_dirs of <test_rpmrepo.TestApiRPMRepo object at 0x7fff90ab3800>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
__ ERROR at setup of TestCreateChrootCommand.test_create_chroot_with_comments __
self = <sqlalchemy.engine.base.Connection object at 0x7fff8ef799a0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8ef79a00>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff90310da0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8fe6cac0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8ef79a00>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
The above exception was the direct cause of the following exception:
self = <test_create_chroots.TestCreateChrootCommand object at 0x7fff90a98890>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8fe6cac0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8ef79a00>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
E       [SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
E       [parameters: [('f18',), ('fedora-17',), ('master',)]]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
_ ERROR at teardown of TestCreateChrootCommand.test_create_chroot_with_comments _
self = <test_create_chroots.TestCreateChrootCommand object at 0x7fff90a98890>
method = <bound method TestCreateChrootCommand.test_create_chroot_with_comments of <test_create_chroots.TestCreateChrootCommand object at 0x7fff90a98890>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
_______ ERROR at setup of TestDeleteOutdatedChroots.test_delete_outdated _______
self = <sqlalchemy.engine.base.Connection object at 0x7fff8ef50fe0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8ef51040>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff90310da0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8e419cc0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8ef51040>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
The above exception was the direct cause of the following exception:
self = <test_delete_outdated_chroots.TestDeleteOutdatedChroots object at 0x7fff90a99a60>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8e419cc0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8ef51040>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
E       [SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
E       [parameters: [('f18',), ('fedora-17',), ('master',)]]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
_____ ERROR at teardown of TestDeleteOutdatedChroots.test_delete_outdated ______
self = <test_delete_outdated_chroots.TestDeleteOutdatedChroots object at 0x7fff90a99a60>
method = <bound method TestDeleteOutdatedChroots.test_delete_outdated of <test_delete_outdated_chroots.TestDeleteOutdatedChroots object at 0x7fff90a99a60>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
__ ERROR at setup of TestDeleteOutdatedChroots.test_delete_outdated_yesterday __
self = <sqlalchemy.engine.base.Connection object at 0x7fff8ef53f80>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8ef53fe0>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff90310da0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8dba0740>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8ef53fe0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
The above exception was the direct cause of the following exception:
self = <test_delete_outdated_chroots.TestDeleteOutdatedChroots object at 0x7fff90a99dc0>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8dba0740>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8ef53fe0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
E       [SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
E       [parameters: [('f18',), ('fedora-17',), ('master',)]]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
_ ERROR at teardown of TestDeleteOutdatedChroots.test_delete_outdated_yesterday _
self = <test_delete_outdated_chroots.TestDeleteOutdatedChroots object at 0x7fff90a99dc0>
method = <bound method TestDeleteOutdatedChroots.test_delete_outdated_yesterday of <test_delete_outdated_chroots.TestDeleteOutdatedChroots object at 0x7fff90a99dc0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
___ ERROR at setup of TestDeleteOutdatedChroots.test_delete_outdated_not_yet ___
self = <sqlalchemy.engine.base.Connection object at 0x7fff8efbed50>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8efbedb0>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff90310da0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8dec4440>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8efbedb0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
The above exception was the direct cause of the following exception:
self = <test_delete_outdated_chroots.TestDeleteOutdatedChroots object at 0x7fff90a9a060>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8dec4440>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8efbedb0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
E       [SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
E       [parameters: [('f18',), ('fedora-17',), ('master',)]]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
_ ERROR at teardown of TestDeleteOutdatedChroots.test_delete_outdated_not_yet __
self = <test_delete_outdated_chroots.TestDeleteOutdatedChroots object at 0x7fff90a9a060>
method = <bound method TestDeleteOutdatedChroots.test_delete_outdated_not_yet of <test_delete_outdated_chroots.TestDeleteOutdatedChroots object at 0x7fff90a9a060>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
_ ERROR at setup of TestDeleteOutdatedChroots.test_delete_outdated_handle_none_notify _
self = <sqlalchemy.engine.base.Connection object at 0x7fff8fe252b0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8fe25310>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff90310da0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8e3aefc0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8fe25310>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
The above exception was the direct cause of the following exception:
self = <test_delete_outdated_chroots.TestDeleteOutdatedChroots object at 0x7fff90a9a300>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8e3aefc0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8fe25310>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
E       [SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
E       [parameters: [('f18',), ('fedora-17',), ('master',)]]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
_ ERROR at teardown of TestDeleteOutdatedChroots.test_delete_outdated_handle_none_notify _
self = <test_delete_outdated_chroots.TestDeleteOutdatedChroots object at 0x7fff90a9a300>
method = <bound method TestDeleteOutdatedChroots.test_delete_outdated_handle_none_notify of <test_delete_outdated_chroots.TestDeleteOutdatedChroots object at 0x7fff90a9a300>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
______ ERROR at setup of TestDeleteOutdatedChroots.test_delete_unclicked _______
self = <sqlalchemy.engine.base.Connection object at 0x7fff8fe8d040>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8fe8d0a0>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff90310da0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8e3a6f40>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8fe8d0a0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
The above exception was the direct cause of the following exception:
self = <test_delete_outdated_chroots.TestDeleteOutdatedChroots object at 0x7fff90a9a630>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8e3a6f40>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8fe8d0a0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
E       [SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
E       [parameters: [('f18',), ('fedora-17',), ('master',)]]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
_____ ERROR at teardown of TestDeleteOutdatedChroots.test_delete_unclicked _____
self = <test_delete_outdated_chroots.TestDeleteOutdatedChroots object at 0x7fff90a9a630>
method = <bound method TestDeleteOutdatedChroots.test_delete_unclicked of <test_delete_outdated_chroots.TestDeleteOutdatedChroots object at 0x7fff90a9a630>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
______ ERROR at setup of TestNotifyOutdatedChroots.test_user_chroots_map _______
self = <sqlalchemy.engine.base.Connection object at 0x7fff8efbc860>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8efbc8c0>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff90310da0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8db670c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8efbc8c0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
The above exception was the direct cause of the following exception:
self = <test_notify_outdated_chroots.TestNotifyOutdatedChroots object at 0x7fff90a9a5d0>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8db670c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8efbc8c0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
E       [SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
E       [parameters: [('f18',), ('fedora-17',), ('master',)]]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
_____ ERROR at teardown of TestNotifyOutdatedChroots.test_user_chroots_map _____
self = <test_notify_outdated_chroots.TestNotifyOutdatedChroots object at 0x7fff90a9a5d0>
method = <bound method TestNotifyOutdatedChroots.test_user_chroots_map of <test_notify_outdated_chroots.TestNotifyOutdatedChroots object at 0x7fff90a9a5d0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
_ ERROR at setup of TestNotifyOutdatedChroots.test_user_chroots_map_permissions _
self = <sqlalchemy.engine.base.Connection object at 0x7fff8eee12b0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8efa2330>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff90310da0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8dc619c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8efa2330>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
The above exception was the direct cause of the following exception:
self = <test_notify_outdated_chroots.TestNotifyOutdatedChroots object at 0x7fff90a9bd70>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8dc619c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8efa2330>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
E       [SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
E       [parameters: [('f18',), ('fedora-17',), ('master',)]]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
_ ERROR at teardown of TestNotifyOutdatedChroots.test_user_chroots_map_permissions _
self = <test_notify_outdated_chroots.TestNotifyOutdatedChroots object at 0x7fff90a9bd70>
method = <bound method TestNotifyOutdatedChroots.test_user_chroots_map_permissions of <test_notify_outdated_chroots.TestNotifyOutdatedChroots object at 0x7fff90a9bd70>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
___ ERROR at setup of TestNotifyOutdatedChroots.test_user_chroots_map_email ____
self = <sqlalchemy.engine.base.Connection object at 0x7fff8ec5eba0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8ec5ee40>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff90310da0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8dec5a40>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8ec5ee40>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
The above exception was the direct cause of the following exception:
self = <test_notify_outdated_chroots.TestNotifyOutdatedChroots object at 0x7fff90b30080>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8dec5a40>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8ec5ee40>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
E       [SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
E       [parameters: [('f18',), ('fedora-17',), ('master',)]]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
__ ERROR at teardown of TestNotifyOutdatedChroots.test_user_chroots_map_email __
self = <test_notify_outdated_chroots.TestNotifyOutdatedChroots object at 0x7fff90b30080>
method = <bound method TestNotifyOutdatedChroots.test_user_chroots_map_email of <test_notify_outdated_chroots.TestNotifyOutdatedChroots object at 0x7fff90b30080>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
_______ ERROR at setup of TestNotifyOutdatedChroots.test_filter_chroots ________
self = <sqlalchemy.engine.base.Connection object at 0x7fff8fe8f5c0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8fe8f770>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff90310da0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8dc63bc0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8fe8f770>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
The above exception was the direct cause of the following exception:
self = <test_notify_outdated_chroots.TestNotifyOutdatedChroots object at 0x7fff90b30290>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8dc63bc0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8fe8f770>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
E       [SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
E       [parameters: [('f18',), ('fedora-17',), ('master',)]]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
______ ERROR at teardown of TestNotifyOutdatedChroots.test_filter_chroots ______
self = <test_notify_outdated_chroots.TestNotifyOutdatedChroots object at 0x7fff90b30290>
method = <bound method TestNotifyOutdatedChroots.test_filter_chroots of <test_notify_outdated_chroots.TestNotifyOutdatedChroots object at 0x7fff90b30290>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
___ ERROR at setup of TestNotifyOutdatedChroots.test_notify_outdated_chroots ___
self = <sqlalchemy.engine.base.Connection object at 0x7fff8fdd0ec0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8fdd0f20>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff90310da0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8deecbc0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8fdd0f20>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
The above exception was the direct cause of the following exception:
self = <test_notify_outdated_chroots.TestNotifyOutdatedChroots object at 0x7fff90b304a0>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8deecbc0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8fdd0f20>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
E       [SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
E       [parameters: [('f18',), ('fedora-17',), ('master',)]]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
_ ERROR at teardown of TestNotifyOutdatedChroots.test_notify_outdated_chroots __
self = <test_notify_outdated_chroots.TestNotifyOutdatedChroots object at 0x7fff90b304a0>
method = <bound method TestNotifyOutdatedChroots.test_notify_outdated_chroots of <test_notify_outdated_chroots.TestNotifyOutdatedChroots object at 0x7fff90b304a0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
_ ERROR at setup of TestNotifyOutdatedChroots.test_notify_outdated_chroots_email_filter _
self = <sqlalchemy.engine.base.Connection object at 0x7fff8fdd3ec0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8fdd3f20>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff90310da0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8e28ecc0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8fdd3f20>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
The above exception was the direct cause of the following exception:
self = <test_notify_outdated_chroots.TestNotifyOutdatedChroots object at 0x7fff90b306b0>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8e28ecc0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8fdd3f20>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
E       [SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
E       [parameters: [('f18',), ('fedora-17',), ('master',)]]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
_ ERROR at teardown of TestNotifyOutdatedChroots.test_notify_outdated_chroots_email_filter _
self = <test_notify_outdated_chroots.TestNotifyOutdatedChroots object at 0x7fff90b306b0>
method = <bound method TestNotifyOutdatedChroots.test_notify_outdated_chroots_email_filter of <test_notify_outdated_chroots.TestNotifyOutdatedChroots object at 0x7fff90b306b0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
____ ERROR at setup of TestRawhideToRelease.test_rawhide_to_release_action _____
self = <sqlalchemy.engine.base.Connection object at 0x7fff8febd670>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8febd610>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff903111c0>
parameters = [('user1', 0, 1, None)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
                    self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
                    )
            elif not effective_parameters and context.no_parameters:
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_execute_no_params:
                        if fn(cursor, str_statement, context):
                            evt_handled = True
                            break
                if not evt_handled:
                    self.dialect.do_execute_no_params(
                        cursor, str_statement, context
                    )
            else:
                effective_parameters = cast(
                    "_CoreSingleExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_execute:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_execute(
                        cursor, str_statement, effective_parameters, context
                    )
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1960: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8dc6f540>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8febd610>
    def do_execute(self, cursor, statement, parameters, context=None):
>       cursor.execute(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: user.username
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:924: IntegrityError
The above exception was the direct cause of the following exception:
self = <test_rawhide_to_release.TestRawhideToRelease object at 0x7fff90b32d50>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1233: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1960: in _exec_single_context
    self.dialect.do_execute(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8dc6f540>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8febd610>
    def do_execute(self, cursor, statement, parameters, context=None):
>       cursor.execute(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: user.username
E       [SQL: INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)]
E       [parameters: ('user1', 0, 1, None)]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:924: IntegrityError
___ ERROR at teardown of TestRawhideToRelease.test_rawhide_to_release_action ___
self = <test_rawhide_to_release.TestRawhideToRelease object at 0x7fff90b32d50>
method = <function TestRawhideToRelease.test_rawhide_to_release_action at 0x7fff90aa5ee0>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
____________ ERROR at setup of TestBranchFedora.test_branch_fedora _____________
self = <sqlalchemy.engine.base.Connection object at 0x7fff8fe2d280>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8fe2d340>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff90310da0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8dba32c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8fe2d340>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
The above exception was the direct cause of the following exception:
self = <test_rawhide_to_release.TestBranchFedora object at 0x7fff90b00500>
f_users = None, f_coprs = None, f_mock_chroots = None, f_builds = None
    @pytest.fixture
    def f_copr_chroots_assigned(self, f_users, f_coprs, f_mock_chroots,
                                f_builds):
        """
        Make sure that users/coprs/builds are created, and that some build
        chroots have correcponding copr_chroot instsances.
        """
        _side_effects = (self, f_users, f_coprs, f_mock_chroots, f_builds)
>       for bch in models.BuildChroot.query.all():
tests/coprs_test_case.py:791: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/query.py:2672: in all
    return self._iter().all()  # type: ignore
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/query.py:2826: in _iter
    result: Union[ScalarResult[_T], Result[_T]] = self.session.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:2306: in execute
    return self._execute_internal(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:2170: in _execute_internal
    ) = compile_state_cls.orm_pre_session_exec(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/context.py:549: in orm_pre_session_exec
    session._autoflush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:3005: in _autoflush
    raise e.with_traceback(sys.exc_info()[2])
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:2994: in _autoflush
    self.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8dba32c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8fe2d340>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (raised as a result of Query-invoked autoflush; consider using a session.no_autoflush block if this flush is occurring prematurely)
E       (sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
E       [SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
E       [parameters: [('f18',), ('fedora-17',), ('master',)]]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
___________ ERROR at teardown of TestBranchFedora.test_branch_fedora ___________
self = <test_rawhide_to_release.TestBranchFedora object at 0x7fff90b00500>
method = <bound method TestBranchFedora.test_branch_fedora of <test_rawhide_to_release.TestBranchFedora object at 0x7fff90b00500>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
___ ERROR at setup of TestBatchesLogic.test_normal_batch_operation_failures ____
self = <sqlalchemy.engine.base.Connection object at 0x7fff8ebb8cb0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8ebb8d70>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff903111c0>
parameters = [('user1', 0, 1, None)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
                    self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
                    )
            elif not effective_parameters and context.no_parameters:
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_execute_no_params:
                        if fn(cursor, str_statement, context):
                            evt_handled = True
                            break
                if not evt_handled:
                    self.dialect.do_execute_no_params(
                        cursor, str_statement, context
                    )
            else:
                effective_parameters = cast(
                    "_CoreSingleExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_execute:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_execute(
                        cursor, str_statement, effective_parameters, context
                    )
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1960: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8e1e62c0>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8ebb8d70>
    def do_execute(self, cursor, statement, parameters, context=None):
>       cursor.execute(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: user.username
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:924: IntegrityError
The above exception was the direct cause of the following exception:
self = <test_batch_logic.TestBatchesLogic object at 0x7fff90b015e0>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1233: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1960: in _exec_single_context
    self.dialect.do_execute(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8e1e62c0>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8ebb8d70>
    def do_execute(self, cursor, statement, parameters, context=None):
>       cursor.execute(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: user.username
E       [SQL: INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)]
E       [parameters: ('user1', 0, 1, None)]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:924: IntegrityError
__ ERROR at teardown of TestBatchesLogic.test_normal_batch_operation_failures __
self = <test_batch_logic.TestBatchesLogic object at 0x7fff90b015e0>
method = <bound method TestBatchesLogic.test_normal_batch_operation_failures of <test_batch_logic.TestBatchesLogic object at 0x7fff90b015e0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
______ ERROR at setup of TestBatchesLogic.test_less_likely_batch_problems ______
self = <sqlalchemy.engine.base.Connection object at 0x7fff8ebbba70>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8ebbbb30>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff903111c0>
parameters = [('user1', 0, 1, None)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
                    self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
                    )
            elif not effective_parameters and context.no_parameters:
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_execute_no_params:
                        if fn(cursor, str_statement, context):
                            evt_handled = True
                            break
                if not evt_handled:
                    self.dialect.do_execute_no_params(
                        cursor, str_statement, context
                    )
            else:
                effective_parameters = cast(
                    "_CoreSingleExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_execute:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_execute(
                        cursor, str_statement, effective_parameters, context
                    )
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1960: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8dc62ac0>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8ebbbb30>
    def do_execute(self, cursor, statement, parameters, context=None):
>       cursor.execute(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: user.username
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:924: IntegrityError
The above exception was the direct cause of the following exception:
self = <test_batch_logic.TestBatchesLogic object at 0x7fff90b010a0>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1233: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1960: in _exec_single_context
    self.dialect.do_execute(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8dc62ac0>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8ebbbb30>
    def do_execute(self, cursor, statement, parameters, context=None):
>       cursor.execute(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: user.username
E       [SQL: INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)]
E       [parameters: ('user1', 0, 1, None)]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:924: IntegrityError
____ ERROR at teardown of TestBatchesLogic.test_less_likely_batch_problems _____
self = <test_batch_logic.TestBatchesLogic object at 0x7fff90b010a0>
method = <bound method TestBatchesLogic.test_less_likely_batch_problems of <test_batch_logic.TestBatchesLogic object at 0x7fff90b010a0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
_______ ERROR at setup of TestBatchesLogic.test_cant_group_others_build ________
self = <sqlalchemy.engine.base.Connection object at 0x7fff8eb86630>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8eb866f0>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff903111c0>
parameters = [('user1', 0, 1, None)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
                    self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
                    )
            elif not effective_parameters and context.no_parameters:
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_execute_no_params:
                        if fn(cursor, str_statement, context):
                            evt_handled = True
                            break
                if not evt_handled:
                    self.dialect.do_execute_no_params(
                        cursor, str_statement, context
                    )
            else:
                effective_parameters = cast(
                    "_CoreSingleExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_execute:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_execute(
                        cursor, str_statement, effective_parameters, context
                    )
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1960: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8e03a9c0>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8eb866f0>
    def do_execute(self, cursor, statement, parameters, context=None):
>       cursor.execute(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: user.username
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:924: IntegrityError
The above exception was the direct cause of the following exception:
self = <test_batch_logic.TestBatchesLogic object at 0x7fff90b00f20>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1233: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1960: in _exec_single_context
    self.dialect.do_execute(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8e03a9c0>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8eb866f0>
    def do_execute(self, cursor, statement, parameters, context=None):
>       cursor.execute(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: user.username
E       [SQL: INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)]
E       [parameters: ('user1', 0, 1, None)]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:924: IntegrityError
______ ERROR at teardown of TestBatchesLogic.test_cant_group_others_build ______
self = <test_batch_logic.TestBatchesLogic object at 0x7fff90b00f20>
method = <bound method TestBatchesLogic.test_cant_group_others_build of <test_batch_logic.TestBatchesLogic object at 0x7fff90b00f20>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
_ ERROR at setup of TestBatchesLogic.test_batched_build_queue_sql_performance __
self = <sqlalchemy.engine.base.Connection object at 0x7fff8ef73b00>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8ec5da90>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff903111c0>
parameters = [('user1', 0, 1, None)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
                    self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
                    )
            elif not effective_parameters and context.no_parameters:
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_execute_no_params:
                        if fn(cursor, str_statement, context):
                            evt_handled = True
                            break
                if not evt_handled:
                    self.dialect.do_execute_no_params(
                        cursor, str_statement, context
                    )
            else:
                effective_parameters = cast(
                    "_CoreSingleExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_execute:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_execute(
                        cursor, str_statement, effective_parameters, context
                    )
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1960: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8e0aac40>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8ec5da90>
    def do_execute(self, cursor, statement, parameters, context=None):
>       cursor.execute(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: user.username
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:924: IntegrityError
The above exception was the direct cause of the following exception:
self = <test_batch_logic.TestBatchesLogic object at 0x7fff90b00860>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1233: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1960: in _exec_single_context
    self.dialect.do_execute(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8e0aac40>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8ec5da90>
    def do_execute(self, cursor, statement, parameters, context=None):
>       cursor.execute(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: user.username
E       [SQL: INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)]
E       [parameters: ('user1', 0, 1, None)]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:924: IntegrityError
_ ERROR at teardown of TestBatchesLogic.test_batched_build_queue_sql_performance _
self = <test_batch_logic.TestBatchesLogic object at 0x7fff90b00860>
method = <bound method TestBatchesLogic.test_batched_build_queue_sql_performance of <test_batch_logic.TestBatchesLogic object at 0x7fff90b00860>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
_______ ERROR at setup of TestBatchesLogic.test_large_batch_build_queue ________
self = <sqlalchemy.engine.base.Connection object at 0x7fff90a9a7e0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8fe270b0>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff903111c0>
parameters = [('user1', 0, 1, None)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
                    self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
                    )
            elif not effective_parameters and context.no_parameters:
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_execute_no_params:
                        if fn(cursor, str_statement, context):
                            evt_handled = True
                            break
                if not evt_handled:
                    self.dialect.do_execute_no_params(
                        cursor, str_statement, context
                    )
            else:
                effective_parameters = cast(
                    "_CoreSingleExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_execute:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_execute(
                        cursor, str_statement, effective_parameters, context
                    )
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1960: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8e0385c0>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8fe270b0>
    def do_execute(self, cursor, statement, parameters, context=None):
>       cursor.execute(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: user.username
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:924: IntegrityError
The above exception was the direct cause of the following exception:
self = <test_batch_logic.TestBatchesLogic object at 0x7fff90b00bc0>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1233: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1960: in _exec_single_context
    self.dialect.do_execute(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8e0385c0>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8fe270b0>
    def do_execute(self, cursor, statement, parameters, context=None):
>       cursor.execute(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: user.username
E       [SQL: INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)]
E       [parameters: ('user1', 0, 1, None)]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:924: IntegrityError
______ ERROR at teardown of TestBatchesLogic.test_large_batch_build_queue ______
self = <test_batch_logic.TestBatchesLogic object at 0x7fff90b00bc0>
method = <bound method TestBatchesLogic.test_large_batch_build_queue of <test_batch_logic.TestBatchesLogic object at 0x7fff90b00bc0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
_____ ERROR at setup of TestBuildsLogic.test_add_only_adds_active_chroots ______
self = <sqlalchemy.engine.base.Connection object at 0x7fff8febd880>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8febda00>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff90310da0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8eaf86c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8febda00>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
The above exception was the direct cause of the following exception:
self = <test_builds_logic.TestBuildsLogic object at 0x7fff90b25c10>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8eaf86c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8febda00>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
E       [SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
E       [parameters: [('f18',), ('fedora-17',), ('master',)]]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
____ ERROR at teardown of TestBuildsLogic.test_add_only_adds_active_chroots ____
self = <test_builds_logic.TestBuildsLogic object at 0x7fff90b25c10>
method = <bound method TestBuildsLogic.test_add_only_adds_active_chroots of <test_builds_logic.TestBuildsLogic object at 0x7fff90b25c10>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
______ ERROR at setup of TestBuildsLogic.test_build_still_active_chroots _______
self = <sqlalchemy.engine.base.Connection object at 0x7fff8eb87500>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8eb87620>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff90310da0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8dc61740>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8eb87620>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
The above exception was the direct cause of the following exception:
self = <test_builds_logic.TestBuildsLogic object at 0x7fff90b260c0>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8dc61740>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8eb87620>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
E       [SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
E       [parameters: [('f18',), ('fedora-17',), ('master',)]]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
_____ ERROR at teardown of TestBuildsLogic.test_build_still_active_chroots _____
self = <test_builds_logic.TestBuildsLogic object at 0x7fff90b260c0>
method = <bound method TestBuildsLogic.test_build_still_active_chroots of <test_builds_logic.TestBuildsLogic object at 0x7fff90b260c0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
_ ERROR at setup of TestBuildsLogic.test_add_raises_if_copr_has_unfinished_actions _
self = <sqlalchemy.engine.base.Connection object at 0x7fff8eae1730>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8eae1d90>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff903111c0>
parameters = [('user1', 0, 1, None)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
                    self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
                    )
            elif not effective_parameters and context.no_parameters:
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_execute_no_params:
                        if fn(cursor, str_statement, context):
                            evt_handled = True
                            break
                if not evt_handled:
                    self.dialect.do_execute_no_params(
                        cursor, str_statement, context
                    )
            else:
                effective_parameters = cast(
                    "_CoreSingleExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_execute:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_execute(
                        cursor, str_statement, effective_parameters, context
                    )
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1960: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8e03b040>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8eae1d90>
    def do_execute(self, cursor, statement, parameters, context=None):
>       cursor.execute(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: user.username
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:924: IntegrityError
The above exception was the direct cause of the following exception:
self = <test_builds_logic.TestBuildsLogic object at 0x7fff90b258e0>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1233: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1960: in _exec_single_context
    self.dialect.do_execute(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8e03b040>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8eae1d90>
    def do_execute(self, cursor, statement, parameters, context=None):
>       cursor.execute(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: user.username
E       [SQL: INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)]
E       [parameters: ('user1', 0, 1, None)]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:924: IntegrityError
_ ERROR at teardown of TestBuildsLogic.test_add_raises_if_copr_has_unfinished_actions _
self = <test_builds_logic.TestBuildsLogic object at 0x7fff90b258e0>
method = <bound method TestBuildsLogic.test_add_raises_if_copr_has_unfinished_actions of <test_builds_logic.TestBuildsLogic object at 0x7fff90b258e0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
_____ ERROR at setup of TestBuildsLogic.test_add_assigns_params_correctly ______
self = <sqlalchemy.engine.base.Connection object at 0x7fff8eb01430>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8eb01490>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff90310da0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8dca8b40>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8eb01490>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
The above exception was the direct cause of the following exception:
self = <test_builds_logic.TestBuildsLogic object at 0x7fff90b25ac0>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8dca8b40>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8eb01490>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
E       [SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
E       [parameters: [('f18',), ('fedora-17',), ('master',)]]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
____ ERROR at teardown of TestBuildsLogic.test_add_assigns_params_correctly ____
self = <test_builds_logic.TestBuildsLogic object at 0x7fff90b25ac0>
method = <bound method TestBuildsLogic.test_add_assigns_params_correctly of <test_builds_logic.TestBuildsLogic object at 0x7fff90b25ac0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
_______ ERROR at setup of TestBuildsLogic.test_add_error_on_multiply_src _______
self = <sqlalchemy.engine.base.Connection object at 0x7fff8eb80470>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8eb804d0>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff90310da0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8dc6f340>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8eb804d0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
The above exception was the direct cause of the following exception:
self = <test_builds_logic.TestBuildsLogic object at 0x7fff90b25280>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8dc6f340>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8eb804d0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
E       [SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
E       [parameters: [('f18',), ('fedora-17',), ('master',)]]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
_____ ERROR at teardown of TestBuildsLogic.test_add_error_on_multiply_src ______
self = <test_builds_logic.TestBuildsLogic object at 0x7fff90b25280>
method = <bound method TestBuildsLogic.test_add_error_on_multiply_src of <test_builds_logic.TestBuildsLogic object at 0x7fff90b25280>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
_____________ ERROR at setup of TestBuildsLogic.test_build_queue_1 _____________
self = <sqlalchemy.engine.base.Connection object at 0x7fff8eb836b0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8eb83740>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff90310da0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8eaf8bc0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8eb83740>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
The above exception was the direct cause of the following exception:
self = <test_builds_logic.TestBuildsLogic object at 0x7fff90b25160>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8eaf8bc0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8eb83740>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
E       [SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
E       [parameters: [('f18',), ('fedora-17',), ('master',)]]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
___________ ERROR at teardown of TestBuildsLogic.test_build_queue_1 ____________
self = <test_builds_logic.TestBuildsLogic object at 0x7fff90b25160>
method = <bound method TestBuildsLogic.test_build_queue_1 of <test_builds_logic.TestBuildsLogic object at 0x7fff90b25160>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
_____________ ERROR at setup of TestBuildsLogic.test_build_queue_2 _____________
self = <sqlalchemy.engine.base.Connection object at 0x7fff8eb491f0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8eb49280>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff90310da0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8dbffcc0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8eb49280>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
The above exception was the direct cause of the following exception:
self = <test_builds_logic.TestBuildsLogic object at 0x7fff90b244d0>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8dbffcc0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8eb49280>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
E       [SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
E       [parameters: [('f18',), ('fedora-17',), ('master',)]]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
___________ ERROR at teardown of TestBuildsLogic.test_build_queue_2 ____________
self = <test_builds_logic.TestBuildsLogic object at 0x7fff90b244d0>
method = <bound method TestBuildsLogic.test_build_queue_2 of <test_builds_logic.TestBuildsLogic object at 0x7fff90b244d0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
_____________ ERROR at setup of TestBuildsLogic.test_build_queue_3 _____________
self = <sqlalchemy.engine.base.Connection object at 0x7fff8eb489e0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8eb4b890>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff90310da0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8da92a40>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8eb4b890>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
The above exception was the direct cause of the following exception:
self = <test_builds_logic.TestBuildsLogic object at 0x7fff90b24140>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8da92a40>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8eb4b890>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
E       [SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
E       [parameters: [('f18',), ('fedora-17',), ('master',)]]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
___________ ERROR at teardown of TestBuildsLogic.test_build_queue_3 ____________
self = <test_builds_logic.TestBuildsLogic object at 0x7fff90b24140>
method = <bound method TestBuildsLogic.test_build_queue_3 of <test_builds_logic.TestBuildsLogic object at 0x7fff90b24140>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
_____________ ERROR at setup of TestBuildsLogic.test_build_queue_4 _____________
self = <sqlalchemy.engine.base.Connection object at 0x7fff8e72bc20>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8e72bce0>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff90310da0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8e3a43c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8e72bce0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
The above exception was the direct cause of the following exception:
self = <test_builds_logic.TestBuildsLogic object at 0x7fff90b24950>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8e3a43c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8e72bce0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
E       [SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
E       [parameters: [('f18',), ('fedora-17',), ('master',)]]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
___________ ERROR at teardown of TestBuildsLogic.test_build_queue_4 ____________
self = <test_builds_logic.TestBuildsLogic object at 0x7fff90b24950>
method = <bound method TestBuildsLogic.test_build_queue_4 of <test_builds_logic.TestBuildsLogic object at 0x7fff90b24950>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
_____________ ERROR at setup of TestBuildsLogic.test_build_queue_5 _____________
self = <sqlalchemy.engine.base.Connection object at 0x7fff8eb80d70>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8eb80e30>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff90310da0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8dc6d8c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8eb80e30>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
The above exception was the direct cause of the following exception:
self = <test_builds_logic.TestBuildsLogic object at 0x7fff90b25880>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8dc6d8c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8eb80e30>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
E       [SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
E       [parameters: [('f18',), ('fedora-17',), ('master',)]]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
___________ ERROR at teardown of TestBuildsLogic.test_build_queue_5 ____________
self = <test_builds_logic.TestBuildsLogic object at 0x7fff90b25880>
method = <bound method TestBuildsLogic.test_build_queue_5 of <test_builds_logic.TestBuildsLogic object at 0x7fff90b25880>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
_____________ ERROR at setup of TestBuildsLogic.test_build_queue_6 _____________
self = <sqlalchemy.engine.base.Connection object at 0x7fff8fe8dac0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8fe8e990>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff90310da0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8e26c7c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8fe8e990>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
The above exception was the direct cause of the following exception:
self = <test_builds_logic.TestBuildsLogic object at 0x7fff90b24b90>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8e26c7c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8fe8e990>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
E       [SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
E       [parameters: [('f18',), ('fedora-17',), ('master',)]]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
___________ ERROR at teardown of TestBuildsLogic.test_build_queue_6 ____________
self = <test_builds_logic.TestBuildsLogic object at 0x7fff90b24b90>
method = <bound method TestBuildsLogic.test_build_queue_6 of <test_builds_logic.TestBuildsLogic object at 0x7fff90b24b90>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
_____________ ERROR at setup of TestBuildsLogic.test_build_queue_7 _____________
self = <sqlalchemy.engine.base.Connection object at 0x7fff8eb876b0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8eb85e80>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff90310da0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8e1e6440>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8eb85e80>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
The above exception was the direct cause of the following exception:
self = <test_builds_logic.TestBuildsLogic object at 0x7fff90b269f0>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8e1e6440>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8eb85e80>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
E       [SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
E       [parameters: [('f18',), ('fedora-17',), ('master',)]]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
___________ ERROR at teardown of TestBuildsLogic.test_build_queue_7 ____________
self = <test_builds_logic.TestBuildsLogic object at 0x7fff90b269f0>
method = <function TestBuildsLogic.test_build_queue_7 at 0x7fff90b1ba60>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
________ ERROR at setup of TestBuildsLogic.test_delete_build_exceptions ________
self = <sqlalchemy.engine.base.Connection object at 0x7fff8e795970>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8e795ac0>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff90310da0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8d9d7d40>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8e795ac0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
The above exception was the direct cause of the following exception:
self = <test_builds_logic.TestBuildsLogic object at 0x7fff90b24fb0>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8d9d7d40>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8e795ac0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
E       [SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
E       [parameters: [('f18',), ('fedora-17',), ('master',)]]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
______ ERROR at teardown of TestBuildsLogic.test_delete_build_exceptions _______
self = <test_builds_logic.TestBuildsLogic object at 0x7fff90b24fb0>
method = <bound method TestBuildsLogic.test_delete_build_exceptions of <test_builds_logic.TestBuildsLogic object at 0x7fff90b24fb0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
_________ ERROR at setup of TestBuildsLogic.test_delete_build_as_admin _________
self = <sqlalchemy.engine.base.Connection object at 0x7fff8e72d580>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8e72d610>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff90310da0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8dc6e5c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8e72d610>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
The above exception was the direct cause of the following exception:
self = <test_builds_logic.TestBuildsLogic object at 0x7fff90b24320>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8dc6e5c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8e72d610>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
E       [SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
E       [parameters: [('f18',), ('fedora-17',), ('master',)]]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
_______ ERROR at teardown of TestBuildsLogic.test_delete_build_as_admin ________
self = <test_builds_logic.TestBuildsLogic object at 0x7fff90b24320>
method = <bound method TestBuildsLogic.test_delete_build_as_admin of <test_builds_logic.TestBuildsLogic object at 0x7fff90b24320>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
_______ ERROR at setup of TestBuildsLogic.test_delete_build_no_resultdir _______
self = <sqlalchemy.engine.base.Connection object at 0x7fff8e6e5340>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8e6e53d0>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff90310da0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8e7b94c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8e6e53d0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
The above exception was the direct cause of the following exception:
self = <test_builds_logic.TestBuildsLogic object at 0x7fff90b24050>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8e7b94c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8e6e53d0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
E       [SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
E       [parameters: [('f18',), ('fedora-17',), ('master',)]]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
_____ ERROR at teardown of TestBuildsLogic.test_delete_build_no_resultdir ______
self = <test_builds_logic.TestBuildsLogic object at 0x7fff90b24050>
method = <bound method TestBuildsLogic.test_delete_build_no_resultdir of <test_builds_logic.TestBuildsLogic object at 0x7fff90b24050>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
__ ERROR at setup of TestBuildsLogic.test_delete_mulitple_builds_no_resultdir __
self = <sqlalchemy.engine.base.Connection object at 0x7fff8e72d490>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8e72cb30>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff90310da0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8d9d5e40>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8e72cb30>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
The above exception was the direct cause of the following exception:
self = <test_builds_logic.TestBuildsLogic object at 0x7fff90b25490>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8d9d5e40>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8e72cb30>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
E       [SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
E       [parameters: [('f18',), ('fedora-17',), ('master',)]]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
_ ERROR at teardown of TestBuildsLogic.test_delete_mulitple_builds_no_resultdir _
self = <test_builds_logic.TestBuildsLogic object at 0x7fff90b25490>
method = <bound method TestBuildsLogic.test_delete_mulitple_builds_no_resultdir of <test_builds_logic.TestBuildsLogic object at 0x7fff90b25490>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
__________ ERROR at setup of TestBuildsLogic.test_delete_build_basic ___________
self = <sqlalchemy.engine.base.Connection object at 0x7fff8e777aa0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8e777b30>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff90310da0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8d9fcac0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8e777b30>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
The above exception was the direct cause of the following exception:
self = <test_builds_logic.TestBuildsLogic object at 0x7fff90aab2c0>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8d9fcac0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8e777b30>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
E       [SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
E       [parameters: [('f18',), ('fedora-17',), ('master',)]]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
_________ ERROR at teardown of TestBuildsLogic.test_delete_build_basic _________
self = <test_builds_logic.TestBuildsLogic object at 0x7fff90aab2c0>
method = <bound method TestBuildsLogic.test_delete_build_basic of <test_builds_logic.TestBuildsLogic object at 0x7fff90aab2c0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
________ ERROR at setup of TestBuildsLogic.test_delete_multiple_builds _________
self = <sqlalchemy.engine.base.Connection object at 0x7fff8e836c90>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8e836d20>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff90310da0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8da462c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8e836d20>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
The above exception was the direct cause of the following exception:
self = <test_builds_logic.TestBuildsLogic object at 0x7fff90aaaf90>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8da462c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8e836d20>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
E       [SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
E       [parameters: [('f18',), ('fedora-17',), ('master',)]]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
_______ ERROR at teardown of TestBuildsLogic.test_delete_multiple_builds _______
self = <test_builds_logic.TestBuildsLogic object at 0x7fff90aaaf90>
method = <bound method TestBuildsLogic.test_delete_multiple_builds of <test_builds_logic.TestBuildsLogic object at 0x7fff90aaaf90>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
__ ERROR at teardown of TestBuildsLogic.test_resubmit_build_inherit_git_hash ___
self = <test_builds_logic.TestBuildsLogic object at 0x7fff90aaba40>
method = <bound method TestBuildsLogic.test_resubmit_build_inherit_git_hash of <test_builds_logic.TestBuildsLogic object at 0x7fff90aaba40>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
___________ ERROR at teardown of TestBuildsLogic.test_mark_as_failed ___________
self = <test_builds_logic.TestBuildsLogic object at 0x7fff90b034a0>
method = <bound method TestBuildsLogic.test_mark_as_failed of <test_builds_logic.TestBuildsLogic object at 0x7fff90b034a0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
_____ ERROR at setup of TestBuildsLogic.test_build_garbage_collector_works _____
self = <sqlalchemy.engine.base.Connection object at 0x7fff8e72a7e0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8e728ef0>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff90310da0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8d9625c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8e728ef0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
The above exception was the direct cause of the following exception:
self = <test_builds_logic.TestBuildsLogic object at 0x7fff90b03ec0>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8d9625c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8e728ef0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
E       [SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
E       [parameters: [('f18',), ('fedora-17',), ('master',)]]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
___ ERROR at teardown of TestBuildsLogic.test_build_garbage_collector_works ____
self = <test_builds_logic.TestBuildsLogic object at 0x7fff90b03ec0>
method = <bound method TestBuildsLogic.test_build_garbage_collector_works of <test_builds_logic.TestBuildsLogic object at 0x7fff90b03ec0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
___________ ERROR at setup of TestBuildsLogic.test_no_active_chroot ____________
self = <sqlalchemy.engine.base.Connection object at 0x7fff8eb000e0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8eb4a300>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff90310da0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8df18e40>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8eb4a300>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
The above exception was the direct cause of the following exception:
self = <test_builds_logic.TestBuildsLogic object at 0x7fff90b03980>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8df18e40>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8eb4a300>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
E       [SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
E       [parameters: [('f18',), ('fedora-17',), ('master',)]]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
__________ ERROR at teardown of TestBuildsLogic.test_no_active_chroot __________
self = <test_builds_logic.TestBuildsLogic object at 0x7fff90b03980>
method = <bound method TestBuildsLogic.test_no_active_chroot of <test_builds_logic.TestBuildsLogic object at 0x7fff90b03980>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
_ ERROR at setup of TestBuildsLogic.test_create_new_from_upload_no_space_left __
self = <sqlalchemy.engine.base.Connection object at 0x7fff8eb48740>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8e7e1580>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff90310da0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8d9619c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8e7e1580>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
The above exception was the direct cause of the following exception:
self = <test_builds_logic.TestBuildsLogic object at 0x7fff90b03d10>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8d9619c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8e7e1580>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
E       [SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
E       [parameters: [('f18',), ('fedora-17',), ('master',)]]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
_ ERROR at teardown of TestBuildsLogic.test_create_new_from_upload_no_space_left _
self = <test_builds_logic.TestBuildsLogic object at 0x7fff90b03d10>
method = <bound method TestBuildsLogic.test_create_new_from_upload_no_space_left of <test_builds_logic.TestBuildsLogic object at 0x7fff90b03d10>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
__ ERROR at setup of TestBuildsLogic.test_package_assigned_to_build_initially __
self = <sqlalchemy.engine.base.Connection object at 0x7fff8eddd250>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8eddd2b0>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff90310da0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8e1e6440>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8eddd2b0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
The above exception was the direct cause of the following exception:
self = <test_builds_logic.TestBuildsLogic object at 0x7fff90b02f90>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8e1e6440>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8eddd2b0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
E       [SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
E       [parameters: [('f18',), ('fedora-17',), ('master',)]]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
_ ERROR at teardown of TestBuildsLogic.test_package_assigned_to_build_initially _
self = <test_builds_logic.TestBuildsLogic object at 0x7fff90b02f90>
method = <bound method TestBuildsLogic.test_package_assigned_to_build_initially of <test_builds_logic.TestBuildsLogic object at 0x7fff90b02f90>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
_________ ERROR at setup of TestBuildsLogic.test_rebuild_all_packages __________
self = <sqlalchemy.engine.base.Connection object at 0x7fff8ede8200>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8ede8260>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff90310da0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8d1e8840>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8ede8260>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
The above exception was the direct cause of the following exception:
self = <test_builds_logic.TestBuildsLogic object at 0x7fff90b034d0>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8d1e8840>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8ede8260>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
E       [SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
E       [parameters: [('f18',), ('fedora-17',), ('master',)]]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
________ ERROR at teardown of TestBuildsLogic.test_rebuild_all_packages ________
self = <test_builds_logic.TestBuildsLogic object at 0x7fff90b034d0>
method = <bound method TestBuildsLogic.test_rebuild_all_packages of <test_builds_logic.TestBuildsLogic object at 0x7fff90b034d0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
___ ERROR at setup of TestBuildsLogic.test_package_rebuild_permission_error ____
self = <sqlalchemy.engine.base.Connection object at 0x7fff8e89f230>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8eddc260>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff90310da0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8e1e4740>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8eddc260>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
The above exception was the direct cause of the following exception:
self = <test_builds_logic.TestBuildsLogic object at 0x7fff90b03770>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8e1e4740>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8eddc260>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
E       [SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
E       [parameters: [('f18',), ('fedora-17',), ('master',)]]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
__ ERROR at teardown of TestBuildsLogic.test_package_rebuild_permission_error __
self = <test_builds_logic.TestBuildsLogic object at 0x7fff90b03770>
method = <bound method TestBuildsLogic.test_package_rebuild_permission_error of <test_builds_logic.TestBuildsLogic object at 0x7fff90b03770>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
_ ERROR at setup of TestBuildsLogic.test_package_not_updated_after_source_ready _
self = <sqlalchemy.engine.base.Connection object at 0x7fff8ee421b0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8ee42210>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff90310da0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8d1e8340>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8ee42210>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
The above exception was the direct cause of the following exception:
self = <test_builds_logic.TestBuildsLogic object at 0x7fff90b25af0>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8d1e8340>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8ee42210>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
E       [SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
E       [parameters: [('f18',), ('fedora-17',), ('master',)]]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
_ ERROR at teardown of TestBuildsLogic.test_package_not_updated_after_source_ready _
self = <test_builds_logic.TestBuildsLogic object at 0x7fff90b25af0>
method = <bound method TestBuildsLogic.test_package_not_updated_after_source_ready of <test_builds_logic.TestBuildsLogic object at 0x7fff90b25af0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
_____ ERROR at setup of TestBuildsLogic.test_package_set_when_source_ready _____
self = <sqlalchemy.engine.base.Connection object at 0x7fff8ee79130>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8ee79190>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff90310da0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8d8c7440>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8ee79190>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
The above exception was the direct cause of the following exception:
self = <test_builds_logic.TestBuildsLogic object at 0x7fff90b24f80>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8d8c7440>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8ee79190>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
E       [SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
E       [parameters: [('f18',), ('fedora-17',), ('master',)]]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
___ ERROR at teardown of TestBuildsLogic.test_package_set_when_source_ready ____
self = <test_builds_logic.TestBuildsLogic object at 0x7fff90b24f80>
method = <bound method TestBuildsLogic.test_package_set_when_source_ready of <test_builds_logic.TestBuildsLogic object at 0x7fff90b24f80>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
___________ ERROR at setup of TestBuildsLogic.test_srpm_upload[100] ____________
self = <sqlalchemy.engine.base.Connection object at 0x7fff8ee951f0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8ee945f0>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff90310da0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8d975040>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8ee945f0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
The above exception was the direct cause of the following exception:
self = <test_builds_logic.TestBuildsLogic object at 0x7fff90b01220>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8d975040>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8ee945f0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
E       [SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
E       [parameters: [('f18',), ('fedora-17',), ('master',)]]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
__________ ERROR at teardown of TestBuildsLogic.test_srpm_upload[100] __________
self = <test_builds_logic.TestBuildsLogic object at 0x7fff90b01220>
method = <bound method TestBuildsLogic.test_srpm_upload of <test_builds_logic.TestBuildsLogic object at 0x7fff90b01220>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
___________ ERROR at setup of TestBuildsLogic.test_srpm_upload[1024] ___________
self = <sqlalchemy.engine.base.Connection object at 0x7fff8edeb620>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8ede8260>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff90310da0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8d977840>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8ede8260>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
The above exception was the direct cause of the following exception:
self = <test_builds_logic.TestBuildsLogic object at 0x7fff90b02c90>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8d977840>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8ede8260>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
E       [SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
E       [parameters: [('f18',), ('fedora-17',), ('master',)]]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
_________ ERROR at teardown of TestBuildsLogic.test_srpm_upload[1024] __________
self = <test_builds_logic.TestBuildsLogic object at 0x7fff90b02c90>
method = <bound method TestBuildsLogic.test_srpm_upload of <test_builds_logic.TestBuildsLogic object at 0x7fff90b02c90>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
__________ ERROR at setup of TestBuildsLogic.test_srpm_upload[102400] __________
self = <sqlalchemy.engine.base.Connection object at 0x7fff8e89fa70>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8e89dac0>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff90310da0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8dbfd8c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8e89dac0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
The above exception was the direct cause of the following exception:
self = <test_builds_logic.TestBuildsLogic object at 0x7fff90b02bd0>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8dbfd8c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8e89dac0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
E       [SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
E       [parameters: [('f18',), ('fedora-17',), ('master',)]]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
________ ERROR at teardown of TestBuildsLogic.test_srpm_upload[102400] _________
self = <test_builds_logic.TestBuildsLogic object at 0x7fff90b02bd0>
method = <bound method TestBuildsLogic.test_srpm_upload of <test_builds_logic.TestBuildsLogic object at 0x7fff90b02bd0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
_____ ERROR at setup of TestBuildsLogic.test_temporary_data_removed[False] _____
self = <sqlalchemy.engine.base.Connection object at 0x7fff8e7e36e0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8e7e2630>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff90310da0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8d9d47c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8e7e2630>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
The above exception was the direct cause of the following exception:
self = <test_builds_logic.TestBuildsLogic object at 0x7fff90b00b60>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8d9d47c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8e7e2630>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
E       [SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
E       [parameters: [('f18',), ('fedora-17',), ('master',)]]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
___ ERROR at teardown of TestBuildsLogic.test_temporary_data_removed[False] ____
self = <test_builds_logic.TestBuildsLogic object at 0x7fff90b00b60>
method = <bound method TestBuildsLogic.test_temporary_data_removed of <test_builds_logic.TestBuildsLogic object at 0x7fff90b00b60>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
_____ ERROR at setup of TestBuildsLogic.test_temporary_data_removed[True] ______
self = <sqlalchemy.engine.base.Connection object at 0x7fff8ee97980>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8ee95070>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff90310da0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8d21af40>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8ee95070>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
The above exception was the direct cause of the following exception:
self = <test_builds_logic.TestBuildsLogic object at 0x7fff90b01460>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8d21af40>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8ee95070>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
E       [SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
E       [parameters: [('f18',), ('fedora-17',), ('master',)]]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
____ ERROR at teardown of TestBuildsLogic.test_temporary_data_removed[True] ____
self = <test_builds_logic.TestBuildsLogic object at 0x7fff90b01460>
method = <bound method TestBuildsLogic.test_temporary_data_removed of <test_builds_logic.TestBuildsLogic object at 0x7fff90b01460>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
_______ ERROR at setup of TestComplexLogic.test_fork_copr_sends_actions ________
self = <sqlalchemy.engine.base.Connection object at 0x7fff8e6e52b0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8e8371d0>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff90310da0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8dc6d7c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8e8371d0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
The above exception was the direct cause of the following exception:
self = <test_complex_logic.TestComplexLogic object at 0x7fff90b08470>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8dc6d7c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8e8371d0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
E       [SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
E       [parameters: [('f18',), ('fedora-17',), ('master',)]]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
______ ERROR at teardown of TestComplexLogic.test_fork_copr_sends_actions ______
self = <test_complex_logic.TestComplexLogic object at 0x7fff90b08470>
method = <bound method TestComplexLogic.test_fork_copr_sends_actions of <test_complex_logic.TestComplexLogic object at 0x7fff90b08470>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
_ ERROR at setup of TestComplexLogic.test_fork_copr_projects_with_more_builds __
self = <sqlalchemy.engine.base.Connection object at 0x7fff8fe8d5b0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8ee971a0>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff90310da0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8da17cc0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8ee971a0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
The above exception was the direct cause of the following exception:
self = <test_complex_logic.TestComplexLogic object at 0x7fff90b08500>
f_coprs = None, f_mock_chroots = None, f_builds = None
    @pytest.fixture
    def f_fork_prepare(self, f_coprs, f_mock_chroots, f_builds):
    
        self.p4 = models.Package(
            copr=self.c2, name="hello-world", source_type=0)
        self.b5 = models.Build(
            copr=self.c2, copr_dir=self.c2_dir, package=self.p4,
            user=self.u1, submitted_on=50, srpm_url="http://somesrpm",
            source_status=StatusEnum("succeeded"), result_dir='00000005-hello-world')
        self.b6 = models.Build(
            copr=self.c2, copr_dir=self.c2_dir, package=self.p4,
            user=self.u1, submitted_on=10, srpm_url="http://somesrpm",
            source_status=StatusEnum("failed"), result_dir='00000006-hello-world',
            source_json='{}')
        self.b7 = models.Build(
            copr=self.c2, copr_dir=self.c2_dir, package=self.p2,
            user=self.u1, submitted_on=10, srpm_url="http://somesrpm",
            source_status=StatusEnum("succeeded"), result_dir='00000007-whatsupthere-world')
        self.b8 = models.Build(
            copr=self.c2, copr_dir=self.c2_dir, package=self.p2,
            user=self.u1, submitted_on=100, srpm_url="http://somesrpm",
            source_status=StatusEnum("succeeded"), result_dir='00000008-whatsupthere-world')
    
        self.basic_builds = [self.b5, self.b6, self.b7, self.b8]
        self.b5_bc = []
        self.b6_bc = []
        self.b7_bc = []
        self.b8_bc = []
>       self.db.session.flush()
tests/coprs_test_case.py:461: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:937: in flush
    return self._proxied.flush(objects=objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8da17cc0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8ee971a0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
E       [SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
E       [parameters: [('f18',), ('fedora-17',), ('master',)]]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
_ ERROR at teardown of TestComplexLogic.test_fork_copr_projects_with_more_builds _
self = <test_complex_logic.TestComplexLogic object at 0x7fff90b08500>
method = <bound method TestComplexLogic.test_fork_copr_projects_with_more_builds of <test_complex_logic.TestComplexLogic object at 0x7fff90b08500>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
_____ ERROR at setup of TestComplexLogic.test_fork_copr_with_eoled_chroots _____
self = <sqlalchemy.engine.base.Connection object at 0x7fff8f19d580>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8f19d670>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff90310da0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8d8c4ac0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8f19d670>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
The above exception was the direct cause of the following exception:
self = <test_complex_logic.TestComplexLogic object at 0x7fff90b0b6e0>
f_coprs = None, f_mock_chroots = None, f_builds = None
    @pytest.fixture
    def f_fork_prepare(self, f_coprs, f_mock_chroots, f_builds):
    
        self.p4 = models.Package(
            copr=self.c2, name="hello-world", source_type=0)
        self.b5 = models.Build(
            copr=self.c2, copr_dir=self.c2_dir, package=self.p4,
            user=self.u1, submitted_on=50, srpm_url="http://somesrpm",
            source_status=StatusEnum("succeeded"), result_dir='00000005-hello-world')
        self.b6 = models.Build(
            copr=self.c2, copr_dir=self.c2_dir, package=self.p4,
            user=self.u1, submitted_on=10, srpm_url="http://somesrpm",
            source_status=StatusEnum("failed"), result_dir='00000006-hello-world',
            source_json='{}')
        self.b7 = models.Build(
            copr=self.c2, copr_dir=self.c2_dir, package=self.p2,
            user=self.u1, submitted_on=10, srpm_url="http://somesrpm",
            source_status=StatusEnum("succeeded"), result_dir='00000007-whatsupthere-world')
        self.b8 = models.Build(
            copr=self.c2, copr_dir=self.c2_dir, package=self.p2,
            user=self.u1, submitted_on=100, srpm_url="http://somesrpm",
            source_status=StatusEnum("succeeded"), result_dir='00000008-whatsupthere-world')
    
        self.basic_builds = [self.b5, self.b6, self.b7, self.b8]
        self.b5_bc = []
        self.b6_bc = []
        self.b7_bc = []
        self.b8_bc = []
>       self.db.session.flush()
tests/coprs_test_case.py:461: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:937: in flush
    return self._proxied.flush(objects=objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8d8c4ac0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8f19d670>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
E       [SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
E       [parameters: [('f18',), ('fedora-17',), ('master',)]]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
___ ERROR at teardown of TestComplexLogic.test_fork_copr_with_eoled_chroots ____
self = <test_complex_logic.TestComplexLogic object at 0x7fff90b0b6e0>
method = <bound method TestComplexLogic.test_fork_copr_with_eoled_chroots of <test_complex_logic.TestComplexLogic object at 0x7fff90b0b6e0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
_________ ERROR at setup of TestComplexLogic.test_delete_expired_coprs _________
self = <sqlalchemy.engine.base.Connection object at 0x7fff8f0e9610>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8f0e96a0>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff90310da0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8da14c40>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8f0e96a0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
The above exception was the direct cause of the following exception:
self = <test_complex_logic.TestComplexLogic object at 0x7fff90b0adb0>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8da14c40>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8f0e96a0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
E       [SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
E       [parameters: [('f18',), ('fedora-17',), ('master',)]]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
_______ ERROR at teardown of TestComplexLogic.test_delete_expired_coprs ________
self = <test_complex_logic.TestComplexLogic object at 0x7fff90b0adb0>
method = <bound method TestComplexLogic.test_delete_expired_coprs of <test_complex_logic.TestComplexLogic object at 0x7fff90b0adb0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
___________ ERROR at setup of TestProjectForking.test_create_object ____________
self = <sqlalchemy.engine.base.Connection object at 0x7fff8f1ac7d0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8f1ac860>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff90310da0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8da10040>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8f1ac860>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
The above exception was the direct cause of the following exception:
self = <test_complex_logic.TestProjectForking object at 0x7fff90b09fa0>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8da10040>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8f1ac860>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
E       [SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
E       [parameters: [('f18',), ('fedora-17',), ('master',)]]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
__________ ERROR at teardown of TestProjectForking.test_create_object __________
self = <test_complex_logic.TestProjectForking object at 0x7fff90b09fa0>
method = <bound method TestProjectForking.test_create_object of <test_complex_logic.TestProjectForking object at 0x7fff90b09fa0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
_____________ ERROR at setup of TestProjectForking.test_fork_build _____________
self = <sqlalchemy.engine.base.Connection object at 0x7fff8f1afb30>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8f1afbc0>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff90310da0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8d22d6c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8f1afbc0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
The above exception was the direct cause of the following exception:
self = <test_complex_logic.TestProjectForking object at 0x7fff90b09700>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8d22d6c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8f1afbc0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
E       [SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
E       [parameters: [('f18',), ('fedora-17',), ('master',)]]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
___________ ERROR at teardown of TestProjectForking.test_fork_build ____________
self = <test_complex_logic.TestProjectForking object at 0x7fff90b09700>
method = <bound method TestProjectForking.test_fork_build of <test_complex_logic.TestProjectForking object at 0x7fff90b09700>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
__ ERROR at setup of TestProjectForking.test_fork_check_assigned_copr_chroot ___
self = <sqlalchemy.engine.base.Connection object at 0x7fff8f1b94f0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8f1b8f50>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff90310da0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8d224040>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8f1b8f50>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
The above exception was the direct cause of the following exception:
self = <test_complex_logic.TestProjectForking object at 0x7fff90b09d00>
f_users = None, f_coprs = None, f_mock_chroots = None, f_builds = None
    @pytest.fixture
    def f_copr_chroots_assigned(self, f_users, f_coprs, f_mock_chroots,
                                f_builds):
        """
        Make sure that users/coprs/builds are created, and that some build
        chroots have correcponding copr_chroot instsances.
        """
        _side_effects = (self, f_users, f_coprs, f_mock_chroots, f_builds)
>       for bch in models.BuildChroot.query.all():
tests/coprs_test_case.py:791: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/query.py:2672: in all
    return self._iter().all()  # type: ignore
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/query.py:2826: in _iter
    result: Union[ScalarResult[_T], Result[_T]] = self.session.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:2306: in execute
    return self._execute_internal(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:2170: in _execute_internal
    ) = compile_state_cls.orm_pre_session_exec(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/context.py:549: in orm_pre_session_exec
    session._autoflush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:3005: in _autoflush
    raise e.with_traceback(sys.exc_info()[2])
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:2994: in _autoflush
    self.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8d224040>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8f1b8f50>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (raised as a result of Query-invoked autoflush; consider using a session.no_autoflush block if this flush is occurring prematurely)
E       (sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
E       [SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
E       [parameters: [('f18',), ('fedora-17',), ('master',)]]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
_ ERROR at teardown of TestProjectForking.test_fork_check_assigned_copr_chroot _
self = <test_complex_logic.TestProjectForking object at 0x7fff90b09d00>
method = <bound method TestProjectForking.test_fork_check_assigned_copr_chroot of <test_complex_logic.TestProjectForking object at 0x7fff90b09d00>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
____________ ERROR at setup of TestProjectForking.test_fork_package ____________
self = <sqlalchemy.engine.base.Connection object at 0x7fff8eb87fe0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8ee428d0>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff90310da0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8d975a40>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8ee428d0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
The above exception was the direct cause of the following exception:
self = <test_complex_logic.TestProjectForking object at 0x7fff90b09640>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8d975a40>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8ee428d0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
E       [SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
E       [parameters: [('f18',), ('fedora-17',), ('master',)]]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
__________ ERROR at teardown of TestProjectForking.test_fork_package ___________
self = <test_complex_logic.TestProjectForking object at 0x7fff90b09640>
method = <bound method TestProjectForking.test_fork_package of <test_complex_logic.TestProjectForking object at 0x7fff90b09640>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
_____________ ERROR at setup of TestProjectForking.test_fork_copr ______________
self = <sqlalchemy.engine.base.Connection object at 0x7fff8ee957c0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8ee95850>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff90310da0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8d5989c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8ee95850>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
The above exception was the direct cause of the following exception:
self = <test_complex_logic.TestProjectForking object at 0x7fff90b092b0>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8d5989c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8ee95850>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
E       [SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
E       [parameters: [('f18',), ('fedora-17',), ('master',)]]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
____________ ERROR at teardown of TestProjectForking.test_fork_copr ____________
self = <test_complex_logic.TestProjectForking object at 0x7fff90b092b0>
method = <bound method TestProjectForking.test_fork_copr of <test_complex_logic.TestProjectForking object at 0x7fff90b092b0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
___ ERROR at setup of TestProjectForking.test_forking_into_existing_project ____
self = <sqlalchemy.engine.base.Connection object at 0x7fff8ee7bdd0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8ee95820>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff90310da0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8d218f40>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8ee95820>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
The above exception was the direct cause of the following exception:
self = <test_complex_logic.TestProjectForking object at 0x7fff90b08080>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8d218f40>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8ee95820>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
E       [SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
E       [parameters: [('f18',), ('fedora-17',), ('master',)]]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
__ ERROR at teardown of TestProjectForking.test_forking_into_existing_project __
self = <test_complex_logic.TestProjectForking object at 0x7fff90b08080>
method = <bound method TestProjectForking.test_forking_into_existing_project of <test_complex_logic.TestProjectForking object at 0x7fff90b08080>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
_________ ERROR at setup of TestProjectForking.test_copr_by_repo_safe __________
self = <sqlalchemy.engine.base.Connection object at 0x7fff8f09d160>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8f09d1f0>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff90310da0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8da12540>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8f09d1f0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
The above exception was the direct cause of the following exception:
self = <test_complex_logic.TestProjectForking object at 0x7fff90b08f20>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8da12540>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8f09d1f0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
E       [SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
E       [parameters: [('f18',), ('fedora-17',), ('master',)]]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
________ ERROR at teardown of TestProjectForking.test_copr_by_repo_safe ________
self = <test_complex_logic.TestProjectForking object at 0x7fff90b08f20>
method = <bound method TestProjectForking.test_copr_by_repo_safe of <test_complex_logic.TestProjectForking object at 0x7fff90b08f20>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
_ ERROR at setup of TestProjectForking.test_generate_build_config_with_dep_mistake _
self = <sqlalchemy.engine.base.Connection object at 0x7fff8efd1820>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8efd18b0>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff90310da0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8d0091c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8efd18b0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
The above exception was the direct cause of the following exception:
self = <test_complex_logic.TestProjectForking object at 0x7fff90b09ac0>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8d0091c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8efd18b0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
E       [SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
E       [parameters: [('f18',), ('fedora-17',), ('master',)]]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
_ ERROR at teardown of TestProjectForking.test_generate_build_config_with_dep_mistake _
self = <test_complex_logic.TestProjectForking object at 0x7fff90b09ac0>
method = <bound method TestProjectForking.test_generate_build_config_with_dep_mistake of <test_complex_logic.TestProjectForking object at 0x7fff90b09ac0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
_____________ ERROR at setup of TestReposLogic.test_delete_reasons _____________
self = <sqlalchemy.engine.base.Connection object at 0x7fff8eff4770>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8eff4800>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff90310da0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8d4e0440>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8eff4800>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
The above exception was the direct cause of the following exception:
self = <test_complex_logic.TestReposLogic object at 0x7fff90b02ae0>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8d4e0440>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8eff4800>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
E       [SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
E       [parameters: [('f18',), ('fedora-17',), ('master',)]]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
___________ ERROR at teardown of TestReposLogic.test_delete_reasons ____________
self = <test_complex_logic.TestReposLogic object at 0x7fff90b02ae0>
method = <bound method TestReposLogic.test_delete_reasons of <test_complex_logic.TestReposLogic object at 0x7fff90b02ae0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
_____ ERROR at setup of TestCoprDirsLogic.test_coprdir_cleanup_no_removal ______
self = <sqlalchemy.engine.base.Connection object at 0x7fff8eff7650>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8eff76b0>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff90310da0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8d7d4ec0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8eff76b0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
The above exception was the direct cause of the following exception:
self = <test_copr_dirs_logic.TestCoprDirsLogic object at 0x7fff90b024e0>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8d7d4ec0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8eff76b0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
E       [SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
E       [parameters: [('f18',), ('fedora-17',), ('master',)]]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
____ ERROR at teardown of TestCoprDirsLogic.test_coprdir_cleanup_no_removal ____
self = <test_copr_dirs_logic.TestCoprDirsLogic object at 0x7fff90b024e0>
method = <bound method TestCoprDirsLogic.test_coprdir_cleanup_no_removal of <test_copr_dirs_logic.TestCoprDirsLogic object at 0x7fff90b024e0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
______ ERROR at setup of TestCoprDirsLogic.test_coprdir_cleanup_no_build _______
self = <sqlalchemy.engine.base.Connection object at 0x7fff8efe1070>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8efe10d0>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff90310da0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8d00f640>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8efe10d0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
The above exception was the direct cause of the following exception:
self = <test_copr_dirs_logic.TestCoprDirsLogic object at 0x7fff90b01fd0>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8d00f640>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8efe10d0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
E       [SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
E       [parameters: [('f18',), ('fedora-17',), ('master',)]]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
_____ ERROR at teardown of TestCoprDirsLogic.test_coprdir_cleanup_no_build _____
self = <test_copr_dirs_logic.TestCoprDirsLogic object at 0x7fff90b01fd0>
method = <bound method TestCoprDirsLogic.test_coprdir_cleanup_no_build of <test_copr_dirs_logic.TestCoprDirsLogic object at 0x7fff90b01fd0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
_______ ERROR at setup of TestCoprDirsLogic.test_coprdir_cleanup_old_pr ________
self = <sqlalchemy.engine.base.Connection object at 0x7fff8efe5400>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8efe5460>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff90310da0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8d7d6140>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8efe5460>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
The above exception was the direct cause of the following exception:
self = <test_copr_dirs_logic.TestCoprDirsLogic object at 0x7fff90b02180>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8d7d6140>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8efe5460>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
E       [SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
E       [parameters: [('f18',), ('fedora-17',), ('master',)]]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
______ ERROR at teardown of TestCoprDirsLogic.test_coprdir_cleanup_old_pr ______
self = <test_copr_dirs_logic.TestCoprDirsLogic object at 0x7fff90b02180>
method = <bound method TestCoprDirsLogic.test_coprdir_cleanup_old_pr of <test_copr_dirs_logic.TestCoprDirsLogic object at 0x7fff90b02180>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
_______ ERROR at setup of TestCoprDirsLogic.test_coprdir_cleanup_one_prs _______
self = <sqlalchemy.engine.base.Connection object at 0x7fff8eff4b60>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8eff4bc0>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff90310da0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8d009c40>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8eff4bc0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
The above exception was the direct cause of the following exception:
self = <test_copr_dirs_logic.TestCoprDirsLogic object at 0x7fff90b64260>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8d009c40>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8eff4bc0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
E       [SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
E       [parameters: [('f18',), ('fedora-17',), ('master',)]]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
_____ ERROR at teardown of TestCoprDirsLogic.test_coprdir_cleanup_one_prs ______
self = <test_copr_dirs_logic.TestCoprDirsLogic object at 0x7fff90b64260>
method = <bound method TestCoprDirsLogic.test_coprdir_cleanup_one_prs of <test_copr_dirs_logic.TestCoprDirsLogic object at 0x7fff90b64260>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
____ ERROR at setup of TestCoprDirsLogic.test_coprdir_build_normal_then_pr _____
self = <sqlalchemy.engine.base.Connection object at 0x7fff8ee96f90>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8ee95d60>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff90310da0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8d84c340>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8ee95d60>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
The above exception was the direct cause of the following exception:
self = <test_copr_dirs_logic.TestCoprDirsLogic object at 0x7fff90b64a40>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8d84c340>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8ee95d60>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
E       [SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
E       [parameters: [('f18',), ('fedora-17',), ('master',)]]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
___ ERROR at teardown of TestCoprDirsLogic.test_coprdir_build_normal_then_pr ___
self = <test_copr_dirs_logic.TestCoprDirsLogic object at 0x7fff90b64a40>
method = <bound method TestCoprDirsLogic.test_coprdir_build_normal_then_pr of <test_copr_dirs_logic.TestCoprDirsLogic object at 0x7fff90b64a40>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
_ ERROR at setup of TestCoprsLogic.test_legal_flag_doesnt_block_copr_functionality _
self = <sqlalchemy.engine.base.Connection object at 0x7fff8eb031a0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff90b083e0>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff903111c0>
parameters = [('user1', 0, 1, None)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
                    self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
                    )
            elif not effective_parameters and context.no_parameters:
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_execute_no_params:
                        if fn(cursor, str_statement, context):
                            evt_handled = True
                            break
                if not evt_handled:
                    self.dialect.do_execute_no_params(
                        cursor, str_statement, context
                    )
            else:
                effective_parameters = cast(
                    "_CoreSingleExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_execute:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_execute(
                        cursor, str_statement, effective_parameters, context
                    )
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1960: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8da132c0>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff90b083e0>
    def do_execute(self, cursor, statement, parameters, context=None):
>       cursor.execute(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: user.username
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:924: IntegrityError
The above exception was the direct cause of the following exception:
self = <test_coprs_logic.TestCoprsLogic object at 0x7fff90b66ea0>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1233: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1960: in _exec_single_context
    self.dialect.do_execute(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8da132c0>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff90b083e0>
    def do_execute(self, cursor, statement, parameters, context=None):
>       cursor.execute(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: user.username
E       [SQL: INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)]
E       [parameters: ('user1', 0, 1, None)]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:924: IntegrityError
_ ERROR at teardown of TestCoprsLogic.test_legal_flag_doesnt_block_copr_functionality _
self = <test_coprs_logic.TestCoprsLogic object at 0x7fff90b66ea0>
method = <bound method TestCoprsLogic.test_legal_flag_doesnt_block_copr_functionality of <test_coprs_logic.TestCoprsLogic object at 0x7fff90b66ea0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
___ ERROR at setup of TestCoprsLogic.test_fulltext_whooshee_return_all_hits ____
self = <sqlalchemy.engine.base.Connection object at 0x7fff8efe7380>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8efe7f20>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff903111c0>
parameters = [('user1', 0, 1, None)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
                    self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
                    )
            elif not effective_parameters and context.no_parameters:
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_execute_no_params:
                        if fn(cursor, str_statement, context):
                            evt_handled = True
                            break
                if not evt_handled:
                    self.dialect.do_execute_no_params(
                        cursor, str_statement, context
                    )
            else:
                effective_parameters = cast(
                    "_CoreSingleExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_execute:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_execute(
                        cursor, str_statement, effective_parameters, context
                    )
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1960: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8ddb68c0>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8efe7f20>
    def do_execute(self, cursor, statement, parameters, context=None):
>       cursor.execute(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: user.username
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:924: IntegrityError
The above exception was the direct cause of the following exception:
self = <test_coprs_logic.TestCoprsLogic object at 0x7fff90b670b0>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1233: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1960: in _exec_single_context
    self.dialect.do_execute(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8ddb68c0>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8efe7f20>
    def do_execute(self, cursor, statement, parameters, context=None):
>       cursor.execute(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: user.username
E       [SQL: INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)]
E       [parameters: ('user1', 0, 1, None)]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:924: IntegrityError
__ ERROR at teardown of TestCoprsLogic.test_fulltext_whooshee_return_all_hits __
self = <test_coprs_logic.TestCoprsLogic object at 0x7fff90b670b0>
method = <bound method TestCoprsLogic.test_fulltext_whooshee_return_all_hits of <test_coprs_logic.TestCoprsLogic object at 0x7fff90b670b0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
________ ERROR at teardown of TestCoprsLogic.test_raise_if_cant_delete _________
self = <test_coprs_logic.TestCoprsLogic object at 0x7fff90b664e0>
method = <bound method TestCoprsLogic.test_raise_if_cant_delete of <test_coprs_logic.TestCoprsLogic object at 0x7fff90b664e0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
_ ERROR at teardown of TestCoprsLogic.test_raise_if_packit_forge_project_cant_build_in_copr _
self = <test_coprs_logic.TestCoprsLogic object at 0x7fff90b66c30>
method = <bound method TestCoprsLogic.test_raise_if_packit_forge_project_cant_build_in_copr of <test_coprs_logic.TestCoprsLogic object at 0x7fff90b66c30>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
_ ERROR at setup of TestCoprsLogic.test_copr_logic_add_sends_create_gpg_key_action _
self = <sqlalchemy.engine.base.Connection object at 0x7fff8fb0cbc0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8fb0cc20>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff90310da0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8d4e26c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8fb0cc20>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
The above exception was the direct cause of the following exception:
self = <test_coprs_logic.TestCoprsLogic object at 0x7fff90b66930>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8d4e26c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8fb0cc20>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
E       [SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
E       [parameters: [('f18',), ('fedora-17',), ('master',)]]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
_ ERROR at teardown of TestCoprsLogic.test_copr_logic_add_sends_create_gpg_key_action _
self = <test_coprs_logic.TestCoprsLogic object at 0x7fff90b66930>
method = <bound method TestCoprsLogic.test_copr_logic_add_sends_create_gpg_key_action of <test_coprs_logic.TestCoprsLogic object at 0x7fff90b66930>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
________ ERROR at setup of TestCoprChrootsLogic.test_update_from_names _________
self = <sqlalchemy.engine.base.Connection object at 0x7fff8fb0f950>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8fb0f9b0>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff90310da0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8d84da40>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8fb0f9b0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
The above exception was the direct cause of the following exception:
self = <test_coprs_logic.TestCoprChrootsLogic object at 0x7fff90b65670>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8d84da40>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8fb0f9b0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
E       [SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
E       [parameters: [('f18',), ('fedora-17',), ('master',)]]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
_______ ERROR at teardown of TestCoprChrootsLogic.test_update_from_names _______
self = <test_coprs_logic.TestCoprChrootsLogic object at 0x7fff90b65670>
method = <bound method TestCoprChrootsLogic.test_update_from_names of <test_coprs_logic.TestCoprChrootsLogic object at 0x7fff90b65670>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
__ ERROR at setup of TestCoprChrootsLogic.test_update_from_names_delete_after __
self = <sqlalchemy.engine.base.Connection object at 0x7fff8faf26c0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8faf2720>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff90310da0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8cfc88c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8faf2720>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
The above exception was the direct cause of the following exception:
self = <test_coprs_logic.TestCoprChrootsLogic object at 0x7fff90b658b0>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8cfc88c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8faf2720>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
E       [SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
E       [parameters: [('f18',), ('fedora-17',), ('master',)]]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
_ ERROR at teardown of TestCoprChrootsLogic.test_update_from_names_delete_after _
self = <test_coprs_logic.TestCoprChrootsLogic object at 0x7fff90b658b0>
method = <bound method TestCoprChrootsLogic.test_update_from_names_delete_after of <test_coprs_logic.TestCoprChrootsLogic object at 0x7fff90b658b0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
____ ERROR at setup of TestCoprChrootsLogic.test_update_from_names_disabled ____
self = <sqlalchemy.engine.base.Connection object at 0x7fff8fb24fb0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8fb25010>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff90310da0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8d00c540>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8fb25010>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
The above exception was the direct cause of the following exception:
self = <test_coprs_logic.TestCoprChrootsLogic object at 0x7fff90b65b20>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8d00c540>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8fb25010>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
E       [SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
E       [parameters: [('f18',), ('fedora-17',), ('master',)]]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
__ ERROR at teardown of TestCoprChrootsLogic.test_update_from_names_disabled ___
self = <test_coprs_logic.TestCoprChrootsLogic object at 0x7fff90b65b20>
method = <bound method TestCoprChrootsLogic.test_update_from_names_disabled of <test_coprs_logic.TestCoprChrootsLogic object at 0x7fff90b65b20>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
_________ ERROR at setup of TestCoprChrootsLogic.test_filter_outdated __________
self = <sqlalchemy.engine.base.Connection object at 0x7fff8faf8a70>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8faf8ad0>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff90310da0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8d064ac0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8faf8ad0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
The above exception was the direct cause of the following exception:
self = <test_coprs_logic.TestCoprChrootsLogic object at 0x7fff90b65070>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8d064ac0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8faf8ad0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
E       [SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
E       [parameters: [('f18',), ('fedora-17',), ('master',)]]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
________ ERROR at teardown of TestCoprChrootsLogic.test_filter_outdated ________
self = <test_coprs_logic.TestCoprChrootsLogic object at 0x7fff90b65070>
method = <bound method TestCoprChrootsLogic.test_filter_outdated of <test_coprs_logic.TestCoprChrootsLogic object at 0x7fff90b65070>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
__ ERROR at setup of TestCoprChrootsLogic.test_filter_outdated_to_be_deleted ___
self = <sqlalchemy.engine.base.Connection object at 0x7fff8fafba70>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8fafbad0>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff90310da0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8dd75b40>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8fafbad0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
The above exception was the direct cause of the following exception:
self = <test_coprs_logic.TestCoprChrootsLogic object at 0x7fff90b64b60>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8dd75b40>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8fafbad0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
E       [SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
E       [parameters: [('f18',), ('fedora-17',), ('master',)]]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
_ ERROR at teardown of TestCoprChrootsLogic.test_filter_outdated_to_be_deleted _
self = <test_coprs_logic.TestCoprChrootsLogic object at 0x7fff90b64b60>
method = <bound method TestCoprChrootsLogic.test_filter_outdated_to_be_deleted of <test_coprs_logic.TestCoprChrootsLogic object at 0x7fff90b64b60>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
_ ERROR at setup of TestCoprChrootsLogic.test_disabling_disallowed_when_build_runs _
self = <sqlalchemy.engine.base.Connection object at 0x7fff8fb0daf0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8fb0d550>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff90310da0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8cfee740>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8fb0d550>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
The above exception was the direct cause of the following exception:
self = <test_coprs_logic.TestCoprChrootsLogic object at 0x7fff90b65040>
f_users = None, f_coprs = None, f_mock_chroots = None, f_builds = None
    @pytest.fixture
    def f_copr_chroots_assigned(self, f_users, f_coprs, f_mock_chroots,
                                f_builds):
        """
        Make sure that users/coprs/builds are created, and that some build
        chroots have correcponding copr_chroot instsances.
        """
        _side_effects = (self, f_users, f_coprs, f_mock_chroots, f_builds)
>       for bch in models.BuildChroot.query.all():
tests/coprs_test_case.py:791: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/query.py:2672: in all
    return self._iter().all()  # type: ignore
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/query.py:2826: in _iter
    result: Union[ScalarResult[_T], Result[_T]] = self.session.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:2306: in execute
    return self._execute_internal(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:2170: in _execute_internal
    ) = compile_state_cls.orm_pre_session_exec(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/context.py:549: in orm_pre_session_exec
    session._autoflush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:3005: in _autoflush
    raise e.with_traceback(sys.exc_info()[2])
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:2994: in _autoflush
    self.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8cfee740>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8fb0d550>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (raised as a result of Query-invoked autoflush; consider using a session.no_autoflush block if this flush is occurring prematurely)
E       (sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
E       [SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
E       [parameters: [('f18',), ('fedora-17',), ('master',)]]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
_ ERROR at teardown of TestCoprChrootsLogic.test_disabling_disallowed_when_build_runs _
self = <test_coprs_logic.TestCoprChrootsLogic object at 0x7fff90b65040>
method = <bound method TestCoprChrootsLogic.test_disabling_disallowed_when_build_runs of <test_coprs_logic.TestCoprChrootsLogic object at 0x7fff90b65040>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
_________ ERROR at setup of TestCoprChrootsLogic.test_chroot_reenable __________
self = <sqlalchemy.engine.base.Connection object at 0x7fff8ee96c30>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8ee95af0>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff90310da0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8cfc8340>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8ee95af0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
The above exception was the direct cause of the following exception:
self = <test_coprs_logic.TestCoprChrootsLogic object at 0x7fff90b67110>
f_users = None, f_coprs = None, f_mock_chroots = None, f_builds = None
    @pytest.fixture
    def f_copr_chroots_assigned(self, f_users, f_coprs, f_mock_chroots,
                                f_builds):
        """
        Make sure that users/coprs/builds are created, and that some build
        chroots have correcponding copr_chroot instsances.
        """
        _side_effects = (self, f_users, f_coprs, f_mock_chroots, f_builds)
>       for bch in models.BuildChroot.query.all():
tests/coprs_test_case.py:791: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/query.py:2672: in all
    return self._iter().all()  # type: ignore
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/query.py:2826: in _iter
    result: Union[ScalarResult[_T], Result[_T]] = self.session.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:2306: in execute
    return self._execute_internal(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:2170: in _execute_internal
    ) = compile_state_cls.orm_pre_session_exec(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/context.py:549: in orm_pre_session_exec
    session._autoflush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:3005: in _autoflush
    raise e.with_traceback(sys.exc_info()[2])
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:2994: in _autoflush
    self.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8cfc8340>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8ee95af0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (raised as a result of Query-invoked autoflush; consider using a session.no_autoflush block if this flush is occurring prematurely)
E       (sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
E       [SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
E       [parameters: [('f18',), ('fedora-17',), ('master',)]]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
________ ERROR at teardown of TestCoprChrootsLogic.test_chroot_reenable ________
self = <test_coprs_logic.TestCoprChrootsLogic object at 0x7fff90b67110>
method = <bound method TestCoprChrootsLogic.test_chroot_reenable of <test_coprs_logic.TestCoprChrootsLogic object at 0x7fff90b67110>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
____ ERROR at setup of TestCoprChrootsLogic.test_unclick_chroot_repeatedly _____
self = <sqlalchemy.engine.base.Connection object at 0x7fff8f13dac0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8f13dbb0>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff90310da0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8d29e840>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8f13dbb0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
The above exception was the direct cause of the following exception:
self = <test_coprs_logic.TestCoprChrootsLogic object at 0x7fff90b646b0>
f_users = None, f_coprs = None, f_mock_chroots = None, f_builds = None
    @pytest.fixture
    def f_copr_chroots_assigned(self, f_users, f_coprs, f_mock_chroots,
                                f_builds):
        """
        Make sure that users/coprs/builds are created, and that some build
        chroots have correcponding copr_chroot instsances.
        """
        _side_effects = (self, f_users, f_coprs, f_mock_chroots, f_builds)
>       for bch in models.BuildChroot.query.all():
tests/coprs_test_case.py:791: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/query.py:2672: in all
    return self._iter().all()  # type: ignore
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/query.py:2826: in _iter
    result: Union[ScalarResult[_T], Result[_T]] = self.session.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:2306: in execute
    return self._execute_internal(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:2170: in _execute_internal
    ) = compile_state_cls.orm_pre_session_exec(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/context.py:549: in orm_pre_session_exec
    session._autoflush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:3005: in _autoflush
    raise e.with_traceback(sys.exc_info()[2])
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:2994: in _autoflush
    self.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8d29e840>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8f13dbb0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (raised as a result of Query-invoked autoflush; consider using a session.no_autoflush block if this flush is occurring prematurely)
E       (sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
E       [SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
E       [parameters: [('f18',), ('fedora-17',), ('master',)]]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
___ ERROR at teardown of TestCoprChrootsLogic.test_unclick_chroot_repeatedly ___
self = <test_coprs_logic.TestCoprChrootsLogic object at 0x7fff90b646b0>
method = <bound method TestCoprChrootsLogic.test_unclick_chroot_repeatedly of <test_coprs_logic.TestCoprChrootsLogic object at 0x7fff90b646b0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
_________ ERROR at setup of TestPinnedCoprsLogic.test_pinned_projects __________
self = <sqlalchemy.engine.base.Connection object at 0x7fff8faf8bc0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8faf8d10>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff903111c0>
parameters = [('user1', 0, 1, None)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
                    self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
                    )
            elif not effective_parameters and context.no_parameters:
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_execute_no_params:
                        if fn(cursor, str_statement, context):
                            evt_handled = True
                            break
                if not evt_handled:
                    self.dialect.do_execute_no_params(
                        cursor, str_statement, context
                    )
            else:
                effective_parameters = cast(
                    "_CoreSingleExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_execute:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_execute(
                        cursor, str_statement, effective_parameters, context
                    )
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1960: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8d065dc0>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8faf8d10>
    def do_execute(self, cursor, statement, parameters, context=None):
>       cursor.execute(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: user.username
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:924: IntegrityError
The above exception was the direct cause of the following exception:
self = <test_coprs_logic.TestPinnedCoprsLogic object at 0x7fff90adc980>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1233: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1960: in _exec_single_context
    self.dialect.do_execute(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8d065dc0>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8faf8d10>
    def do_execute(self, cursor, statement, parameters, context=None):
>       cursor.execute(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: user.username
E       [SQL: INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)]
E       [parameters: ('user1', 0, 1, None)]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:924: IntegrityError
________ ERROR at teardown of TestPinnedCoprsLogic.test_pinned_projects ________
self = <test_coprs_logic.TestPinnedCoprsLogic object at 0x7fff90adc980>
method = <bound method TestPinnedCoprsLogic.test_pinned_projects of <test_coprs_logic.TestPinnedCoprsLogic object at 0x7fff90adc980>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
__ ERROR at setup of TestPinnedCoprsLogic.test_delete_project_that_is_pinned ___
self = <sqlalchemy.engine.base.Connection object at 0x7fff8fad53a0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8fad64e0>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff903111c0>
parameters = [('user1', 0, 1, None)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
                    self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
                    )
            elif not effective_parameters and context.no_parameters:
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_execute_no_params:
                        if fn(cursor, str_statement, context):
                            evt_handled = True
                            break
                if not evt_handled:
                    self.dialect.do_execute_no_params(
                        cursor, str_statement, context
                    )
            else:
                effective_parameters = cast(
                    "_CoreSingleExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_execute:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_execute(
                        cursor, str_statement, effective_parameters, context
                    )
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1960: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8d4e3340>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8fad64e0>
    def do_execute(self, cursor, statement, parameters, context=None):
>       cursor.execute(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: user.username
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:924: IntegrityError
The above exception was the direct cause of the following exception:
self = <test_coprs_logic.TestPinnedCoprsLogic object at 0x7fff90add010>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1233: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1960: in _exec_single_context
    self.dialect.do_execute(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8d4e3340>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8fad64e0>
    def do_execute(self, cursor, statement, parameters, context=None):
>       cursor.execute(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: user.username
E       [SQL: INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)]
E       [parameters: ('user1', 0, 1, None)]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:924: IntegrityError
_ ERROR at teardown of TestPinnedCoprsLogic.test_delete_project_that_is_pinned _
self = <test_coprs_logic.TestPinnedCoprsLogic object at 0x7fff90add010>
method = <bound method TestPinnedCoprsLogic.test_delete_project_that_is_pinned of <test_coprs_logic.TestPinnedCoprsLogic object at 0x7fff90add010>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
____________ ERROR at setup of TestCoprsLogicAdminFeatures.test_add ____________
self = <sqlalchemy.engine.base.Connection object at 0x7fff8fb89700>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8fb88e60>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff903111c0>
parameters = [('user1', 0, 1, None)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
                    self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
                    )
            elif not effective_parameters and context.no_parameters:
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_execute_no_params:
                        if fn(cursor, str_statement, context):
                            evt_handled = True
                            break
                if not evt_handled:
                    self.dialect.do_execute_no_params(
                        cursor, str_statement, context
                    )
            else:
                effective_parameters = cast(
                    "_CoreSingleExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_execute:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_execute(
                        cursor, str_statement, effective_parameters, context
                    )
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1960: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8d5b2bc0>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8fb88e60>
    def do_execute(self, cursor, statement, parameters, context=None):
>       cursor.execute(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: user.username
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:924: IntegrityError
The above exception was the direct cause of the following exception:
self = <test_coprs_logic.TestCoprsLogicAdminFeatures object at 0x7fff90adde20>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1233: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1960: in _exec_single_context
    self.dialect.do_execute(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8d5b2bc0>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8fb88e60>
    def do_execute(self, cursor, statement, parameters, context=None):
>       cursor.execute(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: user.username
E       [SQL: INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)]
E       [parameters: ('user1', 0, 1, None)]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:924: IntegrityError
__________ ERROR at teardown of TestCoprsLogicAdminFeatures.test_add ___________
self = <test_coprs_logic.TestCoprsLogicAdminFeatures object at 0x7fff90adde20>
method = <bound method TestCoprsLogicAdminFeatures.test_add of <test_coprs_logic.TestCoprsLogicAdminFeatures object at 0x7fff90adde20>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
_ ERROR at setup of TestCoprsLogicAdminFeatures.test_add_someone_else_project __
self = <sqlalchemy.engine.base.Connection object at 0x7fff8f568bf0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8f568440>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff903111c0>
parameters = [('user1', 0, 1, None)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
                    self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
                    )
            elif not effective_parameters and context.no_parameters:
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_execute_no_params:
                        if fn(cursor, str_statement, context):
                            evt_handled = True
                            break
                if not evt_handled:
                    self.dialect.do_execute_no_params(
                        cursor, str_statement, context
                    )
            else:
                effective_parameters = cast(
                    "_CoreSingleExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_execute:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_execute(
                        cursor, str_statement, effective_parameters, context
                    )
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1960: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8d542c40>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8f568440>
    def do_execute(self, cursor, statement, parameters, context=None):
>       cursor.execute(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: user.username
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:924: IntegrityError
The above exception was the direct cause of the following exception:
self = <test_coprs_logic.TestCoprsLogicAdminFeatures object at 0x7fff90ade000>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1233: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1960: in _exec_single_context
    self.dialect.do_execute(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8d542c40>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8f568440>
    def do_execute(self, cursor, statement, parameters, context=None):
>       cursor.execute(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: user.username
E       [SQL: INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)]
E       [parameters: ('user1', 0, 1, None)]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:924: IntegrityError
_ ERROR at teardown of TestCoprsLogicAdminFeatures.test_add_someone_else_project _
self = <test_coprs_logic.TestCoprsLogicAdminFeatures object at 0x7fff90ade000>
method = <bound method TestCoprsLogicAdminFeatures.test_add_someone_else_project of <test_coprs_logic.TestCoprsLogicAdminFeatures object at 0x7fff90ade000>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
_____ ERROR at setup of TestCoprsLogicAdminFeatures.test_add_group_project _____
self = <sqlalchemy.engine.base.Connection object at 0x7fff8f56b860>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8f56b8f0>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff903111c0>
parameters = [('user1', 0, 1, '{"fas_groups": ["fas_1", "fas_2"]}')]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
                    self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
                    )
            elif not effective_parameters and context.no_parameters:
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_execute_no_params:
                        if fn(cursor, str_statement, context):
                            evt_handled = True
                            break
                if not evt_handled:
                    self.dialect.do_execute_no_params(
                        cursor, str_statement, context
                    )
            else:
                effective_parameters = cast(
                    "_CoreSingleExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_execute:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_execute(
                        cursor, str_statement, effective_parameters, context
                    )
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1960: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8d24f040>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, '{"fas_groups": ["fas_1", "fas_2"]}')
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8f56b8f0>
    def do_execute(self, cursor, statement, parameters, context=None):
>       cursor.execute(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: user.username
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:924: IntegrityError
The above exception was the direct cause of the following exception:
self = <test_coprs_logic.TestCoprsLogicAdminFeatures object at 0x7fff90ade1e0>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1233: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1960: in _exec_single_context
    self.dialect.do_execute(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8d24f040>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, '{"fas_groups": ["fas_1", "fas_2"]}')
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8f56b8f0>
    def do_execute(self, cursor, statement, parameters, context=None):
>       cursor.execute(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: user.username
E       [SQL: INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)]
E       [parameters: ('user1', 0, 1, '{"fas_groups": ["fas_1", "fas_2"]}')]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:924: IntegrityError
___ ERROR at teardown of TestCoprsLogicAdminFeatures.test_add_group_project ____
self = <test_coprs_logic.TestCoprsLogicAdminFeatures object at 0x7fff90ade1e0>
method = <bound method TestCoprsLogicAdminFeatures.test_add_group_project of <test_coprs_logic.TestCoprsLogicAdminFeatures object at 0x7fff90ade1e0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
______ ERROR at teardown of TestChrootFormLogic.test_module_toggle_format ______
self = <test_coprs_logic.TestChrootFormLogic object at 0x7fff90b01f10>
method = <bound method TestChrootFormLogic.test_module_toggle_format of <test_coprs_logic.TestChrootFormLogic object at 0x7fff90b01f10>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
_____________ ERROR at setup of TestCoprScoreLogic.test_score_math _____________
self = <sqlalchemy.engine.base.Connection object at 0x7fff8f55a720>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8f55af60>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff903111c0>
parameters = [('user1', 0, 1, None)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
                    self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
                    )
            elif not effective_parameters and context.no_parameters:
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_execute_no_params:
                        if fn(cursor, str_statement, context):
                            evt_handled = True
                            break
                if not evt_handled:
                    self.dialect.do_execute_no_params(
                        cursor, str_statement, context
                    )
            else:
                effective_parameters = cast(
                    "_CoreSingleExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_execute:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_execute(
                        cursor, str_statement, effective_parameters, context
                    )
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1960: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8d30fb40>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8f55af60>
    def do_execute(self, cursor, statement, parameters, context=None):
>       cursor.execute(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: user.username
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:924: IntegrityError
The above exception was the direct cause of the following exception:
self = <test_coprs_logic.TestCoprScoreLogic object at 0x7fff90adfad0>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1233: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1960: in _exec_single_context
    self.dialect.do_execute(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8d30fb40>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8f55af60>
    def do_execute(self, cursor, statement, parameters, context=None):
>       cursor.execute(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: user.username
E       [SQL: INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)]
E       [parameters: ('user1', 0, 1, None)]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:924: IntegrityError
___________ ERROR at teardown of TestCoprScoreLogic.test_score_math ____________
self = <test_coprs_logic.TestCoprScoreLogic object at 0x7fff90adfad0>
method = <bound method TestCoprScoreLogic.test_score_math of <test_coprs_logic.TestCoprScoreLogic object at 0x7fff90adfad0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
_______ ERROR at setup of TestCoprSearchLogic.test_search_by_attributes ________
self = <sqlalchemy.engine.base.Connection object at 0x7fff8f4c9b20>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8f4c9bb0>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff90310da0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8d5418c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8f4c9bb0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
The above exception was the direct cause of the following exception:
self = <test_coprs_logic.TestCoprSearchLogic object at 0x7fff90b8f1d0>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8d5418c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8f4c9bb0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
E       [SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
E       [parameters: [('f18',), ('fedora-17',), ('master',)]]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
______ ERROR at teardown of TestCoprSearchLogic.test_search_by_attributes ______
self = <test_coprs_logic.TestCoprSearchLogic object at 0x7fff90b8f1d0>
method = <bound method TestCoprSearchLogic.test_search_by_attributes of <test_coprs_logic.TestCoprSearchLogic object at 0x7fff90b8f1d0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
________________ ERROR at setup of TestModulesLogic.test_state _________________
self = <sqlalchemy.engine.base.Connection object at 0x7fff8f519400>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8f519610>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff90310da0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8d29d0c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8f519610>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
The above exception was the direct cause of the following exception:
self = <test_modules_logic.TestModulesLogic object at 0x7fff90b8f830>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8d29d0c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8f519610>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
E       [SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
E       [parameters: [('f18',), ('fedora-17',), ('master',)]]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
_______________ ERROR at teardown of TestModulesLogic.test_state _______________
self = <test_modules_logic.TestModulesLogic object at 0x7fff90b8f830>
method = <bound method TestModulesLogic.test_state of <test_modules_logic.TestModulesLogic object at 0x7fff90b8f830>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
____________ ERROR at setup of TestModulesLogic.test_get_by_nsv_str ____________
self = <sqlalchemy.engine.base.Connection object at 0x7fff8f1afda0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8efe5700>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff90310da0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8d594040>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8efe5700>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
The above exception was the direct cause of the following exception:
self = <test_modules_logic.TestModulesLogic object at 0x7fff90b8e900>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8d594040>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8efe5700>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
E       [SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
E       [parameters: [('f18',), ('fedora-17',), ('master',)]]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
__________ ERROR at teardown of TestModulesLogic.test_get_by_nsv_str ___________
self = <test_modules_logic.TestModulesLogic object at 0x7fff90b8e900>
method = <bound method TestModulesLogic.test_get_by_nsv_str of <test_modules_logic.TestModulesLogic object at 0x7fff90b8e900>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
___________ ERROR at teardown of TestModulesLogic.test_yaml2modulemd ___________
self = <test_modules_logic.TestModulesLogic object at 0x7fff90b8ec90>
method = <bound method TestModulesLogic.test_yaml2modulemd of <test_modules_logic.TestModulesLogic object at 0x7fff90b8ec90>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
___________ ERROR at teardown of TestModulesLogic.test_from_modulemd ___________
self = <test_modules_logic.TestModulesLogic object at 0x7fff90b8ecc0>
method = <bound method TestModulesLogic.test_from_modulemd of <test_modules_logic.TestModulesLogic object at 0x7fff90b8ecc0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
______ ERROR at teardown of TestModuleBuildFacade.test_get_build_batches _______
self = <test_modules_logic.TestModuleBuildFacade object at 0x7fff90b8e0c0>
method = <bound method TestModuleBuildFacade.test_get_build_batches of <test_modules_logic.TestModuleBuildFacade object at 0x7fff90b8e0c0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
_____ ERROR at teardown of TestModuleBuildFacade.test_buildorder_issue_599 _____
self = <test_modules_logic.TestModuleBuildFacade object at 0x7fff90b8d5b0>
method = <bound method TestModuleBuildFacade.test_buildorder_issue_599 of <test_modules_logic.TestModuleBuildFacade object at 0x7fff90b8d5b0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
_______ ERROR at setup of TestModuleBuildFacade.test_add_builds_batches ________
self = <sqlalchemy.engine.base.Connection object at 0x7fff8f4ca330>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8f4c8950>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff90310da0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8d30c740>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8f4c8950>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
The above exception was the direct cause of the following exception:
self = <test_modules_logic.TestModuleBuildFacade object at 0x7fff90b8d730>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8d30c740>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8f4c8950>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
E       [SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
E       [parameters: [('f18',), ('fedora-17',), ('master',)]]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
______ ERROR at teardown of TestModuleBuildFacade.test_add_builds_batches ______
self = <test_modules_logic.TestModuleBuildFacade object at 0x7fff90b8d730>
method = <bound method TestModuleBuildFacade.test_add_builds_batches of <test_modules_logic.TestModuleBuildFacade object at 0x7fff90b8d730>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
________ ERROR at setup of TestModuleBuildFacade.test_platform_chroots _________
self = <sqlalchemy.engine.base.Connection object at 0x7fff8f51b4a0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8f51a480>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff903111c0>
parameters = [('user1', 0, 1, None)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
                    self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
                    )
            elif not effective_parameters and context.no_parameters:
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_execute_no_params:
                        if fn(cursor, str_statement, context):
                            evt_handled = True
                            break
                if not evt_handled:
                    self.dialect.do_execute_no_params(
                        cursor, str_statement, context
                    )
            else:
                effective_parameters = cast(
                    "_CoreSingleExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_execute:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_execute(
                        cursor, str_statement, effective_parameters, context
                    )
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1960: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8cfc8940>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8f51a480>
    def do_execute(self, cursor, statement, parameters, context=None):
>       cursor.execute(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: user.username
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:924: IntegrityError
The above exception was the direct cause of the following exception:
self = <test_modules_logic.TestModuleBuildFacade object at 0x7fff90b8da00>
    @pytest.fixture
    def f_mock_chroots_many(self):
        """
        Adds more chroots to self.c1
        Requires: f_mock_chroots
        """
        self.mc_list = []
        for arch in ["x86_64", "i386"]:
            for os_version in range(19, 24):
                mc = models.MockChroot(
                    os_release="fedora", os_version=os_version,
                    arch=arch, is_active=True)
                # Let's try slashes now. for example.  Some copr instances use
                # this pattern.
>               mc.distgit_branch = BranchesLogic.get_or_create(
                        'fedora/{0}'.format(os_version),
                        session=self.db.session)
tests/coprs_test_case.py:352: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
coprs/logic/coprs_logic.py:927: in get_or_create
    item = session.query(models.DistGitBranch).filter_by(name=name).first()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/query.py:2727: in first
    return self.limit(1)._iter().first()  # type: ignore
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/query.py:2826: in _iter
    result: Union[ScalarResult[_T], Result[_T]] = self.session.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:2306: in execute
    return self._execute_internal(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:2170: in _execute_internal
    ) = compile_state_cls.orm_pre_session_exec(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/context.py:549: in orm_pre_session_exec
    session._autoflush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:3005: in _autoflush
    raise e.with_traceback(sys.exc_info()[2])
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:2994: in _autoflush
    self.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1233: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1960: in _exec_single_context
    self.dialect.do_execute(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8cfc8940>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8f51a480>
    def do_execute(self, cursor, statement, parameters, context=None):
>       cursor.execute(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (raised as a result of Query-invoked autoflush; consider using a session.no_autoflush block if this flush is occurring prematurely)
E       (sqlite3.IntegrityError) UNIQUE constraint failed: user.username
E       [SQL: INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)]
E       [parameters: ('user1', 0, 1, None)]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:924: IntegrityError
_______ ERROR at teardown of TestModuleBuildFacade.test_platform_chroots _______
self = <test_modules_logic.TestModuleBuildFacade object at 0x7fff90b8da00>
method = <bound method TestModuleBuildFacade.test_platform_chroots of <test_modules_logic.TestModuleBuildFacade object at 0x7fff90b8da00>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
_________ ERROR at setup of TestModuleBuildFacade.test_distgit_option __________
self = <sqlalchemy.engine.base.Connection object at 0x7fff8f571730>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8f5717f0>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff903111c0>
parameters = [('user1', 0, 1, None)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
                    self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
                    )
            elif not effective_parameters and context.no_parameters:
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_execute_no_params:
                        if fn(cursor, str_statement, context):
                            evt_handled = True
                            break
                if not evt_handled:
                    self.dialect.do_execute_no_params(
                        cursor, str_statement, context
                    )
            else:
                effective_parameters = cast(
                    "_CoreSingleExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_execute:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_execute(
                        cursor, str_statement, effective_parameters, context
                    )
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1960: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8d7d79c0>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8f5717f0>
    def do_execute(self, cursor, statement, parameters, context=None):
>       cursor.execute(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: user.username
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:924: IntegrityError
The above exception was the direct cause of the following exception:
self = <test_modules_logic.TestModuleBuildFacade object at 0x7fff90b8cfb0>
    @pytest.fixture
    def f_mock_chroots_many(self):
        """
        Adds more chroots to self.c1
        Requires: f_mock_chroots
        """
        self.mc_list = []
        for arch in ["x86_64", "i386"]:
            for os_version in range(19, 24):
                mc = models.MockChroot(
                    os_release="fedora", os_version=os_version,
                    arch=arch, is_active=True)
                # Let's try slashes now. for example.  Some copr instances use
                # this pattern.
>               mc.distgit_branch = BranchesLogic.get_or_create(
                        'fedora/{0}'.format(os_version),
                        session=self.db.session)
tests/coprs_test_case.py:352: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
coprs/logic/coprs_logic.py:927: in get_or_create
    item = session.query(models.DistGitBranch).filter_by(name=name).first()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/query.py:2727: in first
    return self.limit(1)._iter().first()  # type: ignore
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/query.py:2826: in _iter
    result: Union[ScalarResult[_T], Result[_T]] = self.session.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:2306: in execute
    return self._execute_internal(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:2170: in _execute_internal
    ) = compile_state_cls.orm_pre_session_exec(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/context.py:549: in orm_pre_session_exec
    session._autoflush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:3005: in _autoflush
    raise e.with_traceback(sys.exc_info()[2])
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:2994: in _autoflush
    self.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1233: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1960: in _exec_single_context
    self.dialect.do_execute(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8d7d79c0>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8f5717f0>
    def do_execute(self, cursor, statement, parameters, context=None):
>       cursor.execute(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (raised as a result of Query-invoked autoflush; consider using a session.no_autoflush block if this flush is occurring prematurely)
E       (sqlite3.IntegrityError) UNIQUE constraint failed: user.username
E       [SQL: INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)]
E       [parameters: ('user1', 0, 1, None)]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:924: IntegrityError
________ ERROR at teardown of TestModuleBuildFacade.test_distgit_option ________
self = <test_modules_logic.TestModuleBuildFacade object at 0x7fff90b8cfb0>
method = <bound method TestModuleBuildFacade.test_distgit_option of <test_modules_logic.TestModuleBuildFacade object at 0x7fff90b8cfb0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
_______ ERROR at teardown of TestModulemdGenerator.test_basic_mmd_attrs ________
self = <test_modules_logic.TestModulemdGenerator object at 0x7fff90b8d4c0>
method = <bound method TestModulemdGenerator.test_basic_mmd_attrs of <test_modules_logic.TestModulemdGenerator object at 0x7fff90b8d4c0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
_____________ ERROR at teardown of TestModulemdGenerator.test_api ______________
self = <test_modules_logic.TestModulemdGenerator object at 0x7fff90b8ebd0>
method = <bound method TestModulemdGenerator.test_api of <test_modules_logic.TestModulemdGenerator object at 0x7fff90b8ebd0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
____________ ERROR at teardown of TestModulemdGenerator.test_filter ____________
self = <test_modules_logic.TestModulemdGenerator object at 0x7fff90b8f0b0>
method = <bound method TestModulemdGenerator.test_filter of <test_modules_logic.TestModulemdGenerator object at 0x7fff90b8f0b0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
___________ ERROR at teardown of TestModulemdGenerator.test_profiles ___________
self = <test_modules_logic.TestModulemdGenerator object at 0x7fff90b8c1a0>
method = <bound method TestModulemdGenerator.test_profiles of <test_modules_logic.TestModulemdGenerator object at 0x7fff90b8c1a0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
___________ ERROR at setup of TestModulemdGenerator.test_components ____________
self = <sqlalchemy.engine.base.Connection object at 0x7fff8f1ce240>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8e56f740>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff90310da0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8d29ec40>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8e56f740>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
The above exception was the direct cause of the following exception:
self = <test_modules_logic.TestModulemdGenerator object at 0x7fff90b8c1d0>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8d29ec40>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8e56f740>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
E       [SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
E       [parameters: [('f18',), ('fedora-17',), ('master',)]]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
__________ ERROR at teardown of TestModulemdGenerator.test_components __________
self = <test_modules_logic.TestModulemdGenerator object at 0x7fff90b8c1d0>
method = <bound method TestModulemdGenerator.test_components of <test_modules_logic.TestModulemdGenerator object at 0x7fff90b8c1d0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
__ ERROR at setup of TestModulemdGenerator.test_components_different_chroots ___
self = <sqlalchemy.engine.base.Connection object at 0x7fff8e4ead80>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8e4eae10>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff90310da0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8d541340>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8e4eae10>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
The above exception was the direct cause of the following exception:
self = <test_modules_logic.TestModulemdGenerator object at 0x7fff90adfaa0>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8d541340>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8e4eae10>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
E       [SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
E       [parameters: [('f18',), ('fedora-17',), ('master',)]]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
_ ERROR at teardown of TestModulemdGenerator.test_components_different_chroots _
self = <test_modules_logic.TestModulemdGenerator object at 0x7fff90adfaa0>
method = <bound method TestModulemdGenerator.test_components_different_chroots of <test_modules_logic.TestModulemdGenerator object at 0x7fff90adfaa0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
___________ ERROR at teardown of TestModulemdGenerator.test_generate ___________
self = <test_modules_logic.TestModulemdGenerator object at 0x7fff90b74080>
method = <bound method TestModulemdGenerator.test_generate of <test_modules_logic.TestModulemdGenerator object at 0x7fff90b74080>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
____ ERROR at setup of TestOutdatedChrootsLogic.test_delete_status_outdated ____
self = <sqlalchemy.engine.base.Connection object at 0x7fff8e512960>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8e512870>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff90310da0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8d7f05c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8e512870>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
The above exception was the direct cause of the following exception:
self = <test_outdated_chroots_logic.TestOutdatedChrootsLogic object at 0x7fff90b76810>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8d7f05c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8e512870>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
E       [SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
E       [parameters: [('f18',), ('fedora-17',), ('master',)]]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
__ ERROR at teardown of TestOutdatedChrootsLogic.test_delete_status_outdated ___
self = <test_outdated_chroots_logic.TestOutdatedChrootsLogic object at 0x7fff90b76810>
method = <bound method TestOutdatedChrootsLogic.test_delete_status_outdated of <test_outdated_chroots_logic.TestOutdatedChrootsLogic object at 0x7fff90b76810>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
___ ERROR at setup of TestOutdatedChrootsLogic.test_delete_status_unclicked ____
self = <sqlalchemy.engine.base.Connection object at 0x7fff8e4dc8f0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8e4dd100>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff90310da0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8cfec140>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8e4dd100>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
The above exception was the direct cause of the following exception:
self = <test_outdated_chroots_logic.TestOutdatedChrootsLogic object at 0x7fff90b76b70>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8cfec140>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8e4dd100>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
E       [SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
E       [parameters: [('f18',), ('fedora-17',), ('master',)]]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
__ ERROR at teardown of TestOutdatedChrootsLogic.test_delete_status_unclicked __
self = <test_outdated_chroots_logic.TestOutdatedChrootsLogic object at 0x7fff90b76b70>
method = <bound method TestOutdatedChrootsLogic.test_delete_status_unclicked of <test_outdated_chroots_logic.TestOutdatedChrootsLogic object at 0x7fff90b76b70>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
___ ERROR at setup of TestOutdatedChrootsLogic.test_outdated_chroots_simple ____
self = <sqlalchemy.engine.base.Connection object at 0x7fff8e50c2c0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8e50c320>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff90310da0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8d177440>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8e50c320>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
The above exception was the direct cause of the following exception:
self = <test_outdated_chroots_logic.TestOutdatedChrootsLogic object at 0x7fff90b75ee0>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8d177440>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8e50c320>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
E       [SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
E       [parameters: [('f18',), ('fedora-17',), ('master',)]]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
__ ERROR at teardown of TestOutdatedChrootsLogic.test_outdated_chroots_simple __
self = <test_outdated_chroots_logic.TestOutdatedChrootsLogic object at 0x7fff90b75ee0>
method = <bound method TestOutdatedChrootsLogic.test_outdated_chroots_simple of <test_outdated_chroots_logic.TestOutdatedChrootsLogic object at 0x7fff90b75ee0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
____ ERROR at setup of TestOutdatedChrootsLogic.test_outdated_chroots_group ____
self = <sqlalchemy.engine.base.Connection object at 0x7fff8e4eb650>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8e4eb440>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff90310da0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8d24d640>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8e4eb440>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
The above exception was the direct cause of the following exception:
self = <test_outdated_chroots_logic.TestOutdatedChrootsLogic object at 0x7fff90b76300>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8d24d640>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8e4eb440>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
E       [SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
E       [parameters: [('f18',), ('fedora-17',), ('master',)]]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
__ ERROR at teardown of TestOutdatedChrootsLogic.test_outdated_chroots_group ___
self = <test_outdated_chroots_logic.TestOutdatedChrootsLogic object at 0x7fff90b76300>
method = <bound method TestOutdatedChrootsLogic.test_outdated_chroots_group of <test_outdated_chroots_logic.TestOutdatedChrootsLogic object at 0x7fff90b76300>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
_ ERROR at setup of TestOutdatedChrootsLogic.test_outdated_chroots_flash_not_immediately _
self = <sqlalchemy.engine.base.Connection object at 0x7fff8f568d70>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8f56bb90>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff90310da0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8d8682c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8f56bb90>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
The above exception was the direct cause of the following exception:
self = <test_outdated_chroots_logic.TestOutdatedChrootsLogic object at 0x7fff90b765d0>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8d8682c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8f56bb90>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
E       [SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
E       [parameters: [('f18',), ('fedora-17',), ('master',)]]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
_ ERROR at teardown of TestOutdatedChrootsLogic.test_outdated_chroots_flash_not_immediately _
self = <test_outdated_chroots_logic.TestOutdatedChrootsLogic object at 0x7fff90b765d0>
method = <bound method TestOutdatedChrootsLogic.test_outdated_chroots_flash_not_immediately of <test_outdated_chroots_logic.TestOutdatedChrootsLogic object at 0x7fff90b765d0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
_ ERROR at setup of TestOutdatedChrootsLogic.test_outdated_chroots_flash_not_expired _
self = <sqlalchemy.engine.base.Connection object at 0x7fff8f570e60>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8f571670>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff90310da0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8d541540>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8f571670>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
The above exception was the direct cause of the following exception:
self = <test_outdated_chroots_logic.TestOutdatedChrootsLogic object at 0x7fff90b767b0>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8d541540>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8f571670>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
E       [SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
E       [parameters: [('f18',), ('fedora-17',), ('master',)]]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
_ ERROR at teardown of TestOutdatedChrootsLogic.test_outdated_chroots_flash_not_expired _
self = <test_outdated_chroots_logic.TestOutdatedChrootsLogic object at 0x7fff90b767b0>
method = <bound method TestOutdatedChrootsLogic.test_outdated_chroots_flash_not_expired of <test_outdated_chroots_logic.TestOutdatedChrootsLogic object at 0x7fff90b767b0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
_ ERROR at setup of TestOutdatedChrootsLogic.test_outdated_chroots_review_only_after_some_time _
self = <sqlalchemy.engine.base.Connection object at 0x7fff8e50e810>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8e50f560>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff90310da0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8e28a240>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8e50f560>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
The above exception was the direct cause of the following exception:
self = <test_outdated_chroots_logic.TestOutdatedChrootsLogic object at 0x7fff90b75af0>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8e28a240>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8e50f560>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
E       [SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
E       [parameters: [('f18',), ('fedora-17',), ('master',)]]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
_ ERROR at teardown of TestOutdatedChrootsLogic.test_outdated_chroots_review_only_after_some_time _
self = <test_outdated_chroots_logic.TestOutdatedChrootsLogic object at 0x7fff90b75af0>
method = <bound method TestOutdatedChrootsLogic.test_outdated_chroots_review_only_after_some_time of <test_outdated_chroots_logic.TestOutdatedChrootsLogic object at 0x7fff90b75af0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
_ ERROR at setup of TestOutdatedChrootsLogic.test_outdated_chroots_extend_or_expire _
self = <sqlalchemy.engine.base.Connection object at 0x7fff8e530e60>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8e530ec0>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff90310da0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8d29ff40>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8e530ec0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
The above exception was the direct cause of the following exception:
self = <test_outdated_chroots_logic.TestOutdatedChrootsLogic object at 0x7fff90b756a0>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8d29ff40>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8e530ec0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
E       [SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
E       [parameters: [('f18',), ('fedora-17',), ('master',)]]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
_ ERROR at teardown of TestOutdatedChrootsLogic.test_outdated_chroots_extend_or_expire _
self = <test_outdated_chroots_logic.TestOutdatedChrootsLogic object at 0x7fff90b756a0>
method = <bound method TestOutdatedChrootsLogic.test_outdated_chroots_extend_or_expire of <test_outdated_chroots_logic.TestOutdatedChrootsLogic object at 0x7fff90b756a0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
__ ERROR at setup of TestOutdatedChrootsLogic.test_outdated_chroots_humanized __
self = <sqlalchemy.engine.base.Connection object at 0x7fff8e52a180>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8e52a7e0>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff90310da0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8d175bc0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8e52a7e0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
The above exception was the direct cause of the following exception:
self = <test_outdated_chroots_logic.TestOutdatedChrootsLogic object at 0x7fff90b757c0>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8d175bc0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8e52a7e0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
E       [SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
E       [parameters: [('f18',), ('fedora-17',), ('master',)]]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
_ ERROR at teardown of TestOutdatedChrootsLogic.test_outdated_chroots_humanized _
self = <test_outdated_chroots_logic.TestOutdatedChrootsLogic object at 0x7fff90b757c0>
method = <bound method TestOutdatedChrootsLogic.test_outdated_chroots_humanized of <test_outdated_chroots_logic.TestOutdatedChrootsLogic object at 0x7fff90b757c0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
___ ERROR at setup of TestOutdatedChrootsLogic.test_outdated_chroots_expired ___
self = <sqlalchemy.engine.base.Connection object at 0x7fff8e52b680>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8e52b6e0>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff90310da0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8d3502c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8e52b6e0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
The above exception was the direct cause of the following exception:
self = <test_outdated_chroots_logic.TestOutdatedChrootsLogic object at 0x7fff90b752b0>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8d3502c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8e52b6e0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
E       [SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
E       [parameters: [('f18',), ('fedora-17',), ('master',)]]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
_ ERROR at teardown of TestOutdatedChrootsLogic.test_outdated_chroots_expired __
self = <test_outdated_chroots_logic.TestOutdatedChrootsLogic object at 0x7fff90b752b0>
method = <bound method TestOutdatedChrootsLogic.test_outdated_chroots_expired of <test_outdated_chroots_logic.TestOutdatedChrootsLogic object at 0x7fff90b752b0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
___ ERROR at setup of TestOutdatedChrootsLogic.test_expired_chroot_detection ___
self = <sqlalchemy.engine.base.Connection object at 0x7fff8e59e780>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8e59e810>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff90310da0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8cfedd40>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8e59e810>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
The above exception was the direct cause of the following exception:
self = <test_outdated_chroots_logic.TestOutdatedChrootsLogic object at 0x7fff90b74920>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8cfedd40>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8e59e810>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
E       [SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
E       [parameters: [('f18',), ('fedora-17',), ('master',)]]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
_ ERROR at teardown of TestOutdatedChrootsLogic.test_expired_chroot_detection __
self = <test_outdated_chroots_logic.TestOutdatedChrootsLogic object at 0x7fff90b74920>
method = <bound method TestOutdatedChrootsLogic.test_expired_chroot_detection of <test_outdated_chroots_logic.TestOutdatedChrootsLogic object at 0x7fff90b74920>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
__ ERROR at setup of TestOutdatedChrootsLogic.test_delete_outdated_unclicked ___
self = <sqlalchemy.engine.base.Connection object at 0x7fff8dbe1430>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8dbe1460>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff90310da0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8d494b40>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8dbe1460>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
The above exception was the direct cause of the following exception:
self = <test_outdated_chroots_logic.TestOutdatedChrootsLogic object at 0x7fff90b74ce0>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8d494b40>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8dbe1460>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
E       [SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
E       [parameters: [('f18',), ('fedora-17',), ('master',)]]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
_ ERROR at teardown of TestOutdatedChrootsLogic.test_delete_outdated_unclicked _
self = <test_outdated_chroots_logic.TestOutdatedChrootsLogic object at 0x7fff90b74ce0>
method = <bound method TestOutdatedChrootsLogic.test_delete_outdated_unclicked of <test_outdated_chroots_logic.TestOutdatedChrootsLogic object at 0x7fff90b74ce0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
__ ERROR at setup of TestOutdatedChrootsLogic.test_outdated_unclicked_repeat ___
self = <sqlalchemy.engine.base.Connection object at 0x7fff8dbc4d70>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8dbc4dd0>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff90310da0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8d304240>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8dbc4dd0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
The above exception was the direct cause of the following exception:
self = <test_outdated_chroots_logic.TestOutdatedChrootsLogic object at 0x7fff90b77980>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8d304240>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8dbc4dd0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
E       [SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
E       [parameters: [('f18',), ('fedora-17',), ('master',)]]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
_ ERROR at teardown of TestOutdatedChrootsLogic.test_outdated_unclicked_repeat _
self = <test_outdated_chroots_logic.TestOutdatedChrootsLogic object at 0x7fff90b77980>
method = <bound method TestOutdatedChrootsLogic.test_outdated_unclicked_repeat of <test_outdated_chroots_logic.TestOutdatedChrootsLogic object at 0x7fff90b77980>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
____ ERROR at setup of TestPackagesLogic.test_last_successful_build_chroots ____
self = <sqlalchemy.engine.base.Connection object at 0x7fff8dbc7b00>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8dbc7bf0>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff90310da0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8d610440>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8dbc7bf0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
The above exception was the direct cause of the following exception:
self = <test_packages_logic.TestPackagesLogic object at 0x7fff90b76510>
f_coprs = None, f_mock_chroots = None, f_builds = None
    @pytest.fixture
    def f_fork_prepare(self, f_coprs, f_mock_chroots, f_builds):
    
        self.p4 = models.Package(
            copr=self.c2, name="hello-world", source_type=0)
        self.b5 = models.Build(
            copr=self.c2, copr_dir=self.c2_dir, package=self.p4,
            user=self.u1, submitted_on=50, srpm_url="http://somesrpm",
            source_status=StatusEnum("succeeded"), result_dir='00000005-hello-world')
        self.b6 = models.Build(
            copr=self.c2, copr_dir=self.c2_dir, package=self.p4,
            user=self.u1, submitted_on=10, srpm_url="http://somesrpm",
            source_status=StatusEnum("failed"), result_dir='00000006-hello-world',
            source_json='{}')
        self.b7 = models.Build(
            copr=self.c2, copr_dir=self.c2_dir, package=self.p2,
            user=self.u1, submitted_on=10, srpm_url="http://somesrpm",
            source_status=StatusEnum("succeeded"), result_dir='00000007-whatsupthere-world')
        self.b8 = models.Build(
            copr=self.c2, copr_dir=self.c2_dir, package=self.p2,
            user=self.u1, submitted_on=100, srpm_url="http://somesrpm",
            source_status=StatusEnum("succeeded"), result_dir='00000008-whatsupthere-world')
    
        self.basic_builds = [self.b5, self.b6, self.b7, self.b8]
        self.b5_bc = []
        self.b6_bc = []
        self.b7_bc = []
        self.b8_bc = []
>       self.db.session.flush()
tests/coprs_test_case.py:461: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:937: in flush
    return self._proxied.flush(objects=objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8d610440>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8dbc7bf0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
E       [SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
E       [parameters: [('f18',), ('fedora-17',), ('master',)]]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
__ ERROR at teardown of TestPackagesLogic.test_last_successful_build_chroots ___
self = <test_packages_logic.TestPackagesLogic object at 0x7fff90b76510>
method = <bound method TestPackagesLogic.test_last_successful_build_chroots of <test_packages_logic.TestPackagesLogic object at 0x7fff90b76510>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
_ ERROR at teardown of TestPackagesLogic.test_ref_matches_copr_pkgname[copr-cli-1-1alpha-copr-cli-True] _
self = <test_packages_logic.TestPackagesLogic object at 0x7fff90b8f590>
method = <function TestPackagesLogic.test_ref_matches_copr_pkgname at 0x7fff9097d260>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
_ ERROR at teardown of TestPackagesLogic.test_ref_matches_copr_pkgname[copr-cli-1-copr-cli-True] _
self = <test_packages_logic.TestPackagesLogic object at 0x7fff90b8f590>
method = <function TestPackagesLogic.test_ref_matches_copr_pkgname at 0x7fff9097d260>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
_ ERROR at teardown of TestPackagesLogic.test_ref_matches_copr_pkgname[copr-cli-1-copr-False] _
self = <test_packages_logic.TestPackagesLogic object at 0x7fff90b8f590>
method = <function TestPackagesLogic.test_ref_matches_copr_pkgname at 0x7fff9097d260>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
_ ERROR at teardown of TestPackagesLogic.test_ref_matches_copr_pkgname[copr_cli-1.1-1-copr_cli-True] _
self = <test_packages_logic.TestPackagesLogic object at 0x7fff90b8f590>
method = <function TestPackagesLogic.test_ref_matches_copr_pkgname at 0x7fff9097d260>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
_ ERROR at teardown of TestPackagesLogic.test_ref_matches_copr_pkgname[copr_cli-1.1-copr_cli-True] _
self = <test_packages_logic.TestPackagesLogic object at 0x7fff90b8f590>
method = <function TestPackagesLogic.test_ref_matches_copr_pkgname at 0x7fff9097d260>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
_ ERROR at teardown of TestPackagesLogic.test_ref_matches_copr_pkgname[copr-frontend-a1-copr-False] _
self = <test_packages_logic.TestPackagesLogic object at 0x7fff90b8f590>
method = <function TestPackagesLogic.test_ref_matches_copr_pkgname at 0x7fff9097d260>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
_ ERROR at teardown of TestPackagesLogic.test_ref_matches_copr_pkgname[copr-frontend-a1-copr-frontend-True] _
self = <test_packages_logic.TestPackagesLogic object at 0x7fff90b8f590>
method = <function TestPackagesLogic.test_ref_matches_copr_pkgname at 0x7fff9097d260>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
_ ERROR at teardown of TestPackagesLogic.test_ref_matches_copr_pkgname[copr_frontend_a1-copr-frontend-True] _
self = <test_packages_logic.TestPackagesLogic object at 0x7fff90b8f590>
method = <function TestPackagesLogic.test_ref_matches_copr_pkgname at 0x7fff9097d260>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
_ ERROR at teardown of TestPackagesLogic.test_ref_matches_copr_pkgname[copr-frontend-a1-copr_frontend-True] _
self = <test_packages_logic.TestPackagesLogic object at 0x7fff90b8f590>
method = <function TestPackagesLogic.test_ref_matches_copr_pkgname at 0x7fff9097d260>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
_ ERROR at teardown of TestPackagesLogic.test_ref_matches_copr_pkgname[copr_frontend_a1-copr_frontend-True] _
self = <test_packages_logic.TestPackagesLogic object at 0x7fff90b8f590>
method = <function TestPackagesLogic.test_ref_matches_copr_pkgname at 0x7fff9097d260>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
_ ERROR at teardown of TestPackagesLogic.test_ref_matches_copr_pkgname[copr_frontend-a1-copr-frontend-False] _
self = <test_packages_logic.TestPackagesLogic object at 0x7fff90b8f590>
method = <function TestPackagesLogic.test_ref_matches_copr_pkgname at 0x7fff9097d260>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
_ ERROR at teardown of TestPackagesLogic.test_ref_matches_copr_pkgname[copr-1.1alpha-1-copr-True] _
self = <test_packages_logic.TestPackagesLogic object at 0x7fff90b8f590>
method = <function TestPackagesLogic.test_ref_matches_copr_pkgname at 0x7fff9097d260>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
_ ERROR at teardown of TestPackagesLogic.test_ref_matches_copr_pkgname[copr-1.1alpha-1beta-copr-True] _
self = <test_packages_logic.TestPackagesLogic object at 0x7fff90b8f590>
method = <function TestPackagesLogic.test_ref_matches_copr_pkgname at 0x7fff9097d260>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
_ ERROR at teardown of TestPackagesLogic.test_ref_matches_copr_pkgname[copr-1.1-1-copr-True] _
self = <test_packages_logic.TestPackagesLogic object at 0x7fff90b8f590>
method = <function TestPackagesLogic.test_ref_matches_copr_pkgname at 0x7fff9097d260>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
_ ERROR at teardown of TestPackagesLogic.test_ref_matches_copr_pkgname[copr-1-copr-True] _
self = <test_packages_logic.TestPackagesLogic object at 0x7fff90b8f590>
method = <function TestPackagesLogic.test_ref_matches_copr_pkgname at 0x7fff9097d260>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
____________ ERROR at teardown of TestStatLogic.test_counter_basic _____________
self = <test_stat_logic.TestStatLogic object at 0x7fff90b6c3e0>
method = <bound method TestStatLogic.test_counter_basic of <test_stat_logic.TestStatLogic object at 0x7fff90b6c3e0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
_____________ ERROR at teardown of TestStatLogic.test_new_by_incr ______________
self = <test_stat_logic.TestStatLogic object at 0x7fff90b6c4d0>
method = <bound method TestStatLogic.test_new_by_incr of <test_stat_logic.TestStatLogic object at 0x7fff90b6c4d0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
__________ ERROR at setup of TestUserDataDumper.test_user_information __________
self = <sqlalchemy.engine.base.Connection object at 0x7fff8dc965d0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8dc96030>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff903111c0>
parameters = [('user1', 0, 1, '{"fas_groups": ["fas_1", "fas_2"]}')]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
                    self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
                    )
            elif not effective_parameters and context.no_parameters:
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_execute_no_params:
                        if fn(cursor, str_statement, context):
                            evt_handled = True
                            break
                if not evt_handled:
                    self.dialect.do_execute_no_params(
                        cursor, str_statement, context
                    )
            else:
                effective_parameters = cast(
                    "_CoreSingleExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_execute:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_execute(
                        cursor, str_statement, effective_parameters, context
                    )
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1960: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8d174d40>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, '{"fas_groups": ["fas_1", "fas_2"]}')
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8dc96030>
    def do_execute(self, cursor, statement, parameters, context=None):
>       cursor.execute(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: user.username
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:924: IntegrityError
The above exception was the direct cause of the following exception:
self = <test_users_logic.TestUserDataDumper object at 0x7fff90b6c110>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1233: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1960: in _exec_single_context
    self.dialect.do_execute(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8d174d40>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, '{"fas_groups": ["fas_1", "fas_2"]}')
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8dc96030>
    def do_execute(self, cursor, statement, parameters, context=None):
>       cursor.execute(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: user.username
E       [SQL: INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)]
E       [parameters: ('user1', 0, 1, '{"fas_groups": ["fas_1", "fas_2"]}')]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:924: IntegrityError
________ ERROR at teardown of TestUserDataDumper.test_user_information _________
self = <test_users_logic.TestUserDataDumper object at 0x7fff90b6c110>
method = <bound method TestUserDataDumper.test_user_information of <test_users_logic.TestUserDataDumper object at 0x7fff90b6c110>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
______________ ERROR at setup of TestUserDataDumper.test_projects ______________
self = <sqlalchemy.engine.base.Connection object at 0x7fff8dbe1a30>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8f571c40>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff903111c0>
parameters = [('user1', 0, 1, None)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
                    self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
                    )
            elif not effective_parameters and context.no_parameters:
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_execute_no_params:
                        if fn(cursor, str_statement, context):
                            evt_handled = True
                            break
                if not evt_handled:
                    self.dialect.do_execute_no_params(
                        cursor, str_statement, context
                    )
            else:
                effective_parameters = cast(
                    "_CoreSingleExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_execute:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_execute(
                        cursor, str_statement, effective_parameters, context
                    )
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1960: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8d4539c0>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8f571c40>
    def do_execute(self, cursor, statement, parameters, context=None):
>       cursor.execute(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: user.username
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:924: IntegrityError
The above exception was the direct cause of the following exception:
self = <test_users_logic.TestUserDataDumper object at 0x7fff90b6f050>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1233: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1960: in _exec_single_context
    self.dialect.do_execute(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8d4539c0>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8f571c40>
    def do_execute(self, cursor, statement, parameters, context=None):
>       cursor.execute(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: user.username
E       [SQL: INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)]
E       [parameters: ('user1', 0, 1, None)]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:924: IntegrityError
____________ ERROR at teardown of TestUserDataDumper.test_projects _____________
self = <test_users_logic.TestUserDataDumper object at 0x7fff90b6f050>
method = <bound method TestUserDataDumper.test_projects of <test_users_logic.TestUserDataDumper object at 0x7fff90b6f050>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
_______________ ERROR at setup of TestUserDataDumper.test_builds _______________
self = <sqlalchemy.engine.base.Connection object at 0x7fff8dc38080>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8dc38e30>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff903111c0>
parameters = [('user1', 0, 1, None)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
                    self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
                    )
            elif not effective_parameters and context.no_parameters:
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_execute_no_params:
                        if fn(cursor, str_statement, context):
                            evt_handled = True
                            break
                if not evt_handled:
                    self.dialect.do_execute_no_params(
                        cursor, str_statement, context
                    )
            else:
                effective_parameters = cast(
                    "_CoreSingleExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_execute:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_execute(
                        cursor, str_statement, effective_parameters, context
                    )
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1960: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8d8695c0>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8dc38e30>
    def do_execute(self, cursor, statement, parameters, context=None):
>       cursor.execute(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: user.username
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:924: IntegrityError
The above exception was the direct cause of the following exception:
self = <test_users_logic.TestUserDataDumper object at 0x7fff90b6f3e0>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1233: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1960: in _exec_single_context
    self.dialect.do_execute(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8d8695c0>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8dc38e30>
    def do_execute(self, cursor, statement, parameters, context=None):
>       cursor.execute(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: user.username
E       [SQL: INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)]
E       [parameters: ('user1', 0, 1, None)]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:924: IntegrityError
_____________ ERROR at teardown of TestUserDataDumper.test_builds ______________
self = <test_users_logic.TestUserDataDumper object at 0x7fff90b6f3e0>
method = <bound method TestUserDataDumper.test_builds of <test_users_logic.TestUserDataDumper object at 0x7fff90b6f3e0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
________________ ERROR at setup of TestUserDataDumper.test_data ________________
self = <sqlalchemy.engine.base.Connection object at 0x7fff8dc3bc50>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8dc3b2f0>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff903111c0>
parameters = [('user1', 0, 1, '{"fas_groups": ["fas_1", "fas_2"]}')]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
                    self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
                    )
            elif not effective_parameters and context.no_parameters:
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_execute_no_params:
                        if fn(cursor, str_statement, context):
                            evt_handled = True
                            break
                if not evt_handled:
                    self.dialect.do_execute_no_params(
                        cursor, str_statement, context
                    )
            else:
                effective_parameters = cast(
                    "_CoreSingleExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_execute:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_execute(
                        cursor, str_statement, effective_parameters, context
                    )
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1960: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8d4518c0>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, '{"fas_groups": ["fas_1", "fas_2"]}')
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8dc3b2f0>
    def do_execute(self, cursor, statement, parameters, context=None):
>       cursor.execute(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: user.username
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:924: IntegrityError
The above exception was the direct cause of the following exception:
self = <test_users_logic.TestUserDataDumper object at 0x7fff90b6f680>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1233: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1960: in _exec_single_context
    self.dialect.do_execute(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8d4518c0>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, '{"fas_groups": ["fas_1", "fas_2"]}')
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8dc3b2f0>
    def do_execute(self, cursor, statement, parameters, context=None):
>       cursor.execute(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: user.username
E       [SQL: INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)]
E       [parameters: ('user1', 0, 1, '{"fas_groups": ["fas_1", "fas_2"]}')]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:924: IntegrityError
______________ ERROR at teardown of TestUserDataDumper.test_data _______________
self = <test_users_logic.TestUserDataDumper object at 0x7fff90b6f680>
method = <bound method TestUserDataDumper.test_data of <test_users_logic.TestUserDataDumper object at 0x7fff90b6f680>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
_______________ ERROR at setup of TestUserDataDumper.test_dumps ________________
self = <sqlalchemy.engine.base.Connection object at 0x7fff8dc22540>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8dc21fa0>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff903111c0>
parameters = [('user1', 0, 1, '{"fas_groups": ["fas_1", "fas_2"]}')]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
                    self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
                    )
            elif not effective_parameters and context.no_parameters:
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_execute_no_params:
                        if fn(cursor, str_statement, context):
                            evt_handled = True
                            break
                if not evt_handled:
                    self.dialect.do_execute_no_params(
                        cursor, str_statement, context
                    )
            else:
                effective_parameters = cast(
                    "_CoreSingleExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_execute:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_execute(
                        cursor, str_statement, effective_parameters, context
                    )
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1960: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8d5c9c40>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, '{"fas_groups": ["fas_1", "fas_2"]}')
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8dc21fa0>
    def do_execute(self, cursor, statement, parameters, context=None):
>       cursor.execute(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: user.username
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:924: IntegrityError
The above exception was the direct cause of the following exception:
self = <test_users_logic.TestUserDataDumper object at 0x7fff90b6f890>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1233: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1960: in _exec_single_context
    self.dialect.do_execute(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8d5c9c40>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, '{"fas_groups": ["fas_1", "fas_2"]}')
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8dc21fa0>
    def do_execute(self, cursor, statement, parameters, context=None):
>       cursor.execute(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: user.username
E       [SQL: INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)]
E       [parameters: ('user1', 0, 1, '{"fas_groups": ["fas_1", "fas_2"]}')]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:924: IntegrityError
______________ ERROR at teardown of TestUserDataDumper.test_dumps ______________
self = <test_users_logic.TestUserDataDumper object at 0x7fff90b6f890>
method = <bound method TestUserDataDumper.test_dumps of <test_users_logic.TestUserDataDumper object at 0x7fff90b6f890>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
____________ ERROR at setup of TestUserDelete.test_delete_user_data ____________
self = <sqlalchemy.engine.base.Connection object at 0x7fff8e108260>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8e10b5f0>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff903111c0>
parameters = [('user1', 0, 1, '{"fas_groups": ["fas_1", "fas_2"]}')]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
                    self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
                    )
            elif not effective_parameters and context.no_parameters:
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_execute_no_params:
                        if fn(cursor, str_statement, context):
                            evt_handled = True
                            break
                if not evt_handled:
                    self.dialect.do_execute_no_params(
                        cursor, str_statement, context
                    )
            else:
                effective_parameters = cast(
                    "_CoreSingleExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_execute:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_execute(
                        cursor, str_statement, effective_parameters, context
                    )
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1960: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8d4a14c0>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, '{"fas_groups": ["fas_1", "fas_2"]}')
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8e10b5f0>
    def do_execute(self, cursor, statement, parameters, context=None):
>       cursor.execute(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: user.username
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:924: IntegrityError
The above exception was the direct cause of the following exception:
self = <test_users_logic.TestUserDelete object at 0x7fff907082c0>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1233: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1960: in _exec_single_context
    self.dialect.do_execute(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8d4a14c0>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, '{"fas_groups": ["fas_1", "fas_2"]}')
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8e10b5f0>
    def do_execute(self, cursor, statement, parameters, context=None):
>       cursor.execute(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: user.username
E       [SQL: INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)]
E       [parameters: ('user1', 0, 1, '{"fas_groups": ["fas_1", "fas_2"]}')]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:924: IntegrityError
__________ ERROR at teardown of TestUserDelete.test_delete_user_data ___________
self = <test_users_logic.TestUserDelete object at 0x7fff907082c0>
method = <bound method TestUserDelete.test_delete_user_data of <test_users_logic.TestUserDelete object at 0x7fff907082c0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
____________ ERROR at setup of TestUserDelete.test_delete_data_view ____________
self = <sqlalchemy.engine.base.Connection object at 0x7fff8e10ad50>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8e10ba40>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff903111c0>
parameters = [('user1', 0, 1, '{"fas_groups": ["fas_1", "fas_2"]}')]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
                    self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
                    )
            elif not effective_parameters and context.no_parameters:
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_execute_no_params:
                        if fn(cursor, str_statement, context):
                            evt_handled = True
                            break
                if not evt_handled:
                    self.dialect.do_execute_no_params(
                        cursor, str_statement, context
                    )
            else:
                effective_parameters = cast(
                    "_CoreSingleExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_execute:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_execute(
                        cursor, str_statement, effective_parameters, context
                    )
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1960: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8d14d9c0>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, '{"fas_groups": ["fas_1", "fas_2"]}')
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8e10ba40>
    def do_execute(self, cursor, statement, parameters, context=None):
>       cursor.execute(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: user.username
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:924: IntegrityError
The above exception was the direct cause of the following exception:
self = <test_users_logic.TestUserDelete object at 0x7fff90708290>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1233: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1960: in _exec_single_context
    self.dialect.do_execute(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8d14d9c0>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, '{"fas_groups": ["fas_1", "fas_2"]}')
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8e10ba40>
    def do_execute(self, cursor, statement, parameters, context=None):
>       cursor.execute(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: user.username
E       [SQL: INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)]
E       [parameters: ('user1', 0, 1, '{"fas_groups": ["fas_1", "fas_2"]}')]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:924: IntegrityError
__________ ERROR at teardown of TestUserDelete.test_delete_data_view ___________
self = <test_users_logic.TestUserDelete object at 0x7fff90708290>
method = <bound method TestUserDelete.test_delete_data_view of <test_users_logic.TestUserDelete object at 0x7fff90708290>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
_______________ ERROR at teardown of TestMisc.test_fed_raw_name ________________
self = <test_misc.TestMisc object at 0x7fff907090a0>
method = <bound method TestMisc.test_fed_raw_name of <test_misc.TestMisc object at 0x7fff907090a0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
____________ ERROR at teardown of TestMisc.test_fed_raw_name_scheme ____________
self = <test_misc.TestMisc object at 0x7fff90709250>
method = <bound method TestMisc.test_fed_raw_name_scheme of <test_misc.TestMisc object at 0x7fff90709250>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
_______ ERROR at teardown of TestMisc.test_fed_raw_name_without_oid_url ________
self = <test_misc.TestMisc object at 0x7fff90709400>
method = <bound method TestMisc.test_fed_raw_name_without_oid_url of <test_misc.TestMisc object at 0x7fff90709400>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
__________ ERROR at setup of TestAdminLogin.test_nonadmin_cant_login ___________
self = <sqlalchemy.engine.base.Connection object at 0x7fff8e0d0e30>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8e0d0590>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff903111c0>
parameters = [('user1', 0, 1, None)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
                    self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
                    )
            elif not effective_parameters and context.no_parameters:
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_execute_no_params:
                        if fn(cursor, str_statement, context):
                            evt_handled = True
                            break
                if not evt_handled:
                    self.dialect.do_execute_no_params(
                        cursor, str_statement, context
                    )
            else:
                effective_parameters = cast(
                    "_CoreSingleExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_execute:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_execute(
                        cursor, str_statement, effective_parameters, context
                    )
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1960: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8d5cbdc0>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8e0d0590>
    def do_execute(self, cursor, statement, parameters, context=None):
>       cursor.execute(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: user.username
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:924: IntegrityError
The above exception was the direct cause of the following exception:
self = <test_admin_general.TestAdminLogin object at 0x7fff9070a1b0>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1233: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1960: in _exec_single_context
    self.dialect.do_execute(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8d5cbdc0>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8e0d0590>
    def do_execute(self, cursor, statement, parameters, context=None):
>       cursor.execute(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: user.username
E       [SQL: INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)]
E       [parameters: ('user1', 0, 1, None)]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:924: IntegrityError
_________ ERROR at teardown of TestAdminLogin.test_nonadmin_cant_login _________
self = <test_admin_general.TestAdminLogin object at 0x7fff9070a1b0>
method = <bound method TestAdminLogin.test_nonadmin_cant_login of <test_admin_general.TestAdminLogin object at 0x7fff9070a1b0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
____________ ERROR at setup of TestAdminLogin.test_admin_can_login _____________
self = <sqlalchemy.engine.base.Connection object at 0x7fff8e0d2390>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8e0d39b0>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff903111c0>
parameters = [('user1', 0, 1, None)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
                    self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
                    )
            elif not effective_parameters and context.no_parameters:
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_execute_no_params:
                        if fn(cursor, str_statement, context):
                            evt_handled = True
                            break
                if not evt_handled:
                    self.dialect.do_execute_no_params(
                        cursor, str_statement, context
                    )
            else:
                effective_parameters = cast(
                    "_CoreSingleExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_execute:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_execute(
                        cursor, str_statement, effective_parameters, context
                    )
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1960: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8d13adc0>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8e0d39b0>
    def do_execute(self, cursor, statement, parameters, context=None):
>       cursor.execute(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: user.username
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:924: IntegrityError
The above exception was the direct cause of the following exception:
self = <test_admin_general.TestAdminLogin object at 0x7fff9070a390>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1233: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1960: in _exec_single_context
    self.dialect.do_execute(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8d13adc0>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8e0d39b0>
    def do_execute(self, cursor, statement, parameters, context=None):
>       cursor.execute(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: user.username
E       [SQL: INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)]
E       [parameters: ('user1', 0, 1, None)]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:924: IntegrityError
___________ ERROR at teardown of TestAdminLogin.test_admin_can_login ___________
self = <test_admin_general.TestAdminLogin object at 0x7fff9070a390>
method = <bound method TestAdminLogin.test_admin_can_login of <test_admin_general.TestAdminLogin object at 0x7fff9070a390>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
__________ ERROR at setup of TestGetBuildTask.test_module_name_empty ___________
self = <sqlalchemy.engine.base.Connection object at 0x7fff9070a4b0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8e19f9e0>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff90310da0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8d5c8340>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8e19f9e0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
The above exception was the direct cause of the following exception:
self = <test_backend_general.TestGetBuildTask object at 0x7fff90adcec0>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8d5c8340>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8e19f9e0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
E       [SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
E       [parameters: [('f18',), ('fedora-17',), ('master',)]]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
_________ ERROR at teardown of TestGetBuildTask.test_module_name_empty _________
self = <test_backend_general.TestGetBuildTask object at 0x7fff90adcec0>
method = <bound method TestGetBuildTask.test_module_name_empty of <test_backend_general.TestGetBuildTask object at 0x7fff90adcec0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
__________ ERROR at setup of TestGetBuildTask.test_module_name_enable __________
self = <sqlalchemy.engine.base.Connection object at 0x7fff8e159550>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8e1595e0>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff90310da0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8d13b3c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8e1595e0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
The above exception was the direct cause of the following exception:
self = <test_backend_general.TestGetBuildTask object at 0x7fff90adf680>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8d13b3c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8e1595e0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
E       [SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
E       [parameters: [('f18',), ('fedora-17',), ('master',)]]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
________ ERROR at teardown of TestGetBuildTask.test_module_name_enable _________
self = <test_backend_general.TestGetBuildTask object at 0x7fff90adf680>
method = <bound method TestGetBuildTask.test_module_name_enable of <test_backend_general.TestGetBuildTask object at 0x7fff90adf680>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
_________ ERROR at setup of TestGetBuildTask.test_module_name_disable __________
self = <sqlalchemy.engine.base.Connection object at 0x7fff8e5280e0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8e52b320>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff90310da0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8d3f27c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8e52b320>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
The above exception was the direct cause of the following exception:
self = <test_backend_general.TestGetBuildTask object at 0x7fff90b6e300>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8d3f27c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8e52b320>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
E       [SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
E       [parameters: [('f18',), ('fedora-17',), ('master',)]]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
________ ERROR at teardown of TestGetBuildTask.test_module_name_disable ________
self = <test_backend_general.TestGetBuildTask object at 0x7fff90b6e300>
method = <bound method TestGetBuildTask.test_module_name_disable of <test_backend_general.TestGetBuildTask object at 0x7fff90b6e300>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
_______ ERROR at setup of TestGetBuildTask.test_module_name_many_modules _______
self = <sqlalchemy.engine.base.Connection object at 0x7fff8e0d11c0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8e0d1250>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff90310da0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8d611a40>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8e0d1250>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
The above exception was the direct cause of the following exception:
self = <test_backend_general.TestGetBuildTask object at 0x7fff90b6e540>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8d611a40>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8e0d1250>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
E       [SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
E       [parameters: [('f18',), ('fedora-17',), ('master',)]]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
_____ ERROR at teardown of TestGetBuildTask.test_module_name_many_modules ______
self = <test_backend_general.TestGetBuildTask object at 0x7fff90b6e540>
method = <bound method TestGetBuildTask.test_module_name_many_modules of <test_backend_general.TestGetBuildTask object at 0x7fff90b6e540>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
___ ERROR at setup of TestGetBuildTask.test_module_name_modules_with_spaces ____
self = <sqlalchemy.engine.base.Connection object at 0x7fff8dc3aa20>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8dc38ad0>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff90310da0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8d3045c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8dc38ad0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
The above exception was the direct cause of the following exception:
self = <test_backend_general.TestGetBuildTask object at 0x7fff90b6dd60>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8d3045c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8dc38ad0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
E       [SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
E       [parameters: [('f18',), ('fedora-17',), ('master',)]]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
__ ERROR at teardown of TestGetBuildTask.test_module_name_modules_with_spaces __
self = <test_backend_general.TestGetBuildTask object at 0x7fff90b6dd60>
method = <bound method TestGetBuildTask.test_module_name_modules_with_spaces of <test_backend_general.TestGetBuildTask object at 0x7fff90b6dd60>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
________ ERROR at teardown of TestWaitingBuilds.test_no_pending_builds _________
self = <test_backend_general.TestWaitingBuilds object at 0x7fff9070bb00>
method = <bound method TestWaitingBuilds.test_no_pending_builds of <test_backend_general.TestWaitingBuilds object at 0x7fff9070bb00>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
------------------------------ Captured log call -------------------------------
INFO     coprs:backend_general.py:346 Generating SRPM builds
_ ERROR at setup of TestWaitingBuilds.test_pending_build_only_lists_not_started_or_ended _
self = <sqlalchemy.engine.base.Connection object at 0x7fff8e161790>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8e161820>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff90310da0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8de6d440>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8e161820>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
The above exception was the direct cause of the following exception:
self = <test_backend_general.TestWaitingBuilds object at 0x7fff9070bbf0>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8de6d440>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8e161820>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
E       [SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
E       [parameters: [('f18',), ('fedora-17',), ('master',)]]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
_ ERROR at teardown of TestWaitingBuilds.test_pending_build_only_lists_not_started_or_ended _
self = <test_backend_general.TestWaitingBuilds object at 0x7fff9070bbf0>
method = <bound method TestWaitingBuilds.test_pending_build_only_lists_not_started_or_ended of <test_backend_general.TestWaitingBuilds object at 0x7fff9070bbf0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
__________ ERROR at setup of TestWaitingBuilds.test_pending_bg_build ___________
self = <sqlalchemy.engine.base.Connection object at 0x7fff8e13d850>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8e13d8e0>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff90310da0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8d3f06c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8e13d8e0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
The above exception was the direct cause of the following exception:
self = <test_backend_general.TestWaitingBuilds object at 0x7fff9070b6e0>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8d3f06c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8e13d8e0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
E       [SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
E       [parameters: [('f18',), ('fedora-17',), ('master',)]]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
_________ ERROR at teardown of TestWaitingBuilds.test_pending_bg_build _________
self = <test_backend_general.TestWaitingBuilds object at 0x7fff9070b6e0>
method = <bound method TestWaitingBuilds.test_pending_bg_build of <test_backend_general.TestWaitingBuilds object at 0x7fff9070b6e0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
_______ ERROR at setup of TestWaitingBuilds.test_pending_blocked_builds ________
self = <sqlalchemy.engine.base.Connection object at 0x7fff8e13ce30>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8e13c140>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff90310da0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8de813c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8e13c140>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
The above exception was the direct cause of the following exception:
self = <test_backend_general.TestWaitingBuilds object at 0x7fff9070b560>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8de813c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8e13c140>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
E       [SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
E       [parameters: [('f18',), ('fedora-17',), ('master',)]]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
______ ERROR at teardown of TestWaitingBuilds.test_pending_blocked_builds ______
self = <test_backend_general.TestWaitingBuilds object at 0x7fff9070b560>
method = <bound method TestWaitingBuilds.test_pending_blocked_builds of <test_backend_general.TestWaitingBuilds object at 0x7fff9070b560>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
_______ ERROR at setup of TestWaitingBuilds.test_build_jobs_performance ________
self = <sqlalchemy.engine.base.Connection object at 0x7fff8dad4110>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8dad41a0>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff90310da0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8d3f37c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8dad41a0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
The above exception was the direct cause of the following exception:
self = <test_backend_general.TestWaitingBuilds object at 0x7fff9070b290>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8d3f37c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8dad41a0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
E       [SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
E       [parameters: [('f18',), ('fedora-17',), ('master',)]]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
______ ERROR at teardown of TestWaitingBuilds.test_build_jobs_performance ______
self = <test_backend_general.TestWaitingBuilds object at 0x7fff9070b290>
method = <bound method TestWaitingBuilds.test_build_jobs_performance of <test_backend_general.TestWaitingBuilds object at 0x7fff9070b290>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
______ ERROR at setup of TestUpdateBuilds.test_updating_requires_password ______
self = <sqlalchemy.engine.base.Connection object at 0x7fff8dad71d0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8dad72f0>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff903111c0>
parameters = [('user1', 0, 1, None)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
                    self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
                    )
            elif not effective_parameters and context.no_parameters:
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_execute_no_params:
                        if fn(cursor, str_statement, context):
                            evt_handled = True
                            break
                if not evt_handled:
                    self.dialect.do_execute_no_params(
                        cursor, str_statement, context
                    )
            else:
                effective_parameters = cast(
                    "_CoreSingleExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_execute:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_execute(
                        cursor, str_statement, effective_parameters, context
                    )
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1960: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8d4a0740>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8dad72f0>
    def do_execute(self, cursor, statement, parameters, context=None):
>       cursor.execute(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: user.username
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:924: IntegrityError
The above exception was the direct cause of the following exception:
self = <test_backend_general.TestUpdateBuilds object at 0x7fff9070ab70>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1233: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1960: in _exec_single_context
    self.dialect.do_execute(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8d4a0740>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8dad72f0>
    def do_execute(self, cursor, statement, parameters, context=None):
>       cursor.execute(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: user.username
E       [SQL: INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)]
E       [parameters: ('user1', 0, 1, None)]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:924: IntegrityError
____ ERROR at teardown of TestUpdateBuilds.test_updating_requires_password _____
self = <test_backend_general.TestUpdateBuilds object at 0x7fff9070ab70>
method = <bound method TestUpdateBuilds.test_updating_requires_password of <test_backend_general.TestUpdateBuilds object at 0x7fff9070ab70>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
__________ ERROR at setup of TestUpdateBuilds.test_update_build_ended __________
self = <sqlalchemy.engine.base.Connection object at 0x7fff8db9e270>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8db9e300>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff90310da0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8d3f3b40>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8db9e300>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
The above exception was the direct cause of the following exception:
self = <test_backend_general.TestUpdateBuilds object at 0x7fff9070acc0>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8d3f3b40>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8db9e300>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
E       [SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
E       [parameters: [('f18',), ('fedora-17',), ('master',)]]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
________ ERROR at teardown of TestUpdateBuilds.test_update_build_ended _________
self = <test_backend_general.TestUpdateBuilds object at 0x7fff9070acc0>
method = <bound method TestUpdateBuilds.test_update_build_ended of <test_backend_general.TestUpdateBuilds object at 0x7fff9070acc0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
________ ERROR at setup of TestUpdateBuilds.test_update_state_from_dict ________
self = <sqlalchemy.engine.base.Connection object at 0x7fff8e161a00>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8e1619a0>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff90310da0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8d6928c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8e1619a0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
The above exception was the direct cause of the following exception:
self = <test_backend_general.TestUpdateBuilds object at 0x7fff9070a780>
f_coprs = None, f_mock_chroots = None, f_builds = None
    @pytest.fixture
    def f_fork_prepare(self, f_coprs, f_mock_chroots, f_builds):
    
        self.p4 = models.Package(
            copr=self.c2, name="hello-world", source_type=0)
        self.b5 = models.Build(
            copr=self.c2, copr_dir=self.c2_dir, package=self.p4,
            user=self.u1, submitted_on=50, srpm_url="http://somesrpm",
            source_status=StatusEnum("succeeded"), result_dir='00000005-hello-world')
        self.b6 = models.Build(
            copr=self.c2, copr_dir=self.c2_dir, package=self.p4,
            user=self.u1, submitted_on=10, srpm_url="http://somesrpm",
            source_status=StatusEnum("failed"), result_dir='00000006-hello-world',
            source_json='{}')
        self.b7 = models.Build(
            copr=self.c2, copr_dir=self.c2_dir, package=self.p2,
            user=self.u1, submitted_on=10, srpm_url="http://somesrpm",
            source_status=StatusEnum("succeeded"), result_dir='00000007-whatsupthere-world')
        self.b8 = models.Build(
            copr=self.c2, copr_dir=self.c2_dir, package=self.p2,
            user=self.u1, submitted_on=100, srpm_url="http://somesrpm",
            source_status=StatusEnum("succeeded"), result_dir='00000008-whatsupthere-world')
    
        self.basic_builds = [self.b5, self.b6, self.b7, self.b8]
        self.b5_bc = []
        self.b6_bc = []
        self.b7_bc = []
        self.b8_bc = []
>       self.db.session.flush()
tests/coprs_test_case.py:461: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:937: in flush
    return self._proxied.flush(objects=objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8d6928c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8e1619a0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
E       [SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
E       [parameters: [('f18',), ('fedora-17',), ('master',)]]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
______ ERROR at teardown of TestUpdateBuilds.test_update_state_from_dict _______
self = <test_backend_general.TestUpdateBuilds object at 0x7fff9070a780>
method = <bound method TestUpdateBuilds.test_update_state_from_dict of <test_backend_general.TestUpdateBuilds object at 0x7fff9070a780>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
_ ERROR at setup of TestUpdateBuilds.test_update_more_existent_and_non_existent_builds _
self = <sqlalchemy.engine.base.Connection object at 0x7fff8e19eb40>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8e19c110>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff90310da0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8ce3dbc0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8e19c110>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
The above exception was the direct cause of the following exception:
self = <test_backend_general.TestUpdateBuilds object at 0x7fff907b0680>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8ce3dbc0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8e19c110>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
E       [SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
E       [parameters: [('f18',), ('fedora-17',), ('master',)]]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
_ ERROR at teardown of TestUpdateBuilds.test_update_more_existent_and_non_existent_builds _
self = <test_backend_general.TestUpdateBuilds object at 0x7fff907b0680>
method = <bound method TestUpdateBuilds.test_update_more_existent_and_non_existent_builds of <test_backend_general.TestUpdateBuilds object at 0x7fff907b0680>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
__ ERROR at setup of TestUpdateBuilds.test_build_task_canceled_waiting_build ___
self = <sqlalchemy.engine.base.Connection object at 0x7fff8dad4110>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8dad4350>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff90310da0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8d69cdc0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8dad4350>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
The above exception was the direct cause of the following exception:
self = <test_backend_general.TestUpdateBuilds object at 0x7fff907b0920>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8d69cdc0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8dad4350>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
E       [SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
E       [parameters: [('f18',), ('fedora-17',), ('master',)]]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
_ ERROR at teardown of TestUpdateBuilds.test_build_task_canceled_waiting_build _
self = <test_backend_general.TestUpdateBuilds object at 0x7fff907b0920>
method = <bound method TestUpdateBuilds.test_build_task_canceled_waiting_build of <test_backend_general.TestUpdateBuilds object at 0x7fff907b0920>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
__ ERROR at setup of TestUpdateBuilds.test_build_task_canceled_running_build ___
self = <sqlalchemy.engine.base.Connection object at 0x7fff8e378500>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8e378590>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff90310da0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8dd82b40>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8e378590>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
The above exception was the direct cause of the following exception:
self = <test_backend_general.TestUpdateBuilds object at 0x7fff907b1b50>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8dd82b40>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8e378590>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
E       [SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
E       [parameters: [('f18',), ('fedora-17',), ('master',)]]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
_ ERROR at teardown of TestUpdateBuilds.test_build_task_canceled_running_build _
self = <test_backend_general.TestUpdateBuilds object at 0x7fff907b1b50>
method = <bound method TestUpdateBuilds.test_build_task_canceled_running_build of <test_backend_general.TestUpdateBuilds object at 0x7fff907b1b50>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
__ ERROR at setup of TestUpdateBuilds.test_build_task_canceled_deleted_build ___
self = <sqlalchemy.engine.base.Connection object at 0x7fff8e2e9550>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8e2e95e0>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff90310da0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8d9ce440>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8e2e95e0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
The above exception was the direct cause of the following exception:
self = <test_backend_general.TestUpdateBuilds object at 0x7fff907b02c0>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8d9ce440>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8e2e95e0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
E       [SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
E       [parameters: [('f18',), ('fedora-17',), ('master',)]]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
_ ERROR at teardown of TestUpdateBuilds.test_build_task_canceled_deleted_build _
self = <test_backend_general.TestUpdateBuilds object at 0x7fff907b02c0>
method = <bound method TestUpdateBuilds.test_build_task_canceled_deleted_build of <test_backend_general.TestUpdateBuilds object at 0x7fff907b02c0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
_______ ERROR at teardown of TestWaitingActions.test_no_waiting_actions ________
self = <test_backend_general.TestWaitingActions object at 0x7fff907b4ce0>
method = <bound method TestWaitingActions.test_no_waiting_actions of <test_backend_general.TestWaitingActions object at 0x7fff907b4ce0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
_ ERROR at setup of TestWaitingActions.test_waiting_actions_only_lists_not_started_or_ended _
self = <sqlalchemy.engine.base.Connection object at 0x7fff8e3a9970>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8e3a9b50>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff903111c0>
parameters = [('user1', 0, 1, None)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
                    self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
                    )
            elif not effective_parameters and context.no_parameters:
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_execute_no_params:
                        if fn(cursor, str_statement, context):
                            evt_handled = True
                            break
                if not evt_handled:
                    self.dialect.do_execute_no_params(
                        cursor, str_statement, context
                    )
            else:
                effective_parameters = cast(
                    "_CoreSingleExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_execute:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_execute(
                        cursor, str_statement, effective_parameters, context
                    )
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1960: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8ce26940>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8e3a9b50>
    def do_execute(self, cursor, statement, parameters, context=None):
>       cursor.execute(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: user.username
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:924: IntegrityError
The above exception was the direct cause of the following exception:
self = <test_backend_general.TestWaitingActions object at 0x7fff907b4f80>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1233: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1960: in _exec_single_context
    self.dialect.do_execute(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8ce26940>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8e3a9b50>
    def do_execute(self, cursor, statement, parameters, context=None):
>       cursor.execute(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: user.username
E       [SQL: INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)]
E       [parameters: ('user1', 0, 1, None)]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:924: IntegrityError
_ ERROR at teardown of TestWaitingActions.test_waiting_actions_only_lists_not_started_or_ended _
self = <test_backend_general.TestWaitingActions object at 0x7fff907b4f80>
method = <bound method TestWaitingActions.test_waiting_actions_only_lists_not_started_or_ended of <test_backend_general.TestWaitingActions object at 0x7fff907b4f80>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
________ ERROR at setup of TestWaitingActions.test_pending_actions_list ________
self = <sqlalchemy.engine.base.Connection object at 0x7fff8e364590>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8e364da0>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff903111c0>
parameters = [('user1', 0, 1, None)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
                    self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
                    )
            elif not effective_parameters and context.no_parameters:
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_execute_no_params:
                        if fn(cursor, str_statement, context):
                            evt_handled = True
                            break
                if not evt_handled:
                    self.dialect.do_execute_no_params(
                        cursor, str_statement, context
                    )
            else:
                effective_parameters = cast(
                    "_CoreSingleExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_execute:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_execute(
                        cursor, str_statement, effective_parameters, context
                    )
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1960: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8de815c0>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8e364da0>
    def do_execute(self, cursor, statement, parameters, context=None):
>       cursor.execute(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: user.username
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:924: IntegrityError
The above exception was the direct cause of the following exception:
self = <test_backend_general.TestWaitingActions object at 0x7fff907b5280>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1233: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1960: in _exec_single_context
    self.dialect.do_execute(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8de815c0>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8e364da0>
    def do_execute(self, cursor, statement, parameters, context=None):
>       cursor.execute(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: user.username
E       [SQL: INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)]
E       [parameters: ('user1', 0, 1, None)]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:924: IntegrityError
______ ERROR at teardown of TestWaitingActions.test_pending_actions_list _______
self = <test_backend_general.TestWaitingActions object at 0x7fff907b5280>
method = <bound method TestWaitingActions.test_pending_actions_list of <test_backend_general.TestWaitingActions object at 0x7fff907b5280>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
_ ERROR at setup of TestWaitingActions.test_dont_send_pending_actions_whe_delete _
self = <sqlalchemy.engine.base.Connection object at 0x7fff8e367500>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8e367b60>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff903111c0>
parameters = [('user1', 0, 1, None)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
                    self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
                    )
            elif not effective_parameters and context.no_parameters:
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_execute_no_params:
                        if fn(cursor, str_statement, context):
                            evt_handled = True
                            break
                if not evt_handled:
                    self.dialect.do_execute_no_params(
                        cursor, str_statement, context
                    )
            else:
                effective_parameters = cast(
                    "_CoreSingleExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_execute:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_execute(
                        cursor, str_statement, effective_parameters, context
                    )
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1960: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8ce3c940>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8e367b60>
    def do_execute(self, cursor, statement, parameters, context=None):
>       cursor.execute(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: user.username
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:924: IntegrityError
The above exception was the direct cause of the following exception:
self = <test_backend_general.TestWaitingActions object at 0x7fff907b54c0>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1233: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1960: in _exec_single_context
    self.dialect.do_execute(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8ce3c940>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8e367b60>
    def do_execute(self, cursor, statement, parameters, context=None):
>       cursor.execute(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: user.username
E       [SQL: INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)]
E       [parameters: ('user1', 0, 1, None)]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:924: IntegrityError
_ ERROR at teardown of TestWaitingActions.test_dont_send_pending_actions_whe_delete _
self = <test_backend_general.TestWaitingActions object at 0x7fff907b54c0>
method = <bound method TestWaitingActions.test_dont_send_pending_actions_whe_delete of <test_backend_general.TestWaitingActions object at 0x7fff907b54c0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
________ ERROR at setup of TestWaitingActions.test_get_action_succeeded ________
self = <sqlalchemy.engine.base.Connection object at 0x7fff8e3295e0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8e329e20>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff903111c0>
parameters = [('user1', 0, 1, None)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
                    self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
                    )
            elif not effective_parameters and context.no_parameters:
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_execute_no_params:
                        if fn(cursor, str_statement, context):
                            evt_handled = True
                            break
                if not evt_handled:
                    self.dialect.do_execute_no_params(
                        cursor, str_statement, context
                    )
            else:
                effective_parameters = cast(
                    "_CoreSingleExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_execute:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_execute(
                        cursor, str_statement, effective_parameters, context
                    )
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1960: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8cecf140>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8e329e20>
    def do_execute(self, cursor, statement, parameters, context=None):
>       cursor.execute(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: user.username
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:924: IntegrityError
The above exception was the direct cause of the following exception:
self = <test_backend_general.TestWaitingActions object at 0x7fff907b0980>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1233: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1960: in _exec_single_context
    self.dialect.do_execute(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8cecf140>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8e329e20>
    def do_execute(self, cursor, statement, parameters, context=None):
>       cursor.execute(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: user.username
E       [SQL: INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)]
E       [parameters: ('user1', 0, 1, None)]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:924: IntegrityError
______ ERROR at teardown of TestWaitingActions.test_get_action_succeeded _______
self = <test_backend_general.TestWaitingActions object at 0x7fff907b0980>
method = <bound method TestWaitingActions.test_get_action_succeeded of <test_backend_general.TestWaitingActions object at 0x7fff907b0980>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
__________ ERROR at setup of TestUpdateActions.test_update_one_action __________
self = <sqlalchemy.engine.base.Connection object at 0x7fff8e30ba10>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8e309bb0>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff903111c0>
parameters = [('user1', 0, 1, None)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
                    self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
                    )
            elif not effective_parameters and context.no_parameters:
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_execute_no_params:
                        if fn(cursor, str_statement, context):
                            evt_handled = True
                            break
                if not evt_handled:
                    self.dialect.do_execute_no_params(
                        cursor, str_statement, context
                    )
            else:
                effective_parameters = cast(
                    "_CoreSingleExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_execute:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_execute(
                        cursor, str_statement, effective_parameters, context
                    )
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1960: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8d2d14c0>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8e309bb0>
    def do_execute(self, cursor, statement, parameters, context=None):
>       cursor.execute(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: user.username
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:924: IntegrityError
The above exception was the direct cause of the following exception:
self = <test_backend_general.TestUpdateActions object at 0x7fff907b5f40>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1233: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1960: in _exec_single_context
    self.dialect.do_execute(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8d2d14c0>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8e309bb0>
    def do_execute(self, cursor, statement, parameters, context=None):
>       cursor.execute(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: user.username
E       [SQL: INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)]
E       [parameters: ('user1', 0, 1, None)]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:924: IntegrityError
________ ERROR at teardown of TestUpdateActions.test_update_one_action _________
self = <test_backend_general.TestUpdateActions object at 0x7fff907b5f40>
method = <bound method TestUpdateActions.test_update_one_action of <test_backend_general.TestUpdateActions object at 0x7fff907b5f40>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
_ ERROR at setup of TestUpdateActions.test_update_more_existent_and_non_existent_actions _
self = <sqlalchemy.engine.base.Connection object at 0x7fff8e37bbc0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8e378650>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff903111c0>
parameters = [('user1', 0, 1, None)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
                    self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
                    )
            elif not effective_parameters and context.no_parameters:
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_execute_no_params:
                        if fn(cursor, str_statement, context):
                            evt_handled = True
                            break
                if not evt_handled:
                    self.dialect.do_execute_no_params(
                        cursor, str_statement, context
                    )
            else:
                effective_parameters = cast(
                    "_CoreSingleExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_execute:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_execute(
                        cursor, str_statement, effective_parameters, context
                    )
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1960: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8d4a3f40>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8e378650>
    def do_execute(self, cursor, statement, parameters, context=None):
>       cursor.execute(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: user.username
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:924: IntegrityError
The above exception was the direct cause of the following exception:
self = <test_backend_general.TestUpdateActions object at 0x7fff907b6150>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1233: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1960: in _exec_single_context
    self.dialect.do_execute(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8d4a3f40>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8e378650>
    def do_execute(self, cursor, statement, parameters, context=None):
>       cursor.execute(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: user.username
E       [SQL: INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)]
E       [parameters: ('user1', 0, 1, None)]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:924: IntegrityError
_ ERROR at teardown of TestUpdateActions.test_update_more_existent_and_non_existent_actions _
self = <test_backend_general.TestUpdateActions object at 0x7fff907b6150>
method = <bound method TestUpdateActions.test_update_more_existent_and_non_existent_actions of <test_backend_general.TestUpdateActions object at 0x7fff907b6150>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
_______ ERROR at setup of TestImportingBuilds.test_bg_priority_in_queue ________
self = <sqlalchemy.engine.base.Connection object at 0x7fff8e5116d0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8e4eb560>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff90310da0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8d693640>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8e4eb560>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
The above exception was the direct cause of the following exception:
self = <test_backend_general.TestImportingBuilds object at 0x7fff907b6ed0>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8d693640>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8e4eb560>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
E       [SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
E       [parameters: [('f18',), ('fedora-17',), ('master',)]]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
______ ERROR at teardown of TestImportingBuilds.test_bg_priority_in_queue ______
self = <test_backend_general.TestImportingBuilds object at 0x7fff907b6ed0>
method = <bound method TestImportingBuilds.test_bg_priority_in_queue of <test_backend_general.TestImportingBuilds object at 0x7fff907b6ed0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
____ ERROR at setup of TestImportingBuilds.test_importing_queue_multiple_bg ____
self = <sqlalchemy.engine.base.Connection object at 0x7fff8dc965a0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8dc96600>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff90310da0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8de6c7c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8dc96600>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
The above exception was the direct cause of the following exception:
self = <test_backend_general.TestImportingBuilds object at 0x7fff907b70e0>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8de6c7c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8dc96600>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
E       [SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
E       [parameters: [('f18',), ('fedora-17',), ('master',)]]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
__ ERROR at teardown of TestImportingBuilds.test_importing_queue_multiple_bg ___
self = <test_backend_general.TestImportingBuilds object at 0x7fff907b70e0>
method = <bound method TestImportingBuilds.test_importing_queue_multiple_bg of <test_backend_general.TestImportingBuilds object at 0x7fff907b70e0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
__________ ERROR at setup of TestCoprShowBuilds.test_copr_show_builds __________
self = <sqlalchemy.engine.base.Connection object at 0x7fff8e367500>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8e367ce0>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff90310da0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8d6d1240>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8e367ce0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
The above exception was the direct cause of the following exception:
self = <test_coprs_builds.TestCoprShowBuilds object at 0x7fff906f4d40>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8d6d1240>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8e367ce0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
E       [SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
E       [parameters: [('f18',), ('fedora-17',), ('master',)]]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
________ ERROR at teardown of TestCoprShowBuilds.test_copr_show_builds _________
self = <test_coprs_builds.TestCoprShowBuilds object at 0x7fff906f4d40>
method = <bound method TestCoprShowBuilds.test_copr_show_builds of <test_coprs_builds.TestCoprShowBuilds object at 0x7fff906f4d40>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
_______ ERROR at setup of TestCoprAddBuild.test_copr_user_can_add_build ________
self = <sqlalchemy.engine.base.Connection object at 0x7fff8dce0ad0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8dce0b30>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff90310da0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8ce3dcc0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8dce0b30>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
The above exception was the direct cause of the following exception:
self = <test_coprs_builds.TestCoprAddBuild object at 0x7fff906f5af0>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8ce3dcc0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8dce0b30>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
E       [SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
E       [parameters: [('f18',), ('fedora-17',), ('master',)]]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
______ ERROR at teardown of TestCoprAddBuild.test_copr_user_can_add_build ______
self = <test_coprs_builds.TestCoprAddBuild object at 0x7fff906f5af0>
method = <bound method TestCoprAddBuild.test_copr_user_can_add_build of <test_coprs_builds.TestCoprAddBuild object at 0x7fff906f5af0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
___ ERROR at setup of TestCoprAddBuild.test_copr_allowed_user_can_add_build ____
self = <sqlalchemy.engine.base.Connection object at 0x7fff8dce3bf0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8dce3ce0>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff90310da0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8dea08c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8dce3ce0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
The above exception was the direct cause of the following exception:
self = <test_coprs_builds.TestCoprAddBuild object at 0x7fff906f5b80>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8dea08c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8dce3ce0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
E       [SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
E       [parameters: [('f18',), ('fedora-17',), ('master',)]]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
__ ERROR at teardown of TestCoprAddBuild.test_copr_allowed_user_can_add_build __
self = <test_coprs_builds.TestCoprAddBuild object at 0x7fff906f5b80>
method = <bound method TestCoprAddBuild.test_copr_allowed_user_can_add_build of <test_coprs_builds.TestCoprAddBuild object at 0x7fff906f5b80>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
_ ERROR at setup of TestCoprAddBuild.test_copr_not_yet_allowed_user_cant_add_build _
self = <sqlalchemy.engine.base.Connection object at 0x7fff8dd62090>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8dd62990>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff903111c0>
parameters = [('user1', 0, 1, None)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
                    self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
                    )
            elif not effective_parameters and context.no_parameters:
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_execute_no_params:
                        if fn(cursor, str_statement, context):
                            evt_handled = True
                            break
                if not evt_handled:
                    self.dialect.do_execute_no_params(
                        cursor, str_statement, context
                    )
            else:
                effective_parameters = cast(
                    "_CoreSingleExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_execute:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_execute(
                        cursor, str_statement, effective_parameters, context
                    )
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1960: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8cfbb940>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8dd62990>
    def do_execute(self, cursor, statement, parameters, context=None):
>       cursor.execute(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: user.username
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:924: IntegrityError
The above exception was the direct cause of the following exception:
self = <test_coprs_builds.TestCoprAddBuild object at 0x7fff906f5d30>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1233: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1960: in _exec_single_context
    self.dialect.do_execute(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8cfbb940>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8dd62990>
    def do_execute(self, cursor, statement, parameters, context=None):
>       cursor.execute(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: user.username
E       [SQL: INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)]
E       [parameters: ('user1', 0, 1, None)]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:924: IntegrityError
_ ERROR at teardown of TestCoprAddBuild.test_copr_not_yet_allowed_user_cant_add_build _
self = <test_coprs_builds.TestCoprAddBuild object at 0x7fff906f5d30>
method = <bound method TestCoprAddBuild.test_copr_not_yet_allowed_user_cant_add_build of <test_coprs_builds.TestCoprAddBuild object at 0x7fff906f5d30>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
_ ERROR at setup of TestCoprAddBuild.test_copr_user_cant_add_build_to_admin_project _
self = <sqlalchemy.engine.base.Connection object at 0x7fff8dcc4080>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8dcc4b00>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff903111c0>
parameters = [('user1', 0, 1, None)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
                    self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
                    )
            elif not effective_parameters and context.no_parameters:
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_execute_no_params:
                        if fn(cursor, str_statement, context):
                            evt_handled = True
                            break
                if not evt_handled:
                    self.dialect.do_execute_no_params(
                        cursor, str_statement, context
                    )
            else:
                effective_parameters = cast(
                    "_CoreSingleExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_execute:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_execute(
                        cursor, str_statement, effective_parameters, context
                    )
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1960: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8d4c5740>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8dcc4b00>
    def do_execute(self, cursor, statement, parameters, context=None):
>       cursor.execute(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: user.username
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:924: IntegrityError
The above exception was the direct cause of the following exception:
self = <test_coprs_builds.TestCoprAddBuild object at 0x7fff906f5fa0>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1233: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1960: in _exec_single_context
    self.dialect.do_execute(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8d4c5740>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8dcc4b00>
    def do_execute(self, cursor, statement, parameters, context=None):
>       cursor.execute(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: user.username
E       [SQL: INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)]
E       [parameters: ('user1', 0, 1, None)]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:924: IntegrityError
_ ERROR at teardown of TestCoprAddBuild.test_copr_user_cant_add_build_to_admin_project _
self = <test_coprs_builds.TestCoprAddBuild object at 0x7fff906f5fa0>
method = <bound method TestCoprAddBuild.test_copr_user_cant_add_build_to_admin_project of <test_coprs_builds.TestCoprAddBuild object at 0x7fff906f5fa0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
_ ERROR at setup of TestCoprAddBuild.test_copr_user_without_permission_cant_add_build _
self = <sqlalchemy.engine.base.Connection object at 0x7fff8dd70860>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8dd70ad0>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff903111c0>
parameters = [('user1', 0, 1, None)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
                    self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
                    )
            elif not effective_parameters and context.no_parameters:
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_execute_no_params:
                        if fn(cursor, str_statement, context):
                            evt_handled = True
                            break
                if not evt_handled:
                    self.dialect.do_execute_no_params(
                        cursor, str_statement, context
                    )
            else:
                effective_parameters = cast(
                    "_CoreSingleExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_execute:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_execute(
                        cursor, str_statement, effective_parameters, context
                    )
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1960: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8d3182c0>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8dd70ad0>
    def do_execute(self, cursor, statement, parameters, context=None):
>       cursor.execute(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: user.username
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:924: IntegrityError
The above exception was the direct cause of the following exception:
self = <test_coprs_builds.TestCoprAddBuild object at 0x7fff906f6210>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1233: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1960: in _exec_single_context
    self.dialect.do_execute(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8d3182c0>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8dd70ad0>
    def do_execute(self, cursor, statement, parameters, context=None):
>       cursor.execute(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: user.username
E       [SQL: INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)]
E       [parameters: ('user1', 0, 1, None)]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:924: IntegrityError
_ ERROR at teardown of TestCoprAddBuild.test_copr_user_without_permission_cant_add_build _
self = <test_coprs_builds.TestCoprAddBuild object at 0x7fff906f6210>
method = <bound method TestCoprAddBuild.test_copr_user_without_permission_cant_add_build of <test_coprs_builds.TestCoprAddBuild object at 0x7fff906f6210>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
_________ ERROR at setup of TestCoprAddBuild.test_copr_default_options _________
self = <sqlalchemy.engine.base.Connection object at 0x7fff8dd73830>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8dd73890>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff90310da0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8dea22c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8dd73890>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
The above exception was the direct cause of the following exception:
self = <test_coprs_builds.TestCoprAddBuild object at 0x7fff906f6420>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8dea22c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8dd73890>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
E       [SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
E       [parameters: [('f18',), ('fedora-17',), ('master',)]]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
_______ ERROR at teardown of TestCoprAddBuild.test_copr_default_options ________
self = <test_coprs_builds.TestCoprAddBuild object at 0x7fff906f6420>
method = <bound method TestCoprAddBuild.test_copr_default_options of <test_coprs_builds.TestCoprAddBuild object at 0x7fff906f6420>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
_ ERROR at setup of TestCoprCancelBuild.test_copr_build_submitter_can_cancel_build _
self = <sqlalchemy.engine.base.Connection object at 0x7fff8dd9a570>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8dd9a600>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff90310da0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8ce3c5c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8dd9a600>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
The above exception was the direct cause of the following exception:
self = <test_coprs_builds.TestCoprCancelBuild object at 0x7fff906f7380>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8ce3c5c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8dd9a600>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
E       [SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
E       [parameters: [('f18',), ('fedora-17',), ('master',)]]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
_ ERROR at teardown of TestCoprCancelBuild.test_copr_build_submitter_can_cancel_build _
self = <test_coprs_builds.TestCoprCancelBuild object at 0x7fff906f7380>
method = <bound method TestCoprCancelBuild.test_copr_build_submitter_can_cancel_build of <test_coprs_builds.TestCoprCancelBuild object at 0x7fff906f7380>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
_ ERROR at setup of TestCoprCancelBuild.test_copr_build_non_submitter_cannot_cancel_build _
self = <sqlalchemy.engine.base.Connection object at 0x7fff907b01d0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8e13f500>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff90310da0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8d6b8140>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8e13f500>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
The above exception was the direct cause of the following exception:
self = <test_coprs_builds.TestCoprCancelBuild object at 0x7fff906f7440>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8d6b8140>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8e13f500>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
E       [SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
E       [parameters: [('f18',), ('fedora-17',), ('master',)]]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
_ ERROR at teardown of TestCoprCancelBuild.test_copr_build_non_submitter_cannot_cancel_build _
self = <test_coprs_builds.TestCoprCancelBuild object at 0x7fff906f7440>
method = <bound method TestCoprCancelBuild.test_copr_build_non_submitter_cannot_cancel_build of <test_coprs_builds.TestCoprCancelBuild object at 0x7fff906f7440>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
_ ERROR at setup of TestCoprDeleteBuild.test_copr_build_submitter_can_delete_build_old _
self = <sqlalchemy.engine.base.Connection object at 0x7fff8e329df0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8e329eb0>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff903111c0>
parameters = [('user1', 0, 1, None)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
                    self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
                    )
            elif not effective_parameters and context.no_parameters:
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_execute_no_params:
                        if fn(cursor, str_statement, context):
                            evt_handled = True
                            break
                if not evt_handled:
                    self.dialect.do_execute_no_params(
                        cursor, str_statement, context
                    )
            else:
                effective_parameters = cast(
                    "_CoreSingleExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_execute:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_execute(
                        cursor, str_statement, effective_parameters, context
                    )
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1960: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8cf2fac0>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8e329eb0>
    def do_execute(self, cursor, statement, parameters, context=None):
>       cursor.execute(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: user.username
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:924: IntegrityError
The above exception was the direct cause of the following exception:
self = <test_coprs_builds.TestCoprDeleteBuild object at 0x7fff90740080>
    @pytest.fixture
    def f_mock_chroots_many(self):
        """
        Adds more chroots to self.c1
        Requires: f_mock_chroots
        """
        self.mc_list = []
        for arch in ["x86_64", "i386"]:
            for os_version in range(19, 24):
                mc = models.MockChroot(
                    os_release="fedora", os_version=os_version,
                    arch=arch, is_active=True)
                # Let's try slashes now. for example.  Some copr instances use
                # this pattern.
>               mc.distgit_branch = BranchesLogic.get_or_create(
                        'fedora/{0}'.format(os_version),
                        session=self.db.session)
tests/coprs_test_case.py:352: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
coprs/logic/coprs_logic.py:927: in get_or_create
    item = session.query(models.DistGitBranch).filter_by(name=name).first()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/query.py:2727: in first
    return self.limit(1)._iter().first()  # type: ignore
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/query.py:2826: in _iter
    result: Union[ScalarResult[_T], Result[_T]] = self.session.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:2306: in execute
    return self._execute_internal(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:2170: in _execute_internal
    ) = compile_state_cls.orm_pre_session_exec(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/context.py:549: in orm_pre_session_exec
    session._autoflush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:3005: in _autoflush
    raise e.with_traceback(sys.exc_info()[2])
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:2994: in _autoflush
    self.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1233: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1960: in _exec_single_context
    self.dialect.do_execute(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8cf2fac0>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8e329eb0>
    def do_execute(self, cursor, statement, parameters, context=None):
>       cursor.execute(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (raised as a result of Query-invoked autoflush; consider using a session.no_autoflush block if this flush is occurring prematurely)
E       (sqlite3.IntegrityError) UNIQUE constraint failed: user.username
E       [SQL: INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)]
E       [parameters: ('user1', 0, 1, None)]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:924: IntegrityError
_ ERROR at teardown of TestCoprDeleteBuild.test_copr_build_submitter_can_delete_build_old _
self = <test_coprs_builds.TestCoprDeleteBuild object at 0x7fff90740080>
method = <bound method TestCoprDeleteBuild.test_copr_build_submitter_can_delete_build_old of <test_coprs_builds.TestCoprDeleteBuild object at 0x7fff90740080>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
_ ERROR at teardown of TestCoprDeleteBuild.test_copr_build_submitter_can_delete_build _
self = <test_coprs_builds.TestCoprDeleteBuild object at 0x7fff90740110>
method = <bound method TestCoprDeleteBuild.test_copr_build_submitter_can_delete_build of <test_coprs_builds.TestCoprDeleteBuild object at 0x7fff90740110>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
_ ERROR at setup of TestCoprDeleteBuild.test_copr_build_non_submitter_cannot_delete_build _
self = <sqlalchemy.engine.base.Connection object at 0x7fff8dde9970>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8dde9bb0>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff90310da0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8c7a7b40>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8dde9bb0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
The above exception was the direct cause of the following exception:
self = <test_coprs_builds.TestCoprDeleteBuild object at 0x7fff906f73e0>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8c7a7b40>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8dde9bb0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
E       [SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
E       [parameters: [('f18',), ('fedora-17',), ('master',)]]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
_ ERROR at teardown of TestCoprDeleteBuild.test_copr_build_non_submitter_cannot_delete_build _
self = <test_coprs_builds.TestCoprDeleteBuild object at 0x7fff906f73e0>
method = <bound method TestCoprDeleteBuild.test_copr_build_non_submitter_cannot_delete_build of <test_coprs_builds.TestCoprDeleteBuild object at 0x7fff906f73e0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
_ ERROR at teardown of TestCoprDeleteBuild.test_copr_delete_multiple_builds_sends_single_action _
self = <test_coprs_builds.TestCoprDeleteBuild object at 0x7fff906f63c0>
method = <bound method TestCoprDeleteBuild.test_copr_delete_multiple_builds_sends_single_action of <test_coprs_builds.TestCoprDeleteBuild object at 0x7fff906f63c0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
_ ERROR at teardown of TestCoprDeleteBuild.test_copr_delete_package_sends_single_action _
self = <test_coprs_builds.TestCoprDeleteBuild object at 0x7fff907402f0>
method = <bound method TestCoprDeleteBuild.test_copr_delete_package_sends_single_action of <test_coprs_builds.TestCoprDeleteBuild object at 0x7fff907402f0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
___ ERROR at setup of TestCoprRepeatBuild.test_copr_build_basic_build_repeat ___
self = <sqlalchemy.engine.base.Connection object at 0x7fff8de85be0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8de85ca0>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff903111c0>
parameters = [('user1', 0, 1, None)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
                    self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
                    )
            elif not effective_parameters and context.no_parameters:
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_execute_no_params:
                        if fn(cursor, str_statement, context):
                            evt_handled = True
                            break
                if not evt_handled:
                    self.dialect.do_execute_no_params(
                        cursor, str_statement, context
                    )
            else:
                effective_parameters = cast(
                    "_CoreSingleExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_execute:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_execute(
                        cursor, str_statement, effective_parameters, context
                    )
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1960: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8cf5acc0>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8de85ca0>
    def do_execute(self, cursor, statement, parameters, context=None):
>       cursor.execute(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: user.username
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:924: IntegrityError
The above exception was the direct cause of the following exception:
self = <test_coprs_builds.TestCoprRepeatBuild object at 0x7fff907413d0>
    @pytest.fixture
    def f_mock_chroots_many(self):
        """
        Adds more chroots to self.c1
        Requires: f_mock_chroots
        """
        self.mc_list = []
        for arch in ["x86_64", "i386"]:
            for os_version in range(19, 24):
                mc = models.MockChroot(
                    os_release="fedora", os_version=os_version,
                    arch=arch, is_active=True)
                # Let's try slashes now. for example.  Some copr instances use
                # this pattern.
>               mc.distgit_branch = BranchesLogic.get_or_create(
                        'fedora/{0}'.format(os_version),
                        session=self.db.session)
tests/coprs_test_case.py:352: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
coprs/logic/coprs_logic.py:927: in get_or_create
    item = session.query(models.DistGitBranch).filter_by(name=name).first()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/query.py:2727: in first
    return self.limit(1)._iter().first()  # type: ignore
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/query.py:2826: in _iter
    result: Union[ScalarResult[_T], Result[_T]] = self.session.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:2306: in execute
    return self._execute_internal(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:2170: in _execute_internal
    ) = compile_state_cls.orm_pre_session_exec(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/context.py:549: in orm_pre_session_exec
    session._autoflush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:3005: in _autoflush
    raise e.with_traceback(sys.exc_info()[2])
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:2994: in _autoflush
    self.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1233: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1960: in _exec_single_context
    self.dialect.do_execute(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8cf5acc0>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8de85ca0>
    def do_execute(self, cursor, statement, parameters, context=None):
>       cursor.execute(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (raised as a result of Query-invoked autoflush; consider using a session.no_autoflush block if this flush is occurring prematurely)
E       (sqlite3.IntegrityError) UNIQUE constraint failed: user.username
E       [SQL: INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)]
E       [parameters: ('user1', 0, 1, None)]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:924: IntegrityError
_ ERROR at teardown of TestCoprRepeatBuild.test_copr_build_basic_build_repeat __
self = <test_coprs_builds.TestCoprRepeatBuild object at 0x7fff907413d0>
method = <bound method TestCoprRepeatBuild.test_copr_build_basic_build_repeat of <test_coprs_builds.TestCoprRepeatBuild object at 0x7fff907413d0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
_ ERROR at setup of TestCoprRepeatBuild.test_copr_build_submitter_can_repeat_build _
self = <sqlalchemy.engine.base.Connection object at 0x7fff8ddf5730>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8ddf57c0>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff90310da0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8d3e5140>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8ddf57c0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
The above exception was the direct cause of the following exception:
self = <test_coprs_builds.TestCoprRepeatBuild object at 0x7fff90741460>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8d3e5140>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8ddf57c0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
E       [SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
E       [parameters: [('f18',), ('fedora-17',), ('master',)]]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
_ ERROR at teardown of TestCoprRepeatBuild.test_copr_build_submitter_can_repeat_build _
self = <test_coprs_builds.TestCoprRepeatBuild object at 0x7fff90741460>
method = <bound method TestCoprRepeatBuild.test_copr_build_submitter_can_repeat_build of <test_coprs_builds.TestCoprRepeatBuild object at 0x7fff90741460>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
_ ERROR at setup of TestCoprRepeatBuild.test_copr_build_non_submitter_cannot_repeat_build _
self = <sqlalchemy.engine.base.Connection object at 0x7fff8dedcb30>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8dedcbc0>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff90310da0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8cec00c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8dedcbc0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
The above exception was the direct cause of the following exception:
self = <test_coprs_builds.TestCoprRepeatBuild object at 0x7fff90741670>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8cec00c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8dedcbc0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
E       [SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
E       [parameters: [('f18',), ('fedora-17',), ('master',)]]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
_ ERROR at teardown of TestCoprRepeatBuild.test_copr_build_non_submitter_cannot_repeat_build _
self = <test_coprs_builds.TestCoprRepeatBuild object at 0x7fff90741670>
method = <bound method TestCoprRepeatBuild.test_copr_build_non_submitter_cannot_repeat_build of <test_coprs_builds.TestCoprRepeatBuild object at 0x7fff90741670>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
_ ERROR at setup of TestCoprRepeatBuild.test_rebuild_srpm_upload_generates_chroots _
self = <sqlalchemy.engine.base.Connection object at 0x7fff8dedfef0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8dedff80>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff90310da0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8cfb9fc0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8dedff80>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
The above exception was the direct cause of the following exception:
self = <test_coprs_builds.TestCoprRepeatBuild object at 0x7fff90741af0>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8cfb9fc0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8dedff80>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
E       [SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
E       [parameters: [('f18',), ('fedora-17',), ('master',)]]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
_ ERROR at teardown of TestCoprRepeatBuild.test_rebuild_srpm_upload_generates_chroots _
self = <test_coprs_builds.TestCoprRepeatBuild object at 0x7fff90741af0>
method = <bound method TestCoprRepeatBuild.test_rebuild_srpm_upload_generates_chroots of <test_coprs_builds.TestCoprRepeatBuild object at 0x7fff90741af0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
______ ERROR at setup of TestCoprRepeatBuild.test_copr_build_package_urls ______
self = <sqlalchemy.engine.base.Connection object at 0x7fff8e366d20>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8e364e60>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff90310da0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8cf581c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8e364e60>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
The above exception was the direct cause of the following exception:
self = <test_coprs_builds.TestCoprRepeatBuild object at 0x7fff90741b50>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8cf581c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8e364e60>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
E       [SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
E       [parameters: [('f18',), ('fedora-17',), ('master',)]]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
____ ERROR at teardown of TestCoprRepeatBuild.test_copr_build_package_urls _____
self = <test_coprs_builds.TestCoprRepeatBuild object at 0x7fff90741b50>
method = <bound method TestCoprRepeatBuild.test_copr_build_package_urls of <test_coprs_builds.TestCoprRepeatBuild object at 0x7fff90741b50>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
_ ERROR at setup of TestCoprRepeatBuild.test_copr_repeat_build_available_chroots _
self = <sqlalchemy.engine.base.Connection object at 0x7fff8de853a0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8de85af0>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff90310da0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8c900640>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8de85af0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
The above exception was the direct cause of the following exception:
self = <test_coprs_builds.TestCoprRepeatBuild object at 0x7fff90741fa0>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8c900640>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8de85af0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
E       [SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
E       [parameters: [('f18',), ('fedora-17',), ('master',)]]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
_ ERROR at teardown of TestCoprRepeatBuild.test_copr_repeat_build_available_chroots _
self = <test_coprs_builds.TestCoprRepeatBuild object at 0x7fff90741fa0>
method = <bound method TestCoprRepeatBuild.test_copr_repeat_build_available_chroots of <test_coprs_builds.TestCoprRepeatBuild object at 0x7fff90741fa0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
_________ ERROR at setup of TestCoprsChroots.test_edit_own_copr_chroot _________
self = <sqlalchemy.engine.base.Connection object at 0x7fff8dedd010>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8dedd070>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff90310da0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8ce93140>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8dedd070>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
The above exception was the direct cause of the following exception:
self = <test_coprs_chroots.TestCoprsChroots object at 0x7fff90742ed0>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8ce93140>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8dedd070>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
E       [SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
E       [parameters: [('f18',), ('fedora-17',), ('master',)]]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
_______ ERROR at teardown of TestCoprsChroots.test_edit_own_copr_chroot ________
self = <test_coprs_chroots.TestCoprsChroots object at 0x7fff90742ed0>
method = <bound method TestCoprsChroots.test_edit_own_copr_chroot of <test_coprs_chroots.TestCoprsChroots object at 0x7fff90742ed0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
_______ ERROR at setup of TestCoprsChroots.test_edit_someone_copr_chroot _______
self = <sqlalchemy.engine.base.Connection object at 0x7fff8dd99370>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8ddf7650>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff90310da0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8ca1d8c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8ddf7650>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
The above exception was the direct cause of the following exception:
self = <test_coprs_chroots.TestCoprsChroots object at 0x7fff90743170>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8ca1d8c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8ddf7650>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
E       [SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
E       [parameters: [('f18',), ('fedora-17',), ('master',)]]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
_____ ERROR at teardown of TestCoprsChroots.test_edit_someone_copr_chroot ______
self = <test_coprs_chroots.TestCoprsChroots object at 0x7fff90743170>
method = <bound method TestCoprsChroots.test_edit_someone_copr_chroot of <test_coprs_chroots.TestCoprsChroots object at 0x7fff90743170>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
_ ERROR at setup of TestCoprsChroots.test_edit_someone_copr_chroot_being_admin _
self = <sqlalchemy.engine.base.Connection object at 0x7fff8ddf60c0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8df139b0>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff90310da0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8c7600c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8df139b0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
The above exception was the direct cause of the following exception:
self = <test_coprs_chroots.TestCoprsChroots object at 0x7fff90743470>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8c7600c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8df139b0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
E       [SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
E       [parameters: [('f18',), ('fedora-17',), ('master',)]]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
_ ERROR at teardown of TestCoprsChroots.test_edit_someone_copr_chroot_being_admin _
self = <test_coprs_chroots.TestCoprsChroots object at 0x7fff90743470>
method = <bound method TestCoprsChroots.test_edit_someone_copr_chroot_being_admin of <test_coprs_chroots.TestCoprsChroots object at 0x7fff90743470>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
__ ERROR at teardown of TestMonitor.test_regression_monitor_no_copr_returned ___
self = <test_coprs_general.TestMonitor object at 0x7fff9099ba70>
method = <bound method TestMonitor.test_regression_monitor_no_copr_returned of <test_coprs_general.TestMonitor object at 0x7fff9099ba70>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
------------------------------ Captured log call -------------------------------
ERROR    coprs:error_handlers.py:102 Admin-only exception
Request: GET http://localhost.localdomain/coprs/user1/temp/monitor/
User: None
Traceback (most recent call last):
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py", line 1929, in _exec_single_context
    self.dialect.do_executemany(
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py", line 921, in do_executemany
    cursor.executemany(statement, parameters)
sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
  File "/usr/lib/python3.12/site-packages/flask/app.py", line 870, in full_dispatch_request
    rv = self.dispatch_request()
         ^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.12/site-packages/flask/app.py", line 855, in dispatch_request
    return self.ensure_sync(self.view_functions[rule.endpoint])(**view_args)  # type: ignore[no-any-return]
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/builddir/build/BUILD/copr-frontend-1.204/coprs_frontend/coprs/views/misc.py", line 253, in wrapper
    copr = ComplexLogic.get_copr(username, coprname, with_mock_chroots=True)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/builddir/build/BUILD/copr-frontend-1.204/coprs_frontend/coprs/logic/complex_logic.py", line 201, in get_copr
    return CoprsLogic.get(user_name, copr_name, **kwargs).filter(Copr.group_id.is_(None)).one()
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/query.py", line 2777, in one
    return self._iter().one()  # type: ignore
           ^^^^^^^^^^^^
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/query.py", line 2826, in _iter
    result: Union[ScalarResult[_T], Result[_T]] = self.session.execute(
                                                  ^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py", line 2306, in execute
    return self._execute_internal(
           ^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py", line 2170, in _execute_internal
    ) = compile_state_cls.orm_pre_session_exec(
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/context.py", line 549, in orm_pre_session_exec
    session._autoflush()
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py", line 3005, in _autoflush
    raise e.with_traceback(sys.exc_info()[2])
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py", line 2994, in _autoflush
    self.flush()
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py", line 4296, in flush
    self._flush(objects)
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py", line 4431, in _flush
    with util.safe_reraise():
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py", line 146, in __exit__
    raise exc_value.with_traceback(exc_tb)
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py", line 4392, in _flush
    flush_context.execute()
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py", line 466, in execute
    rec.execute(self)
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py", line 642, in execute
    util.preloaded.orm_persistence.save_obj(
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py", line 93, in save_obj
    _emit_insert_statements(
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py", line 1048, in _emit_insert_statements
    result = connection.execute(
             ^^^^^^^^^^^^^^^^^^^
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py", line 1408, in execute
    return meth(
           ^^^^^
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py", line 513, in _execute_on_connection
    return connection._execute_clauseelement(
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py", line 1630, in _execute_clauseelement
    ret = self._execute_context(
          ^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py", line 1839, in _execute_context
    return self._exec_single_context(
           ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py", line 1979, in _exec_single_context
    self._handle_dbapi_exception(
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py", line 2335, in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py", line 1929, in _exec_single_context
    self.dialect.do_executemany(
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py", line 921, in do_executemany
    cursor.executemany(statement, parameters)
sqlalchemy.exc.IntegrityError: (raised as a result of Query-invoked autoflush; consider using a session.no_autoflush block if this flush is occurring prematurely)
(sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
[SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
[parameters: [('f18',), ('fedora-17',), ('master',)]]
(Background on this error at: https://sqlalche.me/e/20/gkpj)
ERROR    coprs:error_handlers.py:42 Response error: gkpj Database error, contact admin
___________ ERROR at teardown of TestCoprsShow.test_show_no_entries ____________
self = <test_coprs_general.TestCoprsShow object at 0x7fff9099ae10>
method = <bound method TestCoprsShow.test_show_no_entries of <test_coprs_general.TestCoprsShow object at 0x7fff9099ae10>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
------------------------------ Captured log call -------------------------------
ERROR    coprs:error_handlers.py:102 Admin-only exception
Request: GET http://localhost.localdomain/
User: None
Traceback (most recent call last):
  File "/usr/lib/python3.12/site-packages/flask/app.py", line 870, in full_dispatch_request
    rv = self.dispatch_request()
         ^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.12/site-packages/flask/app.py", line 855, in dispatch_request
    return self.ensure_sync(self.view_functions[rule.endpoint])(**view_args)  # type: ignore[no-any-return]
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/builddir/build/BUILD/copr-frontend-1.204/coprs_frontend/coprs/views/coprs_ns/coprs_general.py", line 102, in coprs_show
    data = builds_logic.BuildsLogic.get_small_graph_data('30min')
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/builddir/build/BUILD/copr-frontend-1.204/coprs_frontend/coprs/logic/builds_logic.py", line 243, in get_small_graph_data
    running = cls.get_running_jobs_bucket(step_start, step_end)
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/builddir/build/BUILD/copr-frontend-1.204/coprs_frontend/coprs/logic/builds_logic.py", line 184, in get_running_jobs_bucket
    res = db.engine.execute(query, start=start, end=end, status=StatusEnum("running"))
          ^^^^^^^^^^^^^^^^^
AttributeError: 'Engine' object has no attribute 'execute'
ERROR    coprs:error_handlers.py:42 Response error: 500 Request wasn't successful, there is probably a bug in the Copr code.
____________ ERROR at setup of TestCoprsShow.test_show_more_entries ____________
self = <sqlalchemy.engine.base.Connection object at 0x7fff8e4bd910>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8e4be060>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff903111c0>
parameters = [('user1', 0, 1, None)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
                    self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
                    )
            elif not effective_parameters and context.no_parameters:
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_execute_no_params:
                        if fn(cursor, str_statement, context):
                            evt_handled = True
                            break
                if not evt_handled:
                    self.dialect.do_execute_no_params(
                        cursor, str_statement, context
                    )
            else:
                effective_parameters = cast(
                    "_CoreSingleExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_execute:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_execute(
                        cursor, str_statement, effective_parameters, context
                    )
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1960: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8dea0740>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8e4be060>
    def do_execute(self, cursor, statement, parameters, context=None):
>       cursor.execute(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: user.username
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:924: IntegrityError
The above exception was the direct cause of the following exception:
self = <test_coprs_general.TestCoprsShow object at 0x7fff9099a7b0>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1233: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1960: in _exec_single_context
    self.dialect.do_execute(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8dea0740>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8e4be060>
    def do_execute(self, cursor, statement, parameters, context=None):
>       cursor.execute(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: user.username
E       [SQL: INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)]
E       [parameters: ('user1', 0, 1, None)]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:924: IntegrityError
__________ ERROR at teardown of TestCoprsShow.test_show_more_entries ___________
self = <test_coprs_general.TestCoprsShow object at 0x7fff9099a7b0>
method = <bound method TestCoprsShow.test_show_more_entries of <test_coprs_general.TestCoprsShow object at 0x7fff9099a7b0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
_______________ ERROR at setup of TestCoprsOwned.test_owned_none _______________
self = <sqlalchemy.engine.base.Connection object at 0x7fff8e4105f0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8e410e90>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff903111c0>
parameters = [('user1', 0, 1, None)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
                    self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
                    )
            elif not effective_parameters and context.no_parameters:
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_execute_no_params:
                        if fn(cursor, str_statement, context):
                            evt_handled = True
                            break
                if not evt_handled:
                    self.dialect.do_execute_no_params(
                        cursor, str_statement, context
                    )
            else:
                effective_parameters = cast(
                    "_CoreSingleExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_execute:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_execute(
                        cursor, str_statement, effective_parameters, context
                    )
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1960: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8d767740>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8e410e90>
    def do_execute(self, cursor, statement, parameters, context=None):
>       cursor.execute(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: user.username
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:924: IntegrityError
The above exception was the direct cause of the following exception:
self = <test_coprs_general.TestCoprsOwned object at 0x7fff9099a1b0>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1233: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1960: in _exec_single_context
    self.dialect.do_execute(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8d767740>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8e410e90>
    def do_execute(self, cursor, statement, parameters, context=None):
>       cursor.execute(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: user.username
E       [SQL: INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)]
E       [parameters: ('user1', 0, 1, None)]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:924: IntegrityError
_____________ ERROR at teardown of TestCoprsOwned.test_owned_none ______________
self = <test_coprs_general.TestCoprsOwned object at 0x7fff9099a1b0>
method = <bound method TestCoprsOwned.test_owned_none of <test_coprs_general.TestCoprsOwned object at 0x7fff9099a1b0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
_______________ ERROR at setup of TestCoprsOwned.test_owned_one ________________
self = <sqlalchemy.engine.base.Connection object at 0x7fff8e4123c0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8e412cf0>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff903111c0>
parameters = [('user1', 0, 1, None)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
                    self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
                    )
            elif not effective_parameters and context.no_parameters:
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_execute_no_params:
                        if fn(cursor, str_statement, context):
                            evt_handled = True
                            break
                if not evt_handled:
                    self.dialect.do_execute_no_params(
                        cursor, str_statement, context
                    )
            else:
                effective_parameters = cast(
                    "_CoreSingleExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_execute:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_execute(
                        cursor, str_statement, effective_parameters, context
                    )
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1960: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8d6e74c0>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8e412cf0>
    def do_execute(self, cursor, statement, parameters, context=None):
>       cursor.execute(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: user.username
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:924: IntegrityError
The above exception was the direct cause of the following exception:
self = <test_coprs_general.TestCoprsOwned object at 0x7fff9099a390>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1233: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1960: in _exec_single_context
    self.dialect.do_execute(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8d6e74c0>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8e412cf0>
    def do_execute(self, cursor, statement, parameters, context=None):
>       cursor.execute(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: user.username
E       [SQL: INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)]
E       [parameters: ('user1', 0, 1, None)]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:924: IntegrityError
______________ ERROR at teardown of TestCoprsOwned.test_owned_one ______________
self = <test_coprs_general.TestCoprsOwned object at 0x7fff9099a390>
method = <bound method TestCoprsOwned.test_owned_one of <test_coprs_general.TestCoprsOwned object at 0x7fff9099a390>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
______________ ERROR at setup of TestCoprNew.test_copr_new_normal ______________
self = <sqlalchemy.engine.base.Connection object at 0x7fff8daa5340>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8daa53a0>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff90310da0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8c760cc0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8daa53a0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
The above exception was the direct cause of the following exception:
self = <test_coprs_general.TestCoprNew object at 0x7fff90998fb0>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8c760cc0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8daa53a0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
E       [SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
E       [parameters: [('f18',), ('fedora-17',), ('master',)]]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
____________ ERROR at teardown of TestCoprNew.test_copr_new_normal _____________
self = <test_coprs_general.TestCoprNew object at 0x7fff90998fb0>
method = <bound method TestCoprNew.test_copr_new_normal of <test_coprs_general.TestCoprNew object at 0x7fff90998fb0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
_____________ ERROR at setup of TestCoprNew.test_copr_new_ACR_OFF ______________
self = <sqlalchemy.engine.base.Connection object at 0x7fff8da28b00>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8da28b60>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff90310da0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8d6b99c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8da28b60>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
The above exception was the direct cause of the following exception:
self = <test_coprs_general.TestCoprNew object at 0x7fff90999520>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8d6b99c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8da28b60>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
E       [SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
E       [parameters: [('f18',), ('fedora-17',), ('master',)]]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
____________ ERROR at teardown of TestCoprNew.test_copr_new_ACR_OFF ____________
self = <test_coprs_general.TestCoprNew object at 0x7fff90999520>
method = <bound method TestCoprNew.test_copr_new_ACR_OFF of <test_coprs_general.TestCoprNew object at 0x7fff90999520>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
_____ ERROR at setup of TestCoprNew.test_copr_new_exists_for_another_user ______
self = <sqlalchemy.engine.base.Connection object at 0x7fff8da2bb30>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8da2bb90>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff90310da0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8ca942c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8da2bb90>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
The above exception was the direct cause of the following exception:
self = <test_coprs_general.TestCoprNew object at 0x7fff90999580>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8ca942c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8da2bb90>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
E       [SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
E       [parameters: [('f18',), ('fedora-17',), ('master',)]]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
____ ERROR at teardown of TestCoprNew.test_copr_new_exists_for_another_user ____
self = <test_coprs_general.TestCoprNew object at 0x7fff90999580>
method = <bound method TestCoprNew.test_copr_new_exists_for_another_user of <test_coprs_general.TestCoprNew object at 0x7fff90999580>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
_______ ERROR at setup of TestCoprNew.test_copr_new_exists_for_this_user _______
self = <sqlalchemy.engine.base.Connection object at 0x7fff8da2b4a0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8da2ba40>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff90310da0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8d765b40>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8da2ba40>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
The above exception was the direct cause of the following exception:
self = <test_coprs_general.TestCoprNew object at 0x7fff909994c0>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8d765b40>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8da2ba40>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
E       [SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
E       [parameters: [('f18',), ('fedora-17',), ('master',)]]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
_____ ERROR at teardown of TestCoprNew.test_copr_new_exists_for_this_user ______
self = <test_coprs_general.TestCoprNew object at 0x7fff909994c0>
method = <bound method TestCoprNew.test_copr_new_exists_for_this_user of <test_coprs_general.TestCoprNew object at 0x7fff909994c0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
________ ERROR at setup of TestCoprNew.test_copr_new_with_initial_pkgs _________
self = <sqlalchemy.engine.base.Connection object at 0x7fff8da5cd40>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8da5cda0>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff90310da0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8dea3540>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8da5cda0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
The above exception was the direct cause of the following exception:
self = <test_coprs_general.TestCoprNew object at 0x7fff90998aa0>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8dea3540>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8da5cda0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
E       [SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
E       [parameters: [('f18',), ('fedora-17',), ('master',)]]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
_______ ERROR at teardown of TestCoprNew.test_copr_new_with_initial_pkgs _______
self = <test_coprs_general.TestCoprNew object at 0x7fff90998aa0>
method = <bound method TestCoprNew.test_copr_new_with_initial_pkgs of <test_coprs_general.TestCoprNew object at 0x7fff90998aa0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
__ ERROR at setup of TestCoprNew.test_copr_new_with_initial_pkgs_disabled_net __
self = <sqlalchemy.engine.base.Connection object at 0x7fff8da1c7a0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8da1c800>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff90310da0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8c6b74c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8da1c800>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
The above exception was the direct cause of the following exception:
self = <test_coprs_general.TestCoprNew object at 0x7fff90998ef0>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8c6b74c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8da1c800>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
E       [SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
E       [parameters: [('f18',), ('fedora-17',), ('master',)]]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
_ ERROR at teardown of TestCoprNew.test_copr_new_with_initial_pkgs_disabled_net _
self = <test_coprs_general.TestCoprNew object at 0x7fff90998ef0>
method = <bound method TestCoprNew.test_copr_new_with_initial_pkgs_disabled_net of <test_coprs_general.TestCoprNew object at 0x7fff90998ef0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
_ ERROR at setup of TestCoprNew.test_copr_new_is_allowed_even_if_deleted_has_same_name _
self = <sqlalchemy.engine.base.Connection object at 0x7fff8da1f740>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8da1f7a0>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff90310da0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8c910940>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8da1f7a0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
The above exception was the direct cause of the following exception:
self = <test_coprs_general.TestCoprNew object at 0x7fff90998d10>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8c910940>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8da1f7a0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
E       [SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
E       [parameters: [('f18',), ('fedora-17',), ('master',)]]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
_ ERROR at teardown of TestCoprNew.test_copr_new_is_allowed_even_if_deleted_has_same_name _
self = <test_coprs_general.TestCoprNew object at 0x7fff90998d10>
method = <bound method TestCoprNew.test_copr_new_is_allowed_even_if_deleted_has_same_name of <test_coprs_general.TestCoprNew object at 0x7fff90998d10>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
________ ERROR at setup of TestCoprNew.test_copr_new_contains_isolation ________
self = <sqlalchemy.engine.base.Connection object at 0x7fff8da2af60>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8da2b230>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff90310da0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8d3e4d40>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8da2b230>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
The above exception was the direct cause of the following exception:
self = <test_coprs_general.TestCoprNew object at 0x7fff909986e0>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8d3e4d40>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8da2b230>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
E       [SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
E       [parameters: [('f18',), ('fedora-17',), ('master',)]]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
______ ERROR at teardown of TestCoprNew.test_copr_new_contains_isolation _______
self = <test_coprs_general.TestCoprNew object at 0x7fff909986e0>
method = <bound method TestCoprNew.test_copr_new_contains_isolation of <test_coprs_general.TestCoprNew object at 0x7fff909986e0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
________ ERROR at teardown of TestCoprDetail.test_copr_detail_not_found ________
self = <test_coprs_general.TestCoprDetail object at 0x7fff9076ae10>
method = <bound method TestCoprDetail.test_copr_detail_not_found of <test_coprs_general.TestCoprDetail object at 0x7fff9076ae10>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
------------------------------ Captured log call -------------------------------
ERROR    coprs:error_handlers.py:102 Admin-only exception
Request: GET http://localhost.localdomain/coprs/foo/bar/
User: None
Traceback (most recent call last):
  File "/usr/lib/python3.12/site-packages/flask/app.py", line 870, in full_dispatch_request
    rv = self.dispatch_request()
         ^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.12/site-packages/flask/app.py", line 855, in dispatch_request
    return self.ensure_sync(self.view_functions[rule.endpoint])(**view_args)  # type: ignore[no-any-return]
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/builddir/build/BUILD/copr-frontend-1.204/coprs_frontend/coprs/views/misc.py", line 253, in wrapper
    copr = ComplexLogic.get_copr(username, coprname, with_mock_chroots=True)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/builddir/build/BUILD/copr-frontend-1.204/coprs_frontend/coprs/logic/complex_logic.py", line 201, in get_copr
    return CoprsLogic.get(user_name, copr_name, **kwargs).filter(Copr.group_id.is_(None)).one()
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/query.py", line 2777, in one
    return self._iter().one()  # type: ignore
           ^^^^^^^^^^^^
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/query.py", line 2826, in _iter
    result: Union[ScalarResult[_T], Result[_T]] = self.session.execute(
                                                  ^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py", line 2306, in execute
    return self._execute_internal(
           ^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py", line 2191, in _execute_internal
    result: Result[Any] = compile_state_cls.orm_execute_statement(
                          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/context.py", line 293, in orm_execute_statement
    result = conn.execute(
             ^^^^^^^^^^^^^
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py", line 1408, in execute
    return meth(
           ^^^^^
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py", line 513, in _execute_on_connection
    return connection._execute_clauseelement(
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py", line 1622, in _execute_clauseelement
    compiled_sql, extracted_params, cache_hit = elem._compile_w_cache(
                                                ^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py", line 701, in _compile_w_cache
    compiled_sql = self._compiler(
                   ^^^^^^^^^^^^^^^
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py", line 314, in _compiler
    return dialect.statement_compiler(dialect, self, **kw)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/sql/compiler.py", line 1424, in __init__
    Compiled.__init__(self, dialect, statement, **kwargs)
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/sql/compiler.py", line 865, in __init__
    self.string = self.process(self.statement, **compile_kwargs)
                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/sql/compiler.py", line 910, in process
    return obj._compiler_dispatch(self, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/sql/visitors.py", line 141, in _compiler_dispatch
    return meth(self, **kw)  # type: ignore  # noqa: E501
           ^^^^^^^^^^^^^^^^
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/sql/compiler.py", line 4641, in visit_select
    compile_state = select_stmt._compile_state_factory(
                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/sql/base.py", line 684, in create_for_statement
    return klass.create_for_statement(statement, compiler, **kw)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/context.py", line 1162, in create_for_statement
    self._setup_for_generate()
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/context.py", line 1197, in _setup_for_generate
    self._join(query._setup_joins, self._entities)
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/context.py", line 1766, in _join
    raise sa_exc.InvalidRequestError(
sqlalchemy.exc.InvalidRequestError: No 'on clause' argument may be passed when joining to a relationship path as a target
ERROR    coprs:error_handlers.py:42 Response error: 500 Database error, contact admin
___________ ERROR at setup of TestCoprDetail.test_copr_detail_normal ___________
self = <sqlalchemy.engine.base.Connection object at 0x7fff8dfb1e20>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8dfb06e0>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff903111c0>
parameters = [('user1', 0, 1, None)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
                    self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
                    )
            elif not effective_parameters and context.no_parameters:
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_execute_no_params:
                        if fn(cursor, str_statement, context):
                            evt_handled = True
                            break
                if not evt_handled:
                    self.dialect.do_execute_no_params(
                        cursor, str_statement, context
                    )
            else:
                effective_parameters = cast(
                    "_CoreSingleExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_execute:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_execute(
                        cursor, str_statement, effective_parameters, context
                    )
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1960: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8d765a40>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8dfb06e0>
    def do_execute(self, cursor, statement, parameters, context=None):
>       cursor.execute(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: user.username
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:924: IntegrityError
The above exception was the direct cause of the following exception:
self = <test_coprs_general.TestCoprDetail object at 0x7fff9076bc50>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1233: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1960: in _exec_single_context
    self.dialect.do_execute(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8d765a40>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8dfb06e0>
    def do_execute(self, cursor, statement, parameters, context=None):
>       cursor.execute(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: user.username
E       [SQL: INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)]
E       [parameters: ('user1', 0, 1, None)]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:924: IntegrityError
_________ ERROR at teardown of TestCoprDetail.test_copr_detail_normal __________
self = <test_coprs_general.TestCoprDetail object at 0x7fff9076bc50>
method = <bound method TestCoprDetail.test_copr_detail_normal of <test_coprs_general.TestCoprDetail object at 0x7fff9076bc50>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
______ ERROR at setup of TestCoprDetail.test_copr_detail_contains_builds _______
self = <sqlalchemy.engine.base.Connection object at 0x7fff8df3c3b0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8e4bd580>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff90310da0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8d6e74c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8e4bd580>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
The above exception was the direct cause of the following exception:
self = <test_coprs_general.TestCoprDetail object at 0x7fff9076be30>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8d6e74c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8e4bd580>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
E       [SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
E       [parameters: [('f18',), ('fedora-17',), ('master',)]]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
_____ ERROR at teardown of TestCoprDetail.test_copr_detail_contains_builds _____
self = <test_coprs_general.TestCoprDetail object at 0x7fff9076be30>
method = <bound method TestCoprDetail.test_copr_detail_contains_builds of <test_coprs_general.TestCoprDetail object at 0x7fff9076be30>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
_ ERROR at setup of TestCoprDetail.test_copr_detail_anonymous_doesnt_contain_permissions_table_when_no_permissions _
self = <sqlalchemy.engine.base.Connection object at 0x7fff8df12cf0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8deb73b0>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff903111c0>
parameters = [('user1', 0, 1, None)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
                    self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
                    )
            elif not effective_parameters and context.no_parameters:
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_execute_no_params:
                        if fn(cursor, str_statement, context):
                            evt_handled = True
                            break
                if not evt_handled:
                    self.dialect.do_execute_no_params(
                        cursor, str_statement, context
                    )
            else:
                effective_parameters = cast(
                    "_CoreSingleExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_execute:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_execute(
                        cursor, str_statement, effective_parameters, context
                    )
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1960: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8dedbac0>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8deb73b0>
    def do_execute(self, cursor, statement, parameters, context=None):
>       cursor.execute(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: user.username
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:924: IntegrityError
The above exception was the direct cause of the following exception:
self = <test_coprs_general.TestCoprDetail object at 0x7fff9076ae40>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1233: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1960: in _exec_single_context
    self.dialect.do_execute(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8dedbac0>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8deb73b0>
    def do_execute(self, cursor, statement, parameters, context=None):
>       cursor.execute(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: user.username
E       [SQL: INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)]
E       [parameters: ('user1', 0, 1, None)]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:924: IntegrityError
_ ERROR at teardown of TestCoprDetail.test_copr_detail_anonymous_doesnt_contain_permissions_table_when_no_permissions _
self = <test_coprs_general.TestCoprDetail object at 0x7fff9076ae40>
method = <bound method TestCoprDetail.test_copr_detail_anonymous_doesnt_contain_permissions_table_when_no_permissions of <test_coprs_general.TestCoprDetail object at 0x7fff9076ae40>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
_ ERROR at setup of TestCoprDetail.test_copr_detail_contains_permissions_table _
self = <sqlalchemy.engine.base.Connection object at 0x7fff8da1f560>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8da1cec0>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff903111c0>
parameters = [('user1', 0, 1, None)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
                    self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
                    )
            elif not effective_parameters and context.no_parameters:
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_execute_no_params:
                        if fn(cursor, str_statement, context):
                            evt_handled = True
                            break
                if not evt_handled:
                    self.dialect.do_execute_no_params(
                        cursor, str_statement, context
                    )
            else:
                effective_parameters = cast(
                    "_CoreSingleExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_execute:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_execute(
                        cursor, str_statement, effective_parameters, context
                    )
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1960: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8c6b6740>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8da1cec0>
    def do_execute(self, cursor, statement, parameters, context=None):
>       cursor.execute(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: user.username
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:924: IntegrityError
The above exception was the direct cause of the following exception:
self = <test_coprs_general.TestCoprDetail object at 0x7fff90998a10>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1233: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1960: in _exec_single_context
    self.dialect.do_execute(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8c6b6740>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8da1cec0>
    def do_execute(self, cursor, statement, parameters, context=None):
>       cursor.execute(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: user.username
E       [SQL: INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)]
E       [parameters: ('user1', 0, 1, None)]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:924: IntegrityError
_ ERROR at teardown of TestCoprDetail.test_copr_detail_contains_permissions_table _
self = <test_coprs_general.TestCoprDetail object at 0x7fff90998a10>
method = <bound method TestCoprDetail.test_copr_detail_contains_permissions_table of <test_coprs_general.TestCoprDetail object at 0x7fff90998a10>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
__ ERROR at setup of TestCoprDetail.test_detail_has_correct_permissions_form ___
self = <sqlalchemy.engine.base.Connection object at 0x7fff8e5f71d0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8e5f5190>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff903111c0>
parameters = [('user1', 0, 1, None)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
                    self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
                    )
            elif not effective_parameters and context.no_parameters:
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_execute_no_params:
                        if fn(cursor, str_statement, context):
                            evt_handled = True
                            break
                if not evt_handled:
                    self.dialect.do_execute_no_params(
                        cursor, str_statement, context
                    )
            else:
                effective_parameters = cast(
                    "_CoreSingleExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_execute:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_execute(
                        cursor, str_statement, effective_parameters, context
                    )
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1960: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8d6db9c0>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8e5f5190>
    def do_execute(self, cursor, statement, parameters, context=None):
>       cursor.execute(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: user.username
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:924: IntegrityError
The above exception was the direct cause of the following exception:
self = <test_coprs_general.TestCoprDetail object at 0x7fff9076bfe0>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1233: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1960: in _exec_single_context
    self.dialect.do_execute(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8d6db9c0>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8e5f5190>
    def do_execute(self, cursor, statement, parameters, context=None):
>       cursor.execute(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: user.username
E       [SQL: INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)]
E       [parameters: ('user1', 0, 1, None)]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:924: IntegrityError
_ ERROR at teardown of TestCoprDetail.test_detail_has_correct_permissions_form _
self = <test_coprs_general.TestCoprDetail object at 0x7fff9076bfe0>
method = <bound method TestCoprDetail.test_detail_has_correct_permissions_form of <test_coprs_general.TestCoprDetail object at 0x7fff9076bfe0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
_ ERROR at setup of TestCoprDetail.test_copr_detail_doesnt_show_cancel_build_for_anonymous _
self = <sqlalchemy.engine.base.Connection object at 0x7fff8e6bd8b0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8e6bd9d0>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff903111c0>
parameters = [('user1', 0, 1, None)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
                    self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
                    )
            elif not effective_parameters and context.no_parameters:
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_execute_no_params:
                        if fn(cursor, str_statement, context):
                            evt_handled = True
                            break
                if not evt_handled:
                    self.dialect.do_execute_no_params(
                        cursor, str_statement, context
                    )
            else:
                effective_parameters = cast(
                    "_CoreSingleExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_execute:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_execute(
                        cursor, str_statement, effective_parameters, context
                    )
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1960: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8c93eac0>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8e6bd9d0>
    def do_execute(self, cursor, statement, parameters, context=None):
>       cursor.execute(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: user.username
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:924: IntegrityError
The above exception was the direct cause of the following exception:
self = <test_coprs_general.TestCoprDetail object at 0x7fff9076bb90>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1233: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1960: in _exec_single_context
    self.dialect.do_execute(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8c93eac0>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8e6bd9d0>
    def do_execute(self, cursor, statement, parameters, context=None):
>       cursor.execute(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: user.username
E       [SQL: INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)]
E       [parameters: ('user1', 0, 1, None)]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:924: IntegrityError
_ ERROR at teardown of TestCoprDetail.test_copr_detail_doesnt_show_cancel_build_for_anonymous _
self = <test_coprs_general.TestCoprDetail object at 0x7fff9076bb90>
method = <bound method TestCoprDetail.test_copr_detail_doesnt_show_cancel_build_for_anonymous of <test_coprs_general.TestCoprDetail object at 0x7fff9076bb90>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
_ ERROR at setup of TestCoprDetail.test_copr_detail_doesnt_allow_non_submitter_to_cancel_build _
self = <sqlalchemy.engine.base.Connection object at 0x7fff8e658fb0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8e659040>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff90310da0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8d990f40>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8e659040>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
The above exception was the direct cause of the following exception:
self = <test_coprs_general.TestCoprDetail object at 0x7fff9076be90>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8d990f40>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8e659040>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
E       [SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
E       [parameters: [('f18',), ('fedora-17',), ('master',)]]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
_ ERROR at teardown of TestCoprDetail.test_copr_detail_doesnt_allow_non_submitter_to_cancel_build _
self = <test_coprs_general.TestCoprDetail object at 0x7fff9076be90>
method = <bound method TestCoprDetail.test_copr_detail_doesnt_allow_non_submitter_to_cancel_build of <test_coprs_general.TestCoprDetail object at 0x7fff9076be90>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
_ ERROR at setup of TestCoprDetail.test_copr_detail_allows_submitter_to_cancel_build _
self = <sqlalchemy.engine.base.Connection object at 0x7fff8e679670>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8e679700>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff90310da0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8c93f340>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8e679700>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
The above exception was the direct cause of the following exception:
self = <test_coprs_general.TestCoprDetail object at 0x7fff9076b4a0>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8c93f340>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8e679700>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
E       [SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
E       [parameters: [('f18',), ('fedora-17',), ('master',)]]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
_ ERROR at teardown of TestCoprDetail.test_copr_detail_allows_submitter_to_cancel_build _
self = <test_coprs_general.TestCoprDetail object at 0x7fff9076b4a0>
method = <bound method TestCoprDetail.test_copr_detail_allows_submitter_to_cancel_build of <test_coprs_general.TestCoprDetail object at 0x7fff9076b4a0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
_ ERROR at teardown of TestCoprDetail.test_codeblock_html_in_project_description _
self = <test_coprs_general.TestCoprDetail object at 0x7fff9076ba10>
method = <bound method TestCoprDetail.test_codeblock_html_in_project_description of <test_coprs_general.TestCoprDetail object at 0x7fff9076ba10>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
------------------------------ Captured log call -------------------------------
ERROR    coprs:error_handlers.py:102 Admin-only exception
Request: GET http://localhost.localdomain/coprs/user1/foocopr/
User: None
Traceback (most recent call last):
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py", line 1960, in _exec_single_context
    self.dialect.do_execute(
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py", line 924, in do_execute
    cursor.execute(statement, parameters)
sqlite3.IntegrityError: UNIQUE constraint failed: user.username
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
  File "/usr/lib/python3.12/site-packages/flask/app.py", line 870, in full_dispatch_request
    rv = self.dispatch_request()
         ^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.12/site-packages/flask/app.py", line 855, in dispatch_request
    return self.ensure_sync(self.view_functions[rule.endpoint])(**view_args)  # type: ignore[no-any-return]
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/builddir/build/BUILD/copr-frontend-1.204/coprs_frontend/coprs/views/misc.py", line 253, in wrapper
    copr = ComplexLogic.get_copr(username, coprname, with_mock_chroots=True)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/builddir/build/BUILD/copr-frontend-1.204/coprs_frontend/coprs/logic/complex_logic.py", line 201, in get_copr
    return CoprsLogic.get(user_name, copr_name, **kwargs).filter(Copr.group_id.is_(None)).one()
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/query.py", line 2777, in one
    return self._iter().one()  # type: ignore
           ^^^^^^^^^^^^
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/query.py", line 2826, in _iter
    result: Union[ScalarResult[_T], Result[_T]] = self.session.execute(
                                                  ^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py", line 2306, in execute
    return self._execute_internal(
           ^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py", line 2170, in _execute_internal
    ) = compile_state_cls.orm_pre_session_exec(
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/context.py", line 549, in orm_pre_session_exec
    session._autoflush()
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py", line 3005, in _autoflush
    raise e.with_traceback(sys.exc_info()[2])
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py", line 2994, in _autoflush
    self.flush()
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py", line 4296, in flush
    self._flush(objects)
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py", line 4431, in _flush
    with util.safe_reraise():
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py", line 146, in __exit__
    raise exc_value.with_traceback(exc_tb)
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py", line 4392, in _flush
    flush_context.execute()
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py", line 466, in execute
    rec.execute(self)
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py", line 642, in execute
    util.preloaded.orm_persistence.save_obj(
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py", line 93, in save_obj
    _emit_insert_statements(
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py", line 1233, in _emit_insert_statements
    result = connection.execute(
             ^^^^^^^^^^^^^^^^^^^
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py", line 1408, in execute
    return meth(
           ^^^^^
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py", line 513, in _execute_on_connection
    return connection._execute_clauseelement(
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py", line 1630, in _execute_clauseelement
    ret = self._execute_context(
          ^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py", line 1839, in _execute_context
    return self._exec_single_context(
           ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py", line 1979, in _exec_single_context
    self._handle_dbapi_exception(
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py", line 2335, in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py", line 1960, in _exec_single_context
    self.dialect.do_execute(
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py", line 924, in do_execute
    cursor.execute(statement, parameters)
sqlalchemy.exc.IntegrityError: (raised as a result of Query-invoked autoflush; consider using a session.no_autoflush block if this flush is occurring prematurely)
(sqlite3.IntegrityError) UNIQUE constraint failed: user.username
[SQL: INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)]
[parameters: ('user1', 0, 1, None)]
(Background on this error at: https://sqlalche.me/e/20/gkpj)
ERROR    coprs:error_handlers.py:42 Response error: gkpj Database error, contact admin
_____________ ERROR at setup of TestCoprEdit.test_edit_prefills_id _____________
self = <sqlalchemy.engine.base.Connection object at 0x7fff8e699ac0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8e69a390>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff903111c0>
parameters = [('user1', 0, 1, None)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
                    self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
                    )
            elif not effective_parameters and context.no_parameters:
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_execute_no_params:
                        if fn(cursor, str_statement, context):
                            evt_handled = True
                            break
                if not evt_handled:
                    self.dialect.do_execute_no_params(
                        cursor, str_statement, context
                    )
            else:
                effective_parameters = cast(
                    "_CoreSingleExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_execute:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_execute(
                        cursor, str_statement, effective_parameters, context
                    )
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1960: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8cf5aec0>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8e69a390>
    def do_execute(self, cursor, statement, parameters, context=None):
>       cursor.execute(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: user.username
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:924: IntegrityError
The above exception was the direct cause of the following exception:
self = <test_coprs_general.TestCoprEdit object at 0x7fff90769e50>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1233: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1960: in _exec_single_context
    self.dialect.do_execute(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8cf5aec0>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8e69a390>
    def do_execute(self, cursor, statement, parameters, context=None):
>       cursor.execute(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: user.username
E       [SQL: INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)]
E       [parameters: ('user1', 0, 1, None)]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:924: IntegrityError
___________ ERROR at teardown of TestCoprEdit.test_edit_prefills_id ____________
self = <test_coprs_general.TestCoprEdit object at 0x7fff90769e50>
method = <bound method TestCoprEdit.test_edit_prefills_id of <test_coprs_general.TestCoprEdit object at 0x7fff90769e50>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
___________ ERROR at setup of TestCoprUpdate.test_update_no_changes ____________
self = <sqlalchemy.engine.base.Connection object at 0x7fff8ddeac90>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8df10230>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff90310da0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8c6b7a40>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8df10230>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
The above exception was the direct cause of the following exception:
self = <test_coprs_general.TestCoprUpdate object at 0x7fff90769af0>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8c6b7a40>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8df10230>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
E       [SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
E       [parameters: [('f18',), ('fedora-17',), ('master',)]]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
__________ ERROR at teardown of TestCoprUpdate.test_update_no_changes __________
self = <test_coprs_general.TestCoprUpdate object at 0x7fff90769af0>
method = <bound method TestCoprUpdate.test_update_no_changes of <test_coprs_general.TestCoprUpdate object at 0x7fff90769af0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
_________ ERROR at setup of TestCoprUpdate.test_copr_admin_can_update __________
self = <sqlalchemy.engine.base.Connection object at 0x7fff8da2a930>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8da2bda0>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff90310da0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8cfb87c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8da2bda0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
The above exception was the direct cause of the following exception:
self = <test_coprs_general.TestCoprUpdate object at 0x7fff90769a00>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8cfb87c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8da2bda0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
E       [SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
E       [parameters: [('f18',), ('fedora-17',), ('master',)]]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
________ ERROR at teardown of TestCoprUpdate.test_copr_admin_can_update ________
self = <test_coprs_general.TestCoprUpdate object at 0x7fff90769a00>
method = <bound method TestCoprUpdate.test_copr_admin_can_update of <test_coprs_general.TestCoprUpdate object at 0x7fff90769a00>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
________ ERROR at setup of TestCoprUpdate.test_update_multiple_chroots _________
self = <sqlalchemy.engine.base.Connection object at 0x7fff8e6bc170>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8e6be960>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff90310da0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8d6d80c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8e6be960>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
The above exception was the direct cause of the following exception:
self = <test_coprs_general.TestCoprUpdate object at 0x7fff90768c80>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8d6d80c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8e6be960>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
E       [SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
E       [parameters: [('f18',), ('fedora-17',), ('master',)]]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
_______ ERROR at teardown of TestCoprUpdate.test_update_multiple_chroots _______
self = <test_coprs_general.TestCoprUpdate object at 0x7fff90768c80>
method = <bound method TestCoprUpdate.test_update_multiple_chroots of <test_coprs_general.TestCoprUpdate object at 0x7fff90768c80>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
____ ERROR at setup of TestCoprUpdate.test_update_deletes_multiple_chroots _____
self = <sqlalchemy.engine.base.Connection object at 0x7fff8da1f620>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8da1f7a0>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff90310da0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8c7388c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8da1f7a0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
The above exception was the direct cause of the following exception:
self = <test_coprs_general.TestCoprUpdate object at 0x7fff90769010>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8c7388c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8da1f7a0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
E       [SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
E       [parameters: [('f18',), ('fedora-17',), ('master',)]]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
___ ERROR at teardown of TestCoprUpdate.test_update_deletes_multiple_chroots ___
self = <test_coprs_general.TestCoprUpdate object at 0x7fff90769010>
method = <bound method TestCoprUpdate.test_update_deletes_multiple_chroots of <test_coprs_general.TestCoprUpdate object at 0x7fff90769010>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
______ ERROR at setup of TestCoprUpdate.test_changed_ACR_produces_action _______
self = <sqlalchemy.engine.base.Connection object at 0x7fff8e69ba70>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8e69bb00>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff90310da0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8d990940>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8e69bb00>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
The above exception was the direct cause of the following exception:
self = <test_coprs_general.TestCoprUpdate object at 0x7fff907682c0>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8d990940>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8e69bb00>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
E       [SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
E       [parameters: [('f18',), ('fedora-17',), ('master',)]]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
_____ ERROR at teardown of TestCoprUpdate.test_changed_ACR_produces_action _____
self = <test_coprs_general.TestCoprUpdate object at 0x7fff907682c0>
method = <bound method TestCoprUpdate.test_changed_ACR_produces_action of <test_coprs_general.TestCoprUpdate object at 0x7fff907682c0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
___________ ERROR at setup of TestCoprApplyForPermissions.test_apply ___________
self = <sqlalchemy.engine.base.Connection object at 0x7fff8e604ef0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8e605970>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff903111c0>
parameters = [('user1', 0, 1, None)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
                    self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
                    )
            elif not effective_parameters and context.no_parameters:
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_execute_no_params:
                        if fn(cursor, str_statement, context):
                            evt_handled = True
                            break
                if not evt_handled:
                    self.dialect.do_execute_no_params(
                        cursor, str_statement, context
                    )
            else:
                effective_parameters = cast(
                    "_CoreSingleExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_execute:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_execute(
                        cursor, str_statement, effective_parameters, context
                    )
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1960: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8c93de40>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8e605970>
    def do_execute(self, cursor, statement, parameters, context=None):
>       cursor.execute(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: user.username
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:924: IntegrityError
The above exception was the direct cause of the following exception:
self = <test_coprs_general.TestCoprApplyForPermissions object at 0x7fff90768bf0>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1233: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1960: in _exec_single_context
    self.dialect.do_execute(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8c93de40>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8e605970>
    def do_execute(self, cursor, statement, parameters, context=None):
>       cursor.execute(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: user.username
E       [SQL: INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)]
E       [parameters: ('user1', 0, 1, None)]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:924: IntegrityError
_________ ERROR at teardown of TestCoprApplyForPermissions.test_apply __________
self = <test_coprs_general.TestCoprApplyForPermissions object at 0x7fff90768bf0>
method = <bound method TestCoprApplyForPermissions.test_apply of <test_coprs_general.TestCoprApplyForPermissions object at 0x7fff90768bf0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
_ ERROR at setup of TestCoprApplyForPermissions.test_apply_doesnt_lower_other_values_from_admin_to_request _
self = <sqlalchemy.engine.base.Connection object at 0x7fff8e6253a0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8e624260>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff903111c0>
parameters = [('user1', 0, 1, None)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
                    self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
                    )
            elif not effective_parameters and context.no_parameters:
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_execute_no_params:
                        if fn(cursor, str_statement, context):
                            evt_handled = True
                            break
                if not evt_handled:
                    self.dialect.do_execute_no_params(
                        cursor, str_statement, context
                    )
            else:
                effective_parameters = cast(
                    "_CoreSingleExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_execute:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_execute(
                        cursor, str_statement, effective_parameters, context
                    )
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1960: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8c615440>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8e624260>
    def do_execute(self, cursor, statement, parameters, context=None):
>       cursor.execute(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: user.username
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:924: IntegrityError
The above exception was the direct cause of the following exception:
self = <test_coprs_general.TestCoprApplyForPermissions object at 0x7fff90768050>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1233: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1960: in _exec_single_context
    self.dialect.do_execute(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8c615440>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8e624260>
    def do_execute(self, cursor, statement, parameters, context=None):
>       cursor.execute(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: user.username
E       [SQL: INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)]
E       [parameters: ('user1', 0, 1, None)]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:924: IntegrityError
_ ERROR at teardown of TestCoprApplyForPermissions.test_apply_doesnt_lower_other_values_from_admin_to_request _
self = <test_coprs_general.TestCoprApplyForPermissions object at 0x7fff90768050>
method = <bound method TestCoprApplyForPermissions.test_apply_doesnt_lower_other_values_from_admin_to_request of <test_coprs_general.TestCoprApplyForPermissions object at 0x7fff90768050>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
______ ERROR at setup of TestCoprUpdatePermissions.test_cancel_permission ______
self = <sqlalchemy.engine.base.Connection object at 0x7fff8d8dc230>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8d8dc4a0>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff903111c0>
parameters = [('user1', 0, 1, None)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
                    self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
                    )
            elif not effective_parameters and context.no_parameters:
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_execute_no_params:
                        if fn(cursor, str_statement, context):
                            evt_handled = True
                            break
                if not evt_handled:
                    self.dialect.do_execute_no_params(
                        cursor, str_statement, context
                    )
            else:
                effective_parameters = cast(
                    "_CoreSingleExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_execute:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_execute(
                        cursor, str_statement, effective_parameters, context
                    )
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1960: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8d767a40>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8d8dc4a0>
    def do_execute(self, cursor, statement, parameters, context=None):
>       cursor.execute(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: user.username
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:924: IntegrityError
The above exception was the direct cause of the following exception:
self = <test_coprs_general.TestCoprUpdatePermissions object at 0x7fff90743b60>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1233: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1960: in _exec_single_context
    self.dialect.do_execute(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8d767a40>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8d8dc4a0>
    def do_execute(self, cursor, statement, parameters, context=None):
>       cursor.execute(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: user.username
E       [SQL: INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)]
E       [parameters: ('user1', 0, 1, None)]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:924: IntegrityError
____ ERROR at teardown of TestCoprUpdatePermissions.test_cancel_permission _____
self = <test_coprs_general.TestCoprUpdatePermissions object at 0x7fff90743b60>
method = <bound method TestCoprUpdatePermissions.test_cancel_permission of <test_coprs_general.TestCoprUpdatePermissions object at 0x7fff90743b60>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
___ ERROR at setup of TestCoprUpdatePermissions.test_update_more_permissions ___
self = <sqlalchemy.engine.base.Connection object at 0x7fff8d8de900>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8d8df200>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff903111c0>
parameters = [('user1', 0, 1, None)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
                    self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
                    )
            elif not effective_parameters and context.no_parameters:
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_execute_no_params:
                        if fn(cursor, str_statement, context):
                            evt_handled = True
                            break
                if not evt_handled:
                    self.dialect.do_execute_no_params(
                        cursor, str_statement, context
                    )
            else:
                effective_parameters = cast(
                    "_CoreSingleExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_execute:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_execute(
                        cursor, str_statement, effective_parameters, context
                    )
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1960: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8c615ac0>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8d8df200>
    def do_execute(self, cursor, statement, parameters, context=None):
>       cursor.execute(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: user.username
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:924: IntegrityError
The above exception was the direct cause of the following exception:
self = <test_coprs_general.TestCoprUpdatePermissions object at 0x7fff908e4da0>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1233: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1960: in _exec_single_context
    self.dialect.do_execute(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8c615ac0>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8d8df200>
    def do_execute(self, cursor, statement, parameters, context=None):
>       cursor.execute(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: user.username
E       [SQL: INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)]
E       [parameters: ('user1', 0, 1, None)]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:924: IntegrityError
_ ERROR at teardown of TestCoprUpdatePermissions.test_update_more_permissions __
self = <test_coprs_general.TestCoprUpdatePermissions object at 0x7fff908e4da0>
method = <bound method TestCoprUpdatePermissions.test_update_more_permissions of <test_coprs_general.TestCoprUpdatePermissions object at 0x7fff908e4da0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
_ ERROR at setup of TestCoprUpdatePermissions.test_copr_admin_can_update_permissions _
self = <sqlalchemy.engine.base.Connection object at 0x7fff8d921430>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8d921d30>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff903111c0>
parameters = [('user1', 0, 1, None)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
                    self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
                    )
            elif not effective_parameters and context.no_parameters:
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_execute_no_params:
                        if fn(cursor, str_statement, context):
                            evt_handled = True
                            break
                if not evt_handled:
                    self.dialect.do_execute_no_params(
                        cursor, str_statement, context
                    )
            else:
                effective_parameters = cast(
                    "_CoreSingleExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_execute:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_execute(
                        cursor, str_statement, effective_parameters, context
                    )
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1960: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8c9fc3c0>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8d921d30>
    def do_execute(self, cursor, statement, parameters, context=None):
>       cursor.execute(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: user.username
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:924: IntegrityError
The above exception was the direct cause of the following exception:
self = <test_coprs_general.TestCoprUpdatePermissions object at 0x7fff908e4e00>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1233: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1960: in _exec_single_context
    self.dialect.do_execute(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8c9fc3c0>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8d921d30>
    def do_execute(self, cursor, statement, parameters, context=None):
>       cursor.execute(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: user.username
E       [SQL: INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)]
E       [parameters: ('user1', 0, 1, None)]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:924: IntegrityError
_ ERROR at teardown of TestCoprUpdatePermissions.test_copr_admin_can_update_permissions _
self = <test_coprs_general.TestCoprUpdatePermissions object at 0x7fff908e4e00>
method = <bound method TestCoprUpdatePermissions.test_copr_admin_can_update_permissions of <test_coprs_general.TestCoprUpdatePermissions object at 0x7fff908e4e00>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
_ ERROR at setup of TestCoprUpdatePermissions.test_copr_admin_can_give_up_his_permissions _
self = <sqlalchemy.engine.base.Connection object at 0x7fff8d9b0950>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8d9b1250>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff903111c0>
parameters = [('user1', 0, 1, None)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
                    self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
                    )
            elif not effective_parameters and context.no_parameters:
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_execute_no_params:
                        if fn(cursor, str_statement, context):
                            evt_handled = True
                            break
                if not evt_handled:
                    self.dialect.do_execute_no_params(
                        cursor, str_statement, context
                    )
            else:
                effective_parameters = cast(
                    "_CoreSingleExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_execute:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_execute(
                        cursor, str_statement, effective_parameters, context
                    )
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1960: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8c841640>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8d9b1250>
    def do_execute(self, cursor, statement, parameters, context=None):
>       cursor.execute(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: user.username
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:924: IntegrityError
The above exception was the direct cause of the following exception:
self = <test_coprs_general.TestCoprUpdatePermissions object at 0x7fff908e4980>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1233: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1960: in _exec_single_context
    self.dialect.do_execute(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8c841640>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8d9b1250>
    def do_execute(self, cursor, statement, parameters, context=None):
>       cursor.execute(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: user.username
E       [SQL: INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)]
E       [parameters: ('user1', 0, 1, None)]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:924: IntegrityError
_ ERROR at teardown of TestCoprUpdatePermissions.test_copr_admin_can_give_up_his_permissions _
self = <test_coprs_general.TestCoprUpdatePermissions object at 0x7fff908e4980>
method = <bound method TestCoprUpdatePermissions.test_copr_admin_can_give_up_his_permissions of <test_coprs_general.TestCoprUpdatePermissions object at 0x7fff908e4980>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
_________________ ERROR at setup of TestCoprDelete.test_delete _________________
self = <sqlalchemy.engine.base.Connection object at 0x7fff8da2b5f0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8da2bdd0>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff903111c0>
parameters = [('user1', 0, 1, None)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
                    self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
                    )
            elif not effective_parameters and context.no_parameters:
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_execute_no_params:
                        if fn(cursor, str_statement, context):
                            evt_handled = True
                            break
                if not evt_handled:
                    self.dialect.do_execute_no_params(
                        cursor, str_statement, context
                    )
            else:
                effective_parameters = cast(
                    "_CoreSingleExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_execute:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_execute(
                        cursor, str_statement, effective_parameters, context
                    )
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1960: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8c6b4940>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8da2bdd0>
    def do_execute(self, cursor, statement, parameters, context=None):
>       cursor.execute(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: user.username
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:924: IntegrityError
The above exception was the direct cause of the following exception:
self = <test_coprs_general.TestCoprDelete object at 0x7fff908d4230>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1233: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1960: in _exec_single_context
    self.dialect.do_execute(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8c6b4940>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8da2bdd0>
    def do_execute(self, cursor, statement, parameters, context=None):
>       cursor.execute(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: user.username
E       [SQL: INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)]
E       [parameters: ('user1', 0, 1, None)]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:924: IntegrityError
_______________ ERROR at teardown of TestCoprDelete.test_delete ________________
self = <test_coprs_general.TestCoprDelete object at 0x7fff908d4230>
method = <bound method TestCoprDelete.test_delete of <test_coprs_general.TestCoprDelete object at 0x7fff908d4230>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
_ ERROR at setup of TestCoprDelete.test_copr_delete_does_not_delete_if_verify_filled_wrongly _
self = <sqlalchemy.engine.base.Connection object at 0x7fff8d8dfad0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8d8dc890>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff903111c0>
parameters = [('user1', 0, 1, None)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
                    self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
                    )
            elif not effective_parameters and context.no_parameters:
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_execute_no_params:
                        if fn(cursor, str_statement, context):
                            evt_handled = True
                            break
                if not evt_handled:
                    self.dialect.do_execute_no_params(
                        cursor, str_statement, context
                    )
            else:
                effective_parameters = cast(
                    "_CoreSingleExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_execute:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_execute(
                        cursor, str_statement, effective_parameters, context
                    )
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1960: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8c842640>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8d8dc890>
    def do_execute(self, cursor, statement, parameters, context=None):
>       cursor.execute(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: user.username
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:924: IntegrityError
The above exception was the direct cause of the following exception:
self = <test_coprs_general.TestCoprDelete object at 0x7fff908d6120>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1233: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1960: in _exec_single_context
    self.dialect.do_execute(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8c842640>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8d8dc890>
    def do_execute(self, cursor, statement, parameters, context=None):
>       cursor.execute(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: user.username
E       [SQL: INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)]
E       [parameters: ('user1', 0, 1, None)]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:924: IntegrityError
_ ERROR at teardown of TestCoprDelete.test_copr_delete_does_not_delete_if_verify_filled_wrongly _
self = <test_coprs_general.TestCoprDelete object at 0x7fff908d6120>
method = <bound method TestCoprDelete.test_copr_delete_does_not_delete_if_verify_filled_wrongly of <test_coprs_general.TestCoprDelete object at 0x7fff908d6120>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
__________ ERROR at setup of TestCoprDelete.test_non_user_cant_delete __________
self = <sqlalchemy.engine.base.Connection object at 0x7fff8e624950>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8e6268a0>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff903111c0>
parameters = [('user1', 0, 1, None)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
                    self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
                    )
            elif not effective_parameters and context.no_parameters:
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_execute_no_params:
                        if fn(cursor, str_statement, context):
                            evt_handled = True
                            break
                if not evt_handled:
                    self.dialect.do_execute_no_params(
                        cursor, str_statement, context
                    )
            else:
                effective_parameters = cast(
                    "_CoreSingleExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_execute:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_execute(
                        cursor, str_statement, effective_parameters, context
                    )
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1960: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8c8ced40>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8e6268a0>
    def do_execute(self, cursor, statement, parameters, context=None):
>       cursor.execute(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: user.username
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:924: IntegrityError
The above exception was the direct cause of the following exception:
self = <test_coprs_general.TestCoprDelete object at 0x7fff908d7170>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1233: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1960: in _exec_single_context
    self.dialect.do_execute(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8c8ced40>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8e6268a0>
    def do_execute(self, cursor, statement, parameters, context=None):
>       cursor.execute(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: user.username
E       [SQL: INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)]
E       [parameters: ('user1', 0, 1, None)]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:924: IntegrityError
________ ERROR at teardown of TestCoprDelete.test_non_user_cant_delete _________
self = <test_coprs_general.TestCoprDelete object at 0x7fff908d7170>
method = <bound method TestCoprDelete.test_non_user_cant_delete of <test_coprs_general.TestCoprDelete object at 0x7fff908d7170>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
__ ERROR at teardown of TestCoprRepoGeneration.test_fail_on_nonexistent_copr ___
self = <test_coprs_general.TestCoprRepoGeneration object at 0x7fff908d4ce0>
method = <bound method TestCoprRepoGeneration.test_fail_on_nonexistent_copr of <test_coprs_general.TestCoprRepoGeneration object at 0x7fff908d4ce0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
------------------------------ Captured log call -------------------------------
ERROR    coprs:error_handlers.py:42 Response error: 404 copr dir bogus-user/bogus-nonexistent-repo does not exist.
_____ ERROR at setup of TestCoprRepoGeneration.test_works_on_older_builds ______
self = <sqlalchemy.engine.base.Connection object at 0x7fff8d9b25a0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8d9b2660>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff90310da0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8d764e40>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8d9b2660>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
The above exception was the direct cause of the following exception:
self = <test_coprs_general.TestCoprRepoGeneration object at 0x7fff908d4e90>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8d764e40>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8d9b2660>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
E       [SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
E       [parameters: [('f18',), ('fedora-17',), ('master',)]]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
____ ERROR at teardown of TestCoprRepoGeneration.test_works_on_older_builds ____
self = <test_coprs_general.TestCoprRepoGeneration object at 0x7fff908d4e90>
method = <bound method TestCoprRepoGeneration.test_works_on_older_builds of <test_coprs_general.TestCoprRepoGeneration object at 0x7fff908d4e90>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
_______ ERROR at setup of TestCoprRepoGeneration.test_repofile_multilib ________
self = <sqlalchemy.engine.base.Connection object at 0x7fff8d935a90>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8d935af0>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff90310da0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8c80a540>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8d935af0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
The above exception was the direct cause of the following exception:
self = <test_coprs_general.TestCoprRepoGeneration object at 0x7fff908d5100>
    @pytest.fixture
    def f_mock_chroots_many(self):
        """
        Adds more chroots to self.c1
        Requires: f_mock_chroots
        """
        self.mc_list = []
        for arch in ["x86_64", "i386"]:
            for os_version in range(19, 24):
                mc = models.MockChroot(
                    os_release="fedora", os_version=os_version,
                    arch=arch, is_active=True)
                # Let's try slashes now. for example.  Some copr instances use
                # this pattern.
>               mc.distgit_branch = BranchesLogic.get_or_create(
                        'fedora/{0}'.format(os_version),
                        session=self.db.session)
tests/coprs_test_case.py:352: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
coprs/logic/coprs_logic.py:927: in get_or_create
    item = session.query(models.DistGitBranch).filter_by(name=name).first()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/query.py:2727: in first
    return self.limit(1)._iter().first()  # type: ignore
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/query.py:2826: in _iter
    result: Union[ScalarResult[_T], Result[_T]] = self.session.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:2306: in execute
    return self._execute_internal(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:2170: in _execute_internal
    ) = compile_state_cls.orm_pre_session_exec(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/context.py:549: in orm_pre_session_exec
    session._autoflush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:3005: in _autoflush
    raise e.with_traceback(sys.exc_info()[2])
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:2994: in _autoflush
    self.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8c80a540>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8d935af0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (raised as a result of Query-invoked autoflush; consider using a session.no_autoflush block if this flush is occurring prematurely)
E       (sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
E       [SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
E       [parameters: [('f18',), ('fedora-17',), ('master',)]]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
______ ERROR at teardown of TestCoprRepoGeneration.test_repofile_multilib ______
self = <test_coprs_general.TestCoprRepoGeneration object at 0x7fff908d5100>
method = <bound method TestCoprRepoGeneration.test_repofile_multilib of <test_coprs_general.TestCoprRepoGeneration object at 0x7fff908d5100>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
_ ERROR at teardown of TestCoprRepoGeneration.test_repofile_copr_runtime_deps __
self = <test_coprs_general.TestCoprRepoGeneration object at 0x7fff908d5370>
method = <bound method TestCoprRepoGeneration.test_repofile_copr_runtime_deps of <test_coprs_general.TestCoprRepoGeneration object at 0x7fff908d5370>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
------------------------------ Captured log call -------------------------------
ERROR    coprs:error_handlers.py:102 Admin-only exception
Request: GET http://localhost.localdomain/coprs/user2/barcopr/repo/fedora-18/some.repo?arch=x86_64
User: None
Traceback (most recent call last):
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py", line 1929, in _exec_single_context
    self.dialect.do_executemany(
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py", line 921, in do_executemany
    cursor.executemany(statement, parameters)
sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
  File "/usr/lib/python3.12/site-packages/flask/app.py", line 870, in full_dispatch_request
    rv = self.dispatch_request()
         ^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.12/site-packages/flask/app.py", line 855, in dispatch_request
    return self.ensure_sync(self.view_functions[rule.endpoint])(**view_args)  # type: ignore[no-any-return]
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/builddir/build/BUILD/copr-frontend-1.204/coprs_frontend/coprs/views/misc.py", line 266, in wrapper
    copr_dir = ComplexLogic.get_copr_dir(ownername, copr_dirname)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/builddir/build/BUILD/copr-frontend-1.204/coprs_frontend/coprs/logic/complex_logic.py", line 262, in get_copr_dir
    return CoprDirsLogic.get_by_ownername(ownername, copr_dirname).one()
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/query.py", line 2777, in one
    return self._iter().one()  # type: ignore
           ^^^^^^^^^^^^
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/query.py", line 2826, in _iter
    result: Union[ScalarResult[_T], Result[_T]] = self.session.execute(
                                                  ^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py", line 2306, in execute
    return self._execute_internal(
           ^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py", line 2170, in _execute_internal
    ) = compile_state_cls.orm_pre_session_exec(
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/context.py", line 549, in orm_pre_session_exec
    session._autoflush()
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py", line 3005, in _autoflush
    raise e.with_traceback(sys.exc_info()[2])
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py", line 2994, in _autoflush
    self.flush()
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py", line 4296, in flush
    self._flush(objects)
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py", line 4431, in _flush
    with util.safe_reraise():
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py", line 146, in __exit__
    raise exc_value.with_traceback(exc_tb)
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py", line 4392, in _flush
    flush_context.execute()
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py", line 466, in execute
    rec.execute(self)
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py", line 642, in execute
    util.preloaded.orm_persistence.save_obj(
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py", line 93, in save_obj
    _emit_insert_statements(
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py", line 1048, in _emit_insert_statements
    result = connection.execute(
             ^^^^^^^^^^^^^^^^^^^
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py", line 1408, in execute
    return meth(
           ^^^^^
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py", line 513, in _execute_on_connection
    return connection._execute_clauseelement(
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py", line 1630, in _execute_clauseelement
    ret = self._execute_context(
          ^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py", line 1839, in _execute_context
    return self._exec_single_context(
           ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py", line 1979, in _exec_single_context
    self._handle_dbapi_exception(
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py", line 2335, in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py", line 1929, in _exec_single_context
    self.dialect.do_executemany(
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py", line 921, in do_executemany
    cursor.executemany(statement, parameters)
sqlalchemy.exc.IntegrityError: (raised as a result of Query-invoked autoflush; consider using a session.no_autoflush block if this flush is occurring prematurely)
(sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
[SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
[parameters: [('f18',), ('fedora-17',), ('master',)]]
(Background on this error at: https://sqlalche.me/e/20/gkpj)
ERROR    coprs:error_handlers.py:42 Response error: gkpj Database error, contact admin
_ ERROR at teardown of TestCoprRepoGeneration.test_repofile_group_copr_runtime_deps _
self = <test_coprs_general.TestCoprRepoGeneration object at 0x7fff908d5550>
method = <bound method TestCoprRepoGeneration.test_repofile_group_copr_runtime_deps of <test_coprs_general.TestCoprRepoGeneration object at 0x7fff908d5550>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
------------------------------ Captured log call -------------------------------
ERROR    coprs:error_handlers.py:102 Admin-only exception
Request: GET http://localhost.localdomain/coprs/user2/depcopr/repo/fedora-18/some.repo?arch=x86_64
User: None
Traceback (most recent call last):
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py", line 1929, in _exec_single_context
    self.dialect.do_executemany(
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py", line 921, in do_executemany
    cursor.executemany(statement, parameters)
sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
  File "/usr/lib/python3.12/site-packages/flask/app.py", line 870, in full_dispatch_request
    rv = self.dispatch_request()
         ^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.12/site-packages/flask/app.py", line 855, in dispatch_request
    return self.ensure_sync(self.view_functions[rule.endpoint])(**view_args)  # type: ignore[no-any-return]
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/builddir/build/BUILD/copr-frontend-1.204/coprs_frontend/coprs/views/misc.py", line 266, in wrapper
    copr_dir = ComplexLogic.get_copr_dir(ownername, copr_dirname)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/builddir/build/BUILD/copr-frontend-1.204/coprs_frontend/coprs/logic/complex_logic.py", line 262, in get_copr_dir
    return CoprDirsLogic.get_by_ownername(ownername, copr_dirname).one()
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/query.py", line 2777, in one
    return self._iter().one()  # type: ignore
           ^^^^^^^^^^^^
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/query.py", line 2826, in _iter
    result: Union[ScalarResult[_T], Result[_T]] = self.session.execute(
                                                  ^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py", line 2306, in execute
    return self._execute_internal(
           ^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py", line 2170, in _execute_internal
    ) = compile_state_cls.orm_pre_session_exec(
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/context.py", line 549, in orm_pre_session_exec
    session._autoflush()
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py", line 3005, in _autoflush
    raise e.with_traceback(sys.exc_info()[2])
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py", line 2994, in _autoflush
    self.flush()
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py", line 4296, in flush
    self._flush(objects)
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py", line 4431, in _flush
    with util.safe_reraise():
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py", line 146, in __exit__
    raise exc_value.with_traceback(exc_tb)
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py", line 4392, in _flush
    flush_context.execute()
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py", line 466, in execute
    rec.execute(self)
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py", line 642, in execute
    util.preloaded.orm_persistence.save_obj(
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py", line 93, in save_obj
    _emit_insert_statements(
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py", line 1048, in _emit_insert_statements
    result = connection.execute(
             ^^^^^^^^^^^^^^^^^^^
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py", line 1408, in execute
    return meth(
           ^^^^^
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py", line 513, in _execute_on_connection
    return connection._execute_clauseelement(
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py", line 1630, in _execute_clauseelement
    ret = self._execute_context(
          ^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py", line 1839, in _execute_context
    return self._exec_single_context(
           ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py", line 1979, in _exec_single_context
    self._handle_dbapi_exception(
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py", line 2335, in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py", line 1929, in _exec_single_context
    self.dialect.do_executemany(
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py", line 921, in do_executemany
    cursor.executemany(statement, parameters)
sqlalchemy.exc.IntegrityError: (raised as a result of Query-invoked autoflush; consider using a session.no_autoflush block if this flush is occurring prematurely)
(sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
[SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
[parameters: [('f18',), ('fedora-17',), ('master',)]]
(Background on this error at: https://sqlalche.me/e/20/gkpj)
ERROR    coprs:error_handlers.py:42 Response error: gkpj Database error, contact admin
_ ERROR at teardown of TestCoprRepoGeneration.test_repofile_transitive_runtime_deps _
self = <test_coprs_general.TestCoprRepoGeneration object at 0x7fff908d57c0>
method = <bound method TestCoprRepoGeneration.test_repofile_transitive_runtime_deps of <test_coprs_general.TestCoprRepoGeneration object at 0x7fff908d57c0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
------------------------------ Captured log call -------------------------------
ERROR    coprs:error_handlers.py:102 Admin-only exception
Request: GET http://localhost.localdomain/coprs/user2/depcopr1/repo/fedora-18/some.repo?arch=x86_64
User: None
Traceback (most recent call last):
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py", line 1929, in _exec_single_context
    self.dialect.do_executemany(
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py", line 921, in do_executemany
    cursor.executemany(statement, parameters)
sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
  File "/usr/lib/python3.12/site-packages/flask/app.py", line 870, in full_dispatch_request
    rv = self.dispatch_request()
         ^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.12/site-packages/flask/app.py", line 855, in dispatch_request
    return self.ensure_sync(self.view_functions[rule.endpoint])(**view_args)  # type: ignore[no-any-return]
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/builddir/build/BUILD/copr-frontend-1.204/coprs_frontend/coprs/views/misc.py", line 266, in wrapper
    copr_dir = ComplexLogic.get_copr_dir(ownername, copr_dirname)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/builddir/build/BUILD/copr-frontend-1.204/coprs_frontend/coprs/logic/complex_logic.py", line 262, in get_copr_dir
    return CoprDirsLogic.get_by_ownername(ownername, copr_dirname).one()
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/query.py", line 2777, in one
    return self._iter().one()  # type: ignore
           ^^^^^^^^^^^^
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/query.py", line 2826, in _iter
    result: Union[ScalarResult[_T], Result[_T]] = self.session.execute(
                                                  ^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py", line 2306, in execute
    return self._execute_internal(
           ^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py", line 2170, in _execute_internal
    ) = compile_state_cls.orm_pre_session_exec(
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/context.py", line 549, in orm_pre_session_exec
    session._autoflush()
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py", line 3005, in _autoflush
    raise e.with_traceback(sys.exc_info()[2])
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py", line 2994, in _autoflush
    self.flush()
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py", line 4296, in flush
    self._flush(objects)
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py", line 4431, in _flush
    with util.safe_reraise():
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py", line 146, in __exit__
    raise exc_value.with_traceback(exc_tb)
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py", line 4392, in _flush
    flush_context.execute()
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py", line 466, in execute
    rec.execute(self)
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py", line 642, in execute
    util.preloaded.orm_persistence.save_obj(
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py", line 93, in save_obj
    _emit_insert_statements(
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py", line 1048, in _emit_insert_statements
    result = connection.execute(
             ^^^^^^^^^^^^^^^^^^^
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py", line 1408, in execute
    return meth(
           ^^^^^
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py", line 513, in _execute_on_connection
    return connection._execute_clauseelement(
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py", line 1630, in _execute_clauseelement
    ret = self._execute_context(
          ^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py", line 1839, in _execute_context
    return self._exec_single_context(
           ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py", line 1979, in _exec_single_context
    self._handle_dbapi_exception(
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py", line 2335, in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py", line 1929, in _exec_single_context
    self.dialect.do_executemany(
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py", line 921, in do_executemany
    cursor.executemany(statement, parameters)
sqlalchemy.exc.IntegrityError: (raised as a result of Query-invoked autoflush; consider using a session.no_autoflush block if this flush is occurring prematurely)
(sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
[SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
[parameters: [('f18',), ('fedora-17',), ('master',)]]
(Background on this error at: https://sqlalche.me/e/20/gkpj)
ERROR    coprs:error_handlers.py:42 Response error: gkpj Database error, contact admin
________________ ERROR at setup of TestSearch.test_search_basic ________________
self = <sqlalchemy.engine.base.Connection object at 0x7fff8d93b2f0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8d93b3b0>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff903111c0>
parameters = [('user1', 0, 1, None)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
                    self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
                    )
            elif not effective_parameters and context.no_parameters:
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_execute_no_params:
                        if fn(cursor, str_statement, context):
                            evt_handled = True
                            break
                if not evt_handled:
                    self.dialect.do_execute_no_params(
                        cursor, str_statement, context
                    )
            else:
                effective_parameters = cast(
                    "_CoreSingleExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_execute:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_execute(
                        cursor, str_statement, effective_parameters, context
                    )
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1960: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8c6be940>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8d93b3b0>
    def do_execute(self, cursor, statement, parameters, context=None):
>       cursor.execute(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: user.username
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:924: IntegrityError
The above exception was the direct cause of the following exception:
self = <test_coprs_general.TestSearch object at 0x7fff908d63c0>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1233: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1960: in _exec_single_context
    self.dialect.do_execute(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8c6be940>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8d93b3b0>
    def do_execute(self, cursor, statement, parameters, context=None):
>       cursor.execute(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: user.username
E       [SQL: INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)]
E       [parameters: ('user1', 0, 1, None)]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:924: IntegrityError
______________ ERROR at teardown of TestSearch.test_search_basic _______________
self = <test_coprs_general.TestSearch object at 0x7fff908d63c0>
method = <bound method TestSearch.test_search_basic of <test_coprs_general.TestSearch object at 0x7fff908d63c0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
____________ ERROR at setup of TestSearch.test_search_by_attributes ____________
self = <sqlalchemy.engine.base.Connection object at 0x7fff8e219d90>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8e219e20>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff90310da0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8d979ec0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8e219e20>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
The above exception was the direct cause of the following exception:
self = <test_coprs_general.TestSearch object at 0x7fff908d6570>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8d979ec0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8e219e20>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
E       [SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
E       [parameters: [('f18',), ('fedora-17',), ('master',)]]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
__________ ERROR at teardown of TestSearch.test_search_by_attributes ___________
self = <test_coprs_general.TestSearch object at 0x7fff908d6570>
method = <bound method TestSearch.test_search_by_attributes of <test_coprs_general.TestSearch object at 0x7fff908d6570>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
______________ ERROR at setup of TestRepo.test_repo_renders_http _______________
self = <sqlalchemy.engine.base.Connection object at 0x7fff8e22d1c0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8e22d220>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff90310da0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8cf2a4c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8e22d220>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
The above exception was the direct cause of the following exception:
self = <test_coprs_general.TestRepo object at 0x7fff908d7260>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8cf2a4c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8e22d220>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
E       [SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
E       [parameters: [('f18',), ('fedora-17',), ('master',)]]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
_____________ ERROR at teardown of TestRepo.test_repo_renders_http _____________
self = <test_coprs_general.TestRepo object at 0x7fff908d7260>
method = <bound method TestRepo.test_repo_renders_http of <test_coprs_general.TestRepo object at 0x7fff908d7260>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
_________________ ERROR at setup of TestRepo.test_chroot_alias _________________
self = <sqlalchemy.engine.base.Connection object at 0x7fff8e214200>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8e214260>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff90310da0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8d978ec0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8e214260>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
The above exception was the direct cause of the following exception:
self = <test_coprs_general.TestRepo object at 0x7fff908d6540>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8d978ec0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8e214260>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
E       [SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
E       [parameters: [('f18',), ('fedora-17',), ('master',)]]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
_______________ ERROR at teardown of TestRepo.test_chroot_alias ________________
self = <test_coprs_general.TestRepo object at 0x7fff908d6540>
method = <bound method TestRepo.test_chroot_alias of <test_coprs_general.TestRepo object at 0x7fff908d6540>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
_____ ERROR at setup of TestCoprActionsGeneration.test_createrepo_priority _____
self = <sqlalchemy.engine.base.Connection object at 0x7fff8d8f01d0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8d8f2fc0>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff90310da0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8c6b6540>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8d8f2fc0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
The above exception was the direct cause of the following exception:
self = <test_coprs_general.TestCoprActionsGeneration object at 0x7fff908d7ce0>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8c6b6540>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8d8f2fc0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
E       [SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
E       [parameters: [('f18',), ('fedora-17',), ('master',)]]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
___ ERROR at teardown of TestCoprActionsGeneration.test_createrepo_priority ____
self = <test_coprs_general.TestCoprActionsGeneration object at 0x7fff908d7ce0>
method = <bound method TestCoprActionsGeneration.test_createrepo_priority of <test_coprs_general.TestCoprActionsGeneration object at 0x7fff908d7ce0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
___ ERROR at setup of TestCoprActionsGeneration.test_createrepo_on_reenable ____
self = <sqlalchemy.engine.base.Connection object at 0x7fff8e5f5130>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8da5eea0>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff90310da0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8d20a4c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8da5eea0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
The above exception was the direct cause of the following exception:
self = <test_coprs_general.TestCoprActionsGeneration object at 0x7fff908d7f20>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8d20a4c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8da5eea0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
E       [SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
E       [parameters: [('f18',), ('fedora-17',), ('master',)]]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
__ ERROR at teardown of TestCoprActionsGeneration.test_createrepo_on_reenable __
self = <test_coprs_general.TestCoprActionsGeneration object at 0x7fff908d7f20>
method = <bound method TestCoprActionsGeneration.test_createrepo_on_reenable of <test_coprs_general.TestCoprActionsGeneration object at 0x7fff908d7f20>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
____ ERROR at setup of TestCoprActionsGeneration.test_fedora_review_project ____
self = <sqlalchemy.engine.base.Connection object at 0x7fff8d93bad0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8d93bbf0>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff903111c0>
parameters = [('user1', 0, 1, None)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
                    self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
                    )
            elif not effective_parameters and context.no_parameters:
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_execute_no_params:
                        if fn(cursor, str_statement, context):
                            evt_handled = True
                            break
                if not evt_handled:
                    self.dialect.do_execute_no_params(
                        cursor, str_statement, context
                    )
            else:
                effective_parameters = cast(
                    "_CoreSingleExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_execute:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_execute(
                        cursor, str_statement, effective_parameters, context
                    )
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1960: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8ca2eb40>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8d93bbf0>
    def do_execute(self, cursor, statement, parameters, context=None):
>       cursor.execute(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: user.username
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:924: IntegrityError
The above exception was the direct cause of the following exception:
self = <test_coprs_general.TestCoprActionsGeneration object at 0x7fff90902ab0>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1233: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1960: in _exec_single_context
    self.dialect.do_execute(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8ca2eb40>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8d93bbf0>
    def do_execute(self, cursor, statement, parameters, context=None):
>       cursor.execute(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: user.username
E       [SQL: INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)]
E       [parameters: ('user1', 0, 1, None)]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:924: IntegrityError
__ ERROR at teardown of TestCoprActionsGeneration.test_fedora_review_project ___
self = <test_coprs_general.TestCoprActionsGeneration object at 0x7fff90902ab0>
method = <bound method TestCoprActionsGeneration.test_fedora_review_project of <test_coprs_general.TestCoprActionsGeneration object at 0x7fff90902ab0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
___ ERROR at setup of TestDistGitMethod.test_copr_user_can_add_distgit_build ___
self = <sqlalchemy.engine.base.Connection object at 0x7fff8d9b09b0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8d9b0a40>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff90310da0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8c80bb40>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8d9b0a40>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
The above exception was the direct cause of the following exception:
self = <test_method_distgit.TestDistGitMethod object at 0x7fff90900860>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8c80bb40>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8d9b0a40>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
E       [SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
E       [parameters: [('f18',), ('fedora-17',), ('master',)]]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
_ ERROR at teardown of TestDistGitMethod.test_copr_user_can_add_distgit_build __
self = <test_method_distgit.TestDistGitMethod object at 0x7fff90900860>
method = <bound method TestDistGitMethod.test_copr_user_can_add_distgit_build of <test_method_distgit.TestDistGitMethod object at 0x7fff90900860>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
__ ERROR at setup of TestDistGitMethod.test_copr_user_can_add_distgit_package __
self = <sqlalchemy.engine.base.Connection object at 0x7fff8e2173b0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8e217440>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff90310da0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8cf2ad40>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8e217440>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
The above exception was the direct cause of the following exception:
self = <test_method_distgit.TestDistGitMethod object at 0x7fff90900f20>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8cf2ad40>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8e217440>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
E       [SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
E       [parameters: [('f18',), ('fedora-17',), ('master',)]]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
_ ERROR at teardown of TestDistGitMethod.test_copr_user_can_add_distgit_package _
self = <test_method_distgit.TestDistGitMethod object at 0x7fff90900f20>
method = <bound method TestDistGitMethod.test_copr_user_can_add_distgit_package of <test_method_distgit.TestDistGitMethod object at 0x7fff90900f20>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
_________________ ERROR at setup of TestGroups.test_group_add __________________
self = <sqlalchemy.engine.base.Connection object at 0x7fff8e261a00>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8e262360>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff903111c0>
parameters = [('user1', 0, 1, '{"fas_groups": ["fas_1", "fas_2"]}')]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
                    self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
                    )
            elif not effective_parameters and context.no_parameters:
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_execute_no_params:
                        if fn(cursor, str_statement, context):
                            evt_handled = True
                            break
                if not evt_handled:
                    self.dialect.do_execute_no_params(
                        cursor, str_statement, context
                    )
            else:
                effective_parameters = cast(
                    "_CoreSingleExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_execute:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_execute(
                        cursor, str_statement, effective_parameters, context
                    )
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1960: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8c686440>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, '{"fas_groups": ["fas_1", "fas_2"]}')
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8e262360>
    def do_execute(self, cursor, statement, parameters, context=None):
>       cursor.execute(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: user.username
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:924: IntegrityError
The above exception was the direct cause of the following exception:
self = <test_groups_general.TestGroups object at 0x7fff90902330>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1233: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1960: in _exec_single_context
    self.dialect.do_execute(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8c686440>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, '{"fas_groups": ["fas_1", "fas_2"]}')
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8e262360>
    def do_execute(self, cursor, statement, parameters, context=None):
>       cursor.execute(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: user.username
E       [SQL: INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)]
E       [parameters: ('user1', 0, 1, '{"fas_groups": ["fas_1", "fas_2"]}')]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:924: IntegrityError
________________ ERROR at teardown of TestGroups.test_group_add ________________
self = <test_groups_general.TestGroups object at 0x7fff90902330>
method = <bound method TestGroups.test_group_add of <test_groups_general.TestGroups object at 0x7fff90902330>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
______________ ERROR at setup of TestGroups.test_group_add_twice _______________
self = <sqlalchemy.engine.base.Connection object at 0x7fff8e1d84d0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8e1d8ec0>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff903111c0>
parameters = [('user1', 0, 1, '{"fas_groups": ["fas_1", "fas_2"]}')]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
                    self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
                    )
            elif not effective_parameters and context.no_parameters:
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_execute_no_params:
                        if fn(cursor, str_statement, context):
                            evt_handled = True
                            break
                if not evt_handled:
                    self.dialect.do_execute_no_params(
                        cursor, str_statement, context
                    )
            else:
                effective_parameters = cast(
                    "_CoreSingleExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_execute:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_execute(
                        cursor, str_statement, effective_parameters, context
                    )
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1960: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8c3cc140>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, '{"fas_groups": ["fas_1", "fas_2"]}')
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8e1d8ec0>
    def do_execute(self, cursor, statement, parameters, context=None):
>       cursor.execute(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: user.username
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:924: IntegrityError
The above exception was the direct cause of the following exception:
self = <test_groups_general.TestGroups object at 0x7fff909023c0>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1233: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1960: in _exec_single_context
    self.dialect.do_execute(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8c3cc140>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, '{"fas_groups": ["fas_1", "fas_2"]}')
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8e1d8ec0>
    def do_execute(self, cursor, statement, parameters, context=None):
>       cursor.execute(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: user.username
E       [SQL: INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)]
E       [parameters: ('user1', 0, 1, '{"fas_groups": ["fas_1", "fas_2"]}')]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:924: IntegrityError
_____________ ERROR at teardown of TestGroups.test_group_add_twice _____________
self = <test_groups_general.TestGroups object at 0x7fff909023c0>
method = <bound method TestGroups.test_group_add_twice of <test_groups_general.TestGroups object at 0x7fff909023c0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
_________ ERROR at setup of TestGroups.test_group_add_alias_with_space _________
self = <sqlalchemy.engine.base.Connection object at 0x7fff8e1db3e0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8e1dbe00>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff903111c0>
parameters = [('user1', 0, 1, '{"fas_groups": ["fas_1", "fas_2"]}')]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
                    self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
                    )
            elif not effective_parameters and context.no_parameters:
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_execute_no_params:
                        if fn(cursor, str_statement, context):
                            evt_handled = True
                            break
                if not evt_handled:
                    self.dialect.do_execute_no_params(
                        cursor, str_statement, context
                    )
            else:
                effective_parameters = cast(
                    "_CoreSingleExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_execute:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_execute(
                        cursor, str_statement, effective_parameters, context
                    )
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1960: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8c443440>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, '{"fas_groups": ["fas_1", "fas_2"]}')
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8e1dbe00>
    def do_execute(self, cursor, statement, parameters, context=None):
>       cursor.execute(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: user.username
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:924: IntegrityError
The above exception was the direct cause of the following exception:
self = <test_groups_general.TestGroups object at 0x7fff909025d0>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1233: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1960: in _exec_single_context
    self.dialect.do_execute(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8c443440>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, '{"fas_groups": ["fas_1", "fas_2"]}')
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8e1dbe00>
    def do_execute(self, cursor, statement, parameters, context=None):
>       cursor.execute(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: user.username
E       [SQL: INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)]
E       [parameters: ('user1', 0, 1, '{"fas_groups": ["fas_1", "fas_2"]}')]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:924: IntegrityError
_______ ERROR at teardown of TestGroups.test_group_add_alias_with_space ________
self = <test_groups_general.TestGroups object at 0x7fff909025d0>
method = <bound method TestGroups.test_group_add_alias_with_space of <test_groups_general.TestGroups object at 0x7fff909025d0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
_________ ERROR at setup of TestGroups.test_group_add_not_in_fas_group _________
self = <sqlalchemy.engine.base.Connection object at 0x7fff8e291e50>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8e2927e0>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff903111c0>
parameters = [('user1', 0, 1, '{"fas_groups": ["fas_1", "fas_2"]}')]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
                    self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
                    )
            elif not effective_parameters and context.no_parameters:
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_execute_no_params:
                        if fn(cursor, str_statement, context):
                            evt_handled = True
                            break
                if not evt_handled:
                    self.dialect.do_execute_no_params(
                        cursor, str_statement, context
                    )
            else:
                effective_parameters = cast(
                    "_CoreSingleExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_execute:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_execute(
                        cursor, str_statement, effective_parameters, context
                    )
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1960: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8d46b8c0>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, '{"fas_groups": ["fas_1", "fas_2"]}')
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8e2927e0>
    def do_execute(self, cursor, statement, parameters, context=None):
>       cursor.execute(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: user.username
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:924: IntegrityError
The above exception was the direct cause of the following exception:
self = <test_groups_general.TestGroups object at 0x7fff90902810>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1233: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1960: in _exec_single_context
    self.dialect.do_execute(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8d46b8c0>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, '{"fas_groups": ["fas_1", "fas_2"]}')
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8e2927e0>
    def do_execute(self, cursor, statement, parameters, context=None):
>       cursor.execute(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: user.username
E       [SQL: INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)]
E       [parameters: ('user1', 0, 1, '{"fas_groups": ["fas_1", "fas_2"]}')]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:924: IntegrityError
_______ ERROR at teardown of TestGroups.test_group_add_not_in_fas_group ________
self = <test_groups_general.TestGroups object at 0x7fff90902810>
method = <bound method TestGroups.test_group_add_not_in_fas_group of <test_groups_general.TestGroups object at 0x7fff90902810>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.db.engine.execute(tbl.delete())
E           AttributeError: 'Engine' object has no attribute 'execute'
tests/coprs_test_case.py:82: AttributeError
=================================== FAILURES ===================================
_____________________________ TestAnitya.test_pypi _____________________________
self = <tests.test_anitya.TestAnitya object at 0x7fff90fe8830>
    @TransactionDecorator("u1")
    @pytest.mark.usefixtures("f_users", "f_users_api", "f_mock_chroots", "f_db")
    def test_pypi(self):
        contents = self.load_test_data_file("anytia.json")
        messages = json.loads(contents)
        chroots = ["fedora-rawhide-i386"]
    
        # Loop to generate projects with single (finished) build
        for project in ["foo", "deleted", "inprogress", "inprogress-match",
                        "inprogress-older"]:
>           self.api3.new_project(project, chroots)
tests/test_anitya.py:29: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <tests.request_test_api.API3Requests object at 0x7fff91110260>
name = 'foo', chroots = ['fedora-rawhide-i386'], kwargs = {}
route = '/api_3/project/add/user1'
data = {'chroots': ['fedora-rawhide-i386'], 'name': 'foo'}, config = 'appstream'
resp = <WrapperTestResponse streamed [500 INTERNAL SERVER ERROR]>
    def new_project(self, name, chroots, **kwargs):
        route = "/api_3/project/add/{}".format(self.transaction_username)
        data = {
            "name": name,
            "chroots": chroots,
        }
    
        for config in ['bootstrap', 'isolation', 'contact', 'homepage', 'appstream']:
            if not config in kwargs:
                continue
            data[config] = kwargs[config]
    
        resp = self.post(route, data)
>       assert resp.status_code == 200 if self.success_expected else 400
E       AssertionError
tests/request_test_api.py:258: AssertionError
------------------------------ Captured log call -------------------------------
ERROR    coprs:error_handlers.py:102 Admin-only exception
Request: POST http://localhost.localdomain/api_3/project/add/user1
User: user1
Traceback (most recent call last):
  File "/usr/lib/python3.12/site-packages/flask/app.py", line 870, in full_dispatch_request
    rv = self.dispatch_request()
         ^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.12/site-packages/flask/app.py", line 855, in dispatch_request
    return self.ensure_sync(self.view_functions[rule.endpoint])(**view_args)  # type: ignore[no-any-return]
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.12/site-packages/flask_restx/api.py", line 402, in wrapper
    resp = resource(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.12/site-packages/flask/views.py", line 110, in view
    return current_app.ensure_sync(self.dispatch_request)(**kwargs)  # type: ignore[no-any-return]
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.12/site-packages/flask_restx/resource.py", line 41, in dispatch_request
    resp = meth(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^
  File "/builddir/build/BUILD/copr-frontend-1.204/coprs_frontend/coprs/views/misc.py", line 340, in check_if_api_login_is_required
    return endpoint_method(self, *args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/builddir/build/BUILD/copr-frontend-1.204/coprs_frontend/coprs/views/apiv3_ns/__init__.py", line 418, in convert_query_parameters_of_endpoint_method
    return endpoint_method(self, *args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.12/site-packages/flask_restx/marshalling.py", line 244, in wrapper
    resp = f(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^
  File "/builddir/build/BUILD/copr-frontend-1.204/coprs_frontend/coprs/views/apiv3_ns/apiv3_projects.py", line 266, in post
    db.session.commit()
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py", line 597, in commit
    return self._proxied.commit()
           ^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py", line 1972, in commit
    trans.commit(_to_root=True)
  File "<string>", line 2, in commit
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py", line 139, in _go
    ret_value = fn(self, *arg, **kw)
                ^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py", line 1267, in commit
    self.session.dispatch.after_commit(self.session)
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/event/attr.py", line 378, in __call__
    fn(*args, **kw)
  File "/usr/lib/python3.12/site-packages/flask_sqlalchemy/track_modifications.py", line 83, in _after_commit
    models_committed.send(app, changes=changes)
  File "/usr/lib/python3.12/site-packages/blinker/base.py", line 307, in send
    result = receiver(sender, **kwargs)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/builddir/build/BUILD/copr-frontend-1.204/coprs_frontend/coprs/whoosheers.py", line 108, in on_commit
    db.engine.execute(
    ^^^^^^^^^^^^^^^^^
AttributeError: 'Engine' object has no attribute 'execute'
ERROR    coprs:error_handlers.py:42 Response error: 500 Request wasn't successful, there is probably a bug in the Copr code.
ERROR    coprs:app.py:828 Exception on /api_3/project/add/user1 [POST]
Traceback (most recent call last):
  File "/usr/lib/python3.12/site-packages/flask/app.py", line 870, in full_dispatch_request
    rv = self.dispatch_request()
         ^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.12/site-packages/flask/app.py", line 855, in dispatch_request
    return self.ensure_sync(self.view_functions[rule.endpoint])(**view_args)  # type: ignore[no-any-return]
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.12/site-packages/flask_restx/api.py", line 402, in wrapper
    resp = resource(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.12/site-packages/flask/views.py", line 110, in view
    return current_app.ensure_sync(self.dispatch_request)(**kwargs)  # type: ignore[no-any-return]
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.12/site-packages/flask_restx/resource.py", line 41, in dispatch_request
    resp = meth(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^
  File "/builddir/build/BUILD/copr-frontend-1.204/coprs_frontend/coprs/views/misc.py", line 340, in check_if_api_login_is_required
    return endpoint_method(self, *args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/builddir/build/BUILD/copr-frontend-1.204/coprs_frontend/coprs/views/apiv3_ns/__init__.py", line 418, in convert_query_parameters_of_endpoint_method
    return endpoint_method(self, *args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.12/site-packages/flask_restx/marshalling.py", line 244, in wrapper
    resp = f(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^
  File "/builddir/build/BUILD/copr-frontend-1.204/coprs_frontend/coprs/views/apiv3_ns/apiv3_projects.py", line 266, in post
    db.session.commit()
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py", line 597, in commit
    return self._proxied.commit()
           ^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py", line 1972, in commit
    trans.commit(_to_root=True)
  File "<string>", line 2, in commit
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py", line 139, in _go
    ret_value = fn(self, *arg, **kw)
                ^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py", line 1267, in commit
    self.session.dispatch.after_commit(self.session)
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/event/attr.py", line 378, in __call__
    fn(*args, **kw)
  File "/usr/lib/python3.12/site-packages/flask_sqlalchemy/track_modifications.py", line 83, in _after_commit
    models_committed.send(app, changes=changes)
  File "/usr/lib/python3.12/site-packages/blinker/base.py", line 307, in send
    result = receiver(sender, **kwargs)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/builddir/build/BUILD/copr-frontend-1.204/coprs_frontend/coprs/whoosheers.py", line 108, in on_commit
    db.engine.execute(
    ^^^^^^^^^^^^^^^^^
AttributeError: 'Engine' object has no attribute 'execute'
_________ TestExceptionHandling.test_both_nonexisting_page_and_object __________
self = <tests.test_exceptions.TestExceptionHandling object at 0x7fff90da89e0>
    def test_both_nonexisting_page_and_object(self):
        r1 = self.tc.get("/nonexisting/endpoint/")
        assert r1.status_code == 404
        assert "<h1> Error 404: Page Not Found</h1>" in str(r1.data)
    
        r2 = self.tc.get("/coprs/nonexisting/nonexisting/")
>       assert r2.status_code == 404
E       assert 500 == 404
E        +  where 500 = <WrapperTestResponse streamed [500 INTERNAL SERVER ERROR]>.status_code
tests/test_exceptions.py:31: AssertionError
------------------------------ Captured log call -------------------------------
ERROR    coprs:error_handlers.py:42 Response error: 404 The requested URL was not found on the server. If you entered the URL manually please check your spelling and try again.
ERROR    coprs:error_handlers.py:102 Admin-only exception
Request: GET http://localhost.localdomain/coprs/nonexisting/nonexisting/
User: None
Traceback (most recent call last):
  File "/usr/lib/python3.12/site-packages/flask/app.py", line 870, in full_dispatch_request
    rv = self.dispatch_request()
         ^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.12/site-packages/flask/app.py", line 855, in dispatch_request
    return self.ensure_sync(self.view_functions[rule.endpoint])(**view_args)  # type: ignore[no-any-return]
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/builddir/build/BUILD/copr-frontend-1.204/coprs_frontend/coprs/views/misc.py", line 253, in wrapper
    copr = ComplexLogic.get_copr(username, coprname, with_mock_chroots=True)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/builddir/build/BUILD/copr-frontend-1.204/coprs_frontend/coprs/logic/complex_logic.py", line 201, in get_copr
    return CoprsLogic.get(user_name, copr_name, **kwargs).filter(Copr.group_id.is_(None)).one()
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/query.py", line 2777, in one
    return self._iter().one()  # type: ignore
           ^^^^^^^^^^^^
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/query.py", line 2826, in _iter
    result: Union[ScalarResult[_T], Result[_T]] = self.session.execute(
                                                  ^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py", line 2306, in execute
    return self._execute_internal(
           ^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py", line 2191, in _execute_internal
    result: Result[Any] = compile_state_cls.orm_execute_statement(
                          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/context.py", line 293, in orm_execute_statement
    result = conn.execute(
             ^^^^^^^^^^^^^
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py", line 1408, in execute
    return meth(
           ^^^^^
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py", line 513, in _execute_on_connection
    return connection._execute_clauseelement(
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py", line 1622, in _execute_clauseelement
    compiled_sql, extracted_params, cache_hit = elem._compile_w_cache(
                                                ^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py", line 701, in _compile_w_cache
    compiled_sql = self._compiler(
                   ^^^^^^^^^^^^^^^
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py", line 314, in _compiler
    return dialect.statement_compiler(dialect, self, **kw)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/sql/compiler.py", line 1424, in __init__
    Compiled.__init__(self, dialect, statement, **kwargs)
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/sql/compiler.py", line 865, in __init__
    self.string = self.process(self.statement, **compile_kwargs)
                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/sql/compiler.py", line 910, in process
    return obj._compiler_dispatch(self, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/sql/visitors.py", line 141, in _compiler_dispatch
    return meth(self, **kw)  # type: ignore  # noqa: E501
           ^^^^^^^^^^^^^^^^
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/sql/compiler.py", line 4641, in visit_select
    compile_state = select_stmt._compile_state_factory(
                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/sql/base.py", line 684, in create_for_statement
    return klass.create_for_statement(statement, compiler, **kw)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/context.py", line 1162, in create_for_statement
    self._setup_for_generate()
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/context.py", line 1197, in _setup_for_generate
    self._join(query._setup_joins, self._entities)
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/context.py", line 1766, in _join
    raise sa_exc.InvalidRequestError(
sqlalchemy.exc.InvalidRequestError: No 'on clause' argument may be passed when joining to a relationship path as a target
ERROR    coprs:error_handlers.py:42 Response error: 500 Database error, contact admin
_______________ TestPagureEvents.test_negative_is_dir_in_commit ________________
self = <sqlalchemy.engine.base.Connection object at 0x7fff8ff095b0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8ff096a0>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff903111c0>
parameters = [('user1', 0, 1, None)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
                    self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
                    )
            elif not effective_parameters and context.no_parameters:
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_execute_no_params:
                        if fn(cursor, str_statement, context):
                            evt_handled = True
                            break
                if not evt_handled:
                    self.dialect.do_execute_no_params(
                        cursor, str_statement, context
                    )
            else:
                effective_parameters = cast(
                    "_CoreSingleExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_execute:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_execute(
                        cursor, str_statement, effective_parameters, context
                    )
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1960: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8e5e3dc0>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8ff096a0>
    def do_execute(self, cursor, statement, parameters, context=None):
>       cursor.execute(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: user.username
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:924: IntegrityError
The above exception was the direct cause of the following exception:
self = <tests.test_pagure_events.TestPagureEvents object at 0x7fff90bb8f80>
f_users = None, f_coprs = None
    def test_negative_is_dir_in_commit(self, f_users, f_coprs):
        self.p2 = self.models.Package(
            copr=self.c1, name="hello-world", source_type=8, webhook_rebuild=True,
            source_json='{"clone_url": "https://pagure.io/test"}'
        )
>       candidates = ScmPackage.get_candidates_for_rebuild("https://pagure.io/test")
tests/test_pagure_events.py:41: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
pagure_events.py:76: in get_candidates_for_rebuild
    return [ScmPackage(row) for row in rows]
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/query.py:2812: in __iter__
    result = self._iter()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/query.py:2826: in _iter
    result: Union[ScalarResult[_T], Result[_T]] = self.session.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:2306: in execute
    return self._execute_internal(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:2170: in _execute_internal
    ) = compile_state_cls.orm_pre_session_exec(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/context.py:549: in orm_pre_session_exec
    session._autoflush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:3005: in _autoflush
    raise e.with_traceback(sys.exc_info()[2])
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:2994: in _autoflush
    self.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1233: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1960: in _exec_single_context
    self.dialect.do_execute(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8e5e3dc0>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8ff096a0>
    def do_execute(self, cursor, statement, parameters, context=None):
>       cursor.execute(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (raised as a result of Query-invoked autoflush; consider using a session.no_autoflush block if this flush is occurring prematurely)
E       (sqlite3.IntegrityError) UNIQUE constraint failed: user.username
E       [SQL: INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)]
E       [parameters: ('user1', 0, 1, None)]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:924: IntegrityError
_______________ TestPagureEvents.test_positive_is_dir_in_commit ________________
self = <sqlalchemy.engine.base.Connection object at 0x7fff8ff71b80>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8ff70110>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff903111c0>
parameters = [('user1', 0, 1, None)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
                    self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
                    )
            elif not effective_parameters and context.no_parameters:
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_execute_no_params:
                        if fn(cursor, str_statement, context):
                            evt_handled = True
                            break
                if not evt_handled:
                    self.dialect.do_execute_no_params(
                        cursor, str_statement, context
                    )
            else:
                effective_parameters = cast(
                    "_CoreSingleExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_execute:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_execute(
                        cursor, str_statement, effective_parameters, context
                    )
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1960: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8e87ee40>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8ff70110>
    def do_execute(self, cursor, statement, parameters, context=None):
>       cursor.execute(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: user.username
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:924: IntegrityError
The above exception was the direct cause of the following exception:
self = <tests.test_pagure_events.TestPagureEvents object at 0x7fff90bba9f0>
f_users = None, f_coprs = None
    def test_positive_is_dir_in_commit(self, f_users, f_coprs):
        dir_in_commit = False
        changed_files = {
            'tests/integration/conftest.py @@ -28,6 +28,16 @@ def test_env(): return env',
            'tests/integration/conftest.py b/tests/integration/conftest.py index '
            '1747874..a2b81f6 100644 --- a/tests/integration/conftest.py +++'}
        self.p2 = self.models.Package(
            copr=self.c1, name="hello-world", source_type=8, webhook_rebuild=True,
            source_json='{"clone_url": "https://pagure.io/test"}'
        )
>       candidates = ScmPackage.get_candidates_for_rebuild("https://pagure.io/test")
tests/test_pagure_events.py:56: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
pagure_events.py:76: in get_candidates_for_rebuild
    return [ScmPackage(row) for row in rows]
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/query.py:2812: in __iter__
    result = self._iter()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/query.py:2826: in _iter
    result: Union[ScalarResult[_T], Result[_T]] = self.session.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:2306: in execute
    return self._execute_internal(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:2170: in _execute_internal
    ) = compile_state_cls.orm_pre_session_exec(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/context.py:549: in orm_pre_session_exec
    session._autoflush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:3005: in _autoflush
    raise e.with_traceback(sys.exc_info()[2])
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:2994: in _autoflush
    self.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1233: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1960: in _exec_single_context
    self.dialect.do_execute(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8e87ee40>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8ff70110>
    def do_execute(self, cursor, statement, parameters, context=None):
>       cursor.execute(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (raised as a result of Query-invoked autoflush; consider using a session.no_autoflush block if this flush is occurring prematurely)
E       (sqlite3.IntegrityError) UNIQUE constraint failed: user.username
E       [SQL: INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)]
E       [parameters: ('user1', 0, 1, None)]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:924: IntegrityError
_____________ TestPagureEvents.test_positive_build_from_pr_update ______________
self = <sqlalchemy.engine.base.Connection object at 0x7fff8ff489b0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8ff48a40>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff90310da0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8dee6ec0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8ff48a40>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
The above exception was the direct cause of the following exception:
self = <tests.test_pagure_events.TestPagureEvents object at 0x7fff90bbaba0>
f_raw_commit_changes = <MagicMock name='raw_commit_changes' id='140735608730928'>
    @mock.patch('pagure_events.helpers.raw_commit_changes')
    @mock.patch('pagure_events.get_repeatedly', mock.Mock())
    @pytest.mark.usefixtures("f_users", "f_coprs", "f_mock_chroots")
    def test_positive_build_from_pr_update(self, f_raw_commit_changes):
        f_raw_commit_changes.return_value = {
            'tests/integration/conftest.py @@ -28,6 +28,16 @@ def test_env(): return env',
            'tests/integration/conftest.py b/tests/integration/conftest.py index '
            '1747874..a2b81f6 100644 --- a/tests/integration/conftest.py +++'}
        self.p1 = self.models.Package(
            copr=self.c1, name="hello-world", source_type=8, webhook_rebuild=True,
            source_json='{"clone_url": "https://pagure.io/test/copr/copr"}'
        )
        build = build_on_fedmsg_loop()
        message = Message(
            'io.pagure.prod.pagure.pull-request.updated',
            self.data['msg']
        )
>       build.the_call(message)
tests/test_pagure_events.py:79: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
pagure_events.py:239: in the_call
    candidates = ScmPackage.get_candidates_for_rebuild(event_info.base_clone_url)
pagure_events.py:76: in get_candidates_for_rebuild
    return [ScmPackage(row) for row in rows]
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/query.py:2812: in __iter__
    result = self._iter()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/query.py:2826: in _iter
    result: Union[ScalarResult[_T], Result[_T]] = self.session.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:2306: in execute
    return self._execute_internal(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:2170: in _execute_internal
    ) = compile_state_cls.orm_pre_session_exec(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/context.py:549: in orm_pre_session_exec
    session._autoflush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:3005: in _autoflush
    raise e.with_traceback(sys.exc_info()[2])
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:2994: in _autoflush
    self.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8dee6ec0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8ff48a40>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (raised as a result of Query-invoked autoflush; consider using a session.no_autoflush block if this flush is occurring prematurely)
E       (sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
E       [SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
E       [parameters: [('f18',), ('fedora-17',), ('master',)]]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
------------------------------ Captured log call -------------------------------
INFO     coprs:pagure_events.py:220 Got topic: io.pagure.prod.pagure.pull-request.updated
INFO     coprs:pagure_events.py:233 event_info = Munch({'object_id': 1, 'object_type': 'pull-request', 'base_project_url_path': 'test/copr/copr', 'base_clone_url_path': 'test/copr/copr', 'base_clone_url': 'https://pagure.io/test/copr/copr', 'project_url_path': 'test/copr/copr', 'clone_url_path': 'test/copr/copr', 'clone_url': 'https://pagure.io/test/copr/copr', 'branch_from': 'test_PR', 'branch_to': 'master', 'start_commit': '78a74b02771506daf8927b3391a669cbc32ccf10', 'end_commit': 'da3d120f2ff24fa730067735c19a0b52c8bc1a44', 'user': 'jdoe'})
_____________ TestPagureEvents.test_negative_build_from_pr_comment _____________
self = <sqlalchemy.engine.base.Connection object at 0x7fff8ff098e0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8ff096a0>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff903111c0>
parameters = [('user1', 0, 1, None)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
                    self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
                    )
            elif not effective_parameters and context.no_parameters:
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_execute_no_params:
                        if fn(cursor, str_statement, context):
                            evt_handled = True
                            break
                if not evt_handled:
                    self.dialect.do_execute_no_params(
                        cursor, str_statement, context
                    )
            else:
                effective_parameters = cast(
                    "_CoreSingleExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_execute:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_execute(
                        cursor, str_statement, effective_parameters, context
                    )
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1960: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8df08ac0>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8ff096a0>
    def do_execute(self, cursor, statement, parameters, context=None):
>       cursor.execute(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: user.username
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:924: IntegrityError
The above exception was the direct cause of the following exception:
self = <tests.test_pagure_events.TestPagureEvents object at 0x7fff90bbb0b0>
f_get_repeatedly = <MagicMock name='get_repeatedly' id='140735605084464'>
f_raw_commit_changes = <MagicMock name='raw_commit_changes' id='140735605797952'>
f_users = None, f_coprs = None
    @mock.patch('pagure_events.helpers.raw_commit_changes')
    @mock.patch('pagure_events.get_repeatedly')
    def test_negative_build_from_pr_comment(self, f_get_repeatedly, f_raw_commit_changes, f_users, f_coprs):
        f_raw_commit_changes.return_value = {
            'tests/integration/conftest.py @@ -28,6 +28,16 @@ def test_env(): return env',
            'tests/integration/conftest.py b/tests/integration/conftest.py index '
            '1747874..a2b81f6 100644 --- a/tests/integration/conftest.py +++'}
        build = build_on_fedmsg_loop()
        message = Message(
            'io.pagure.prod.pagure.pull-request.comment.added',
            self.data['msg']
        )
        build(message)
>       builds = self.models.Build.query.all()
tests/test_pagure_events.py:107: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/query.py:2672: in all
    return self._iter().all()  # type: ignore
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/query.py:2826: in _iter
    result: Union[ScalarResult[_T], Result[_T]] = self.session.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:2306: in execute
    return self._execute_internal(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:2170: in _execute_internal
    ) = compile_state_cls.orm_pre_session_exec(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/context.py:549: in orm_pre_session_exec
    session._autoflush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:3005: in _autoflush
    raise e.with_traceback(sys.exc_info()[2])
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:2994: in _autoflush
    self.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1233: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1960: in _exec_single_context
    self.dialect.do_execute(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8df08ac0>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8ff096a0>
    def do_execute(self, cursor, statement, parameters, context=None):
>       cursor.execute(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (raised as a result of Query-invoked autoflush; consider using a session.no_autoflush block if this flush is occurring prematurely)
E       (sqlite3.IntegrityError) UNIQUE constraint failed: user.username
E       [SQL: INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)]
E       [parameters: ('user1', 0, 1, None)]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:924: IntegrityError
------------------------------ Captured log call -------------------------------
INFO     coprs:pagure_events.py:220 Got topic: io.pagure.prod.pagure.pull-request.comment.added
INFO     coprs:pagure_events.py:101 This is most odd, we're not seeing comments.
INFO     coprs:pagure_events.py:233 event_info = False
INFO     coprs:pagure_events.py:236 Received event was discarded. Continuing.
__________________ TestPagureEvents.test_negative_event_info ___________________
self = <sqlalchemy.engine.base.Connection object at 0x7fff905127e0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff90511b80>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff903111c0>
parameters = [('user1', 0, 1, None)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
                    self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
                    )
            elif not effective_parameters and context.no_parameters:
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_execute_no_params:
                        if fn(cursor, str_statement, context):
                            evt_handled = True
                            break
                if not evt_handled:
                    self.dialect.do_execute_no_params(
                        cursor, str_statement, context
                    )
            else:
                effective_parameters = cast(
                    "_CoreSingleExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_execute:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_execute(
                        cursor, str_statement, effective_parameters, context
                    )
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1960: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8e954140>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff90511b80>
    def do_execute(self, cursor, statement, parameters, context=None):
>       cursor.execute(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: user.username
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:924: IntegrityError
The above exception was the direct cause of the following exception:
self = <tests.test_pagure_events.TestPagureEvents object at 0x7fff90bbb260>
f_users = None, f_coprs = None
    def test_negative_event_info(self, f_users, f_coprs):
        self.data['msg']['pullrequest']["status"] = "Closed"
        build = build_on_fedmsg_loop()
        message = Message(
            'io.pagure.prod.pagure.pull-request.comment.added',
            self.data['msg']
        )
        build(message)
>       builds = self.models.Build.query.all()
tests/test_pagure_events.py:118: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/query.py:2672: in all
    return self._iter().all()  # type: ignore
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/query.py:2826: in _iter
    result: Union[ScalarResult[_T], Result[_T]] = self.session.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:2306: in execute
    return self._execute_internal(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:2170: in _execute_internal
    ) = compile_state_cls.orm_pre_session_exec(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/context.py:549: in orm_pre_session_exec
    session._autoflush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:3005: in _autoflush
    raise e.with_traceback(sys.exc_info()[2])
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:2994: in _autoflush
    self.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1233: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1960: in _exec_single_context
    self.dialect.do_execute(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8e954140>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff90511b80>
    def do_execute(self, cursor, statement, parameters, context=None):
>       cursor.execute(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (raised as a result of Query-invoked autoflush; consider using a session.no_autoflush block if this flush is occurring prematurely)
E       (sqlite3.IntegrityError) UNIQUE constraint failed: user.username
E       [SQL: INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)]
E       [parameters: ('user1', 0, 1, None)]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:924: IntegrityError
------------------------------ Captured log call -------------------------------
INFO     coprs:pagure_events.py:220 Got topic: io.pagure.prod.pagure.pull-request.comment.added
INFO     coprs:pagure_events.py:97 Pull-request not open, discarding.
INFO     coprs:pagure_events.py:233 event_info = False
INFO     coprs:pagure_events.py:236 Received event was discarded. Continuing.
________________ TestPagureEvents.test_positive_build_from_push ________________
self = <sqlalchemy.engine.base.Connection object at 0x7fff905b9c70>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8ff71be0>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff90310da0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8ec36840>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8ff71be0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
The above exception was the direct cause of the following exception:
self = <tests.test_pagure_events.TestPagureEvents object at 0x7fff90bbb920>
f_raw_commit_changes = <MagicMock name='raw_commit_changes' id='140735600759664'>
    @mock.patch('pagure_events.helpers.raw_commit_changes')
    @mock.patch('pagure_events.get_repeatedly', mock.Mock())
    @pytest.mark.usefixtures("f_users", "f_coprs", "f_mock_chroots")
    def test_positive_build_from_push(self, f_raw_commit_changes):
        self._setup_push_msg()
        f_raw_commit_changes.return_value = {
            'tests/integration/conftest.py @@ -28,6 +28,16 @@ def test_env(): return env',
            'tests/integration/conftest.py b/tests/integration/conftest.py index '
            '1747874..a2b81f6 100644 --- a/tests/integration/conftest.py +++'}
        self.p1 = self.models.Package(
            copr=self.c1, name="hello-world", source_type=8, webhook_rebuild=True,
            source_json='{"clone_url": "https://pagure.io/test"}'
        )
        build = build_on_fedmsg_loop()
        message = Message(
            'io.pagure.prod.pagure.git.receive',
            self.data['msg']
        )
>       build.the_call(message)
tests/test_pagure_events.py:161: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
pagure_events.py:239: in the_call
    candidates = ScmPackage.get_candidates_for_rebuild(event_info.base_clone_url)
pagure_events.py:76: in get_candidates_for_rebuild
    return [ScmPackage(row) for row in rows]
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/query.py:2812: in __iter__
    result = self._iter()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/query.py:2826: in _iter
    result: Union[ScalarResult[_T], Result[_T]] = self.session.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:2306: in execute
    return self._execute_internal(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:2170: in _execute_internal
    ) = compile_state_cls.orm_pre_session_exec(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/context.py:549: in orm_pre_session_exec
    session._autoflush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:3005: in _autoflush
    raise e.with_traceback(sys.exc_info()[2])
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:2994: in _autoflush
    self.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8ec36840>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8ff71be0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (raised as a result of Query-invoked autoflush; consider using a session.no_autoflush block if this flush is occurring prematurely)
E       (sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
E       [SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
E       [parameters: [('f18',), ('fedora-17',), ('master',)]]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
------------------------------ Captured log call -------------------------------
INFO     coprs:pagure_events.py:220 Got topic: io.pagure.prod.pagure.git.receive
INFO     coprs:pagure_events.py:233 event_info = Munch({'object_id': '61bba3a6bd95fe83c651339018c1d36eae48b620', 'object_type': 'commit', 'base_project_url_path': 'test', 'base_clone_url_path': 'test', 'base_clone_url': 'https://pagure.io/test', 'project_url_path': 'test', 'clone_url_path': 'test', 'clone_url': 'https://pagure.io/test', 'branch_from': 'master', 'branch_to': 'master', 'start_commit': '61bba3a6bd95fe83c651339018c1d36eae48b620', 'end_commit': '61bba3a6bd95fe83c651339018c1d36eae48b620', 'user': 'test'})
________________ TestPagureEvents.test_negative_build_from_push ________________
self = <sqlalchemy.engine.base.Connection object at 0x7fff8fed9f10>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8feda1e0>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff903111c0>
parameters = [('user1', 0, 1, None)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
                    self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
                    )
            elif not effective_parameters and context.no_parameters:
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_execute_no_params:
                        if fn(cursor, str_statement, context):
                            evt_handled = True
                            break
                if not evt_handled:
                    self.dialect.do_execute_no_params(
                        cursor, str_statement, context
                    )
            else:
                effective_parameters = cast(
                    "_CoreSingleExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_execute:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_execute(
                        cursor, str_statement, effective_parameters, context
                    )
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1960: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8e87ebc0>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8feda1e0>
    def do_execute(self, cursor, statement, parameters, context=None):
>       cursor.execute(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: user.username
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:924: IntegrityError
The above exception was the direct cause of the following exception:
self = <tests.test_pagure_events.TestPagureEvents object at 0x7fff90bbbbf0>
f_get_repeatedly = <MagicMock name='get_repeatedly' id='140735600769936'>
f_raw_commit_changes = <MagicMock name='raw_commit_changes' id='140735608097056'>
f_users = None, f_coprs = None
    @mock.patch('pagure_events.helpers.raw_commit_changes')
    @mock.patch('pagure_events.get_repeatedly')
    def test_negative_build_from_push(self, f_get_repeatedly, f_raw_commit_changes, f_users, f_coprs):
        self._setup_push_msg()
        f_raw_commit_changes.return_value = {''}
        self.p1 = self.models.Package(
            copr=self.c1, name="hello-world", source_type=8, webhook_rebuild=True,
            source_json='{"clone_url": "https://pagure.io/test"}',
        )
        build = build_on_fedmsg_loop()
        message = Message(
            'io.pagure.prod.pagure.git.receive',
            self.data['msg']
        )
        build(message)
>       builds = self.models.Build.query.all()
tests/test_pagure_events.py:181: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/query.py:2672: in all
    return self._iter().all()  # type: ignore
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/query.py:2826: in _iter
    result: Union[ScalarResult[_T], Result[_T]] = self.session.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:2306: in execute
    return self._execute_internal(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:2170: in _execute_internal
    ) = compile_state_cls.orm_pre_session_exec(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/context.py:549: in orm_pre_session_exec
    session._autoflush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:3005: in _autoflush
    raise e.with_traceback(sys.exc_info()[2])
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:2994: in _autoflush
    self.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1233: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1960: in _exec_single_context
    self.dialect.do_execute(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8e87ebc0>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8feda1e0>
    def do_execute(self, cursor, statement, parameters, context=None):
>       cursor.execute(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (raised as a result of Query-invoked autoflush; consider using a session.no_autoflush block if this flush is occurring prematurely)
E       (sqlite3.IntegrityError) UNIQUE constraint failed: user.username
E       [SQL: INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)]
E       [parameters: ('user1', 0, 1, None)]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:924: IntegrityError
------------------------------ Captured log call -------------------------------
INFO     coprs:pagure_events.py:220 Got topic: io.pagure.prod.pagure.git.receive
INFO     coprs:pagure_events.py:233 event_info = Munch({'object_id': '61bba3a6bd95fe83c651339018c1d36eae48b620', 'object_type': 'commit', 'base_project_url_path': 'test', 'base_clone_url_path': 'test', 'base_clone_url': 'https://pagure.io/test', 'project_url_path': 'test', 'clone_url_path': 'test', 'clone_url': 'https://pagure.io/test', 'branch_from': 'master', 'branch_to': 'master', 'start_commit': '61bba3a6bd95fe83c651339018c1d36eae48b620', 'end_commit': '61bba3a6bd95fe83c651339018c1d36eae48b620', 'user': 'test'})
INFO     coprs:pagure_events.py:259 changed files:
______________ TestPagureEvents.test_positive_build_from_pr_fork _______________
self = <tests.test_pagure_events.TestPagureEvents object at 0x7fff90bbb8f0>
f_raw_commit_changes = <MagicMock name='raw_commit_changes' id='140735608625616'>
    @mock.patch('pagure_events.helpers.raw_commit_changes')
    @mock.patch('pagure_events.get_repeatedly', mock.Mock())
    @pytest.mark.usefixtures("f_users", "f_users_api", "f_coprs", "f_mock_chroots")
    def test_positive_build_from_pr_fork(self, f_raw_commit_changes):
        """
        Make sure that PRs against forks in Fedora DistGit trigger builds
        """
        f_raw_commit_changes.return_value = {
            'tests/integration/conftest.py @@ -28,6 +28,16 @@ def test_env(): return env',
            'tests/integration/conftest.py b/tests/integration/conftest.py index '
            '1747874..a2b81f6 100644 --- a/tests/integration/conftest.py +++'}
    
        # Create a new package via API instead of simply SQLAlchemy model, so
        # we can make sure that the clone URL is generated properly
        endpoint = "/api_3/package/add/{0}/{1}/{2}".format(
            self.c1.full_name, "hello-world", "distgit")
        form_data = {
            'package_name': 'hello-world',
            'distgit': 'fedora',
            'namespace': 'forks/frostyx',
            'webhook_rebuild': True,
        }
        response = self.post_api3_with_auth(endpoint, form_data, self.u1)
>       assert response.status_code == 200
E       assert 500 == 200
E        +  where 500 = <WrapperTestResponse streamed [500 INTERNAL SERVER ERROR]>.status_code
tests/test_pagure_events.py:217: AssertionError
------------------------------ Captured log call -------------------------------
ERROR    coprs:error_handlers.py:102 Admin-only exception
Request: POST http://localhost.localdomain/api_3/package/add/user1/foocopr/hello-world/distgit
User: None
Traceback (most recent call last):
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py", line 1929, in _exec_single_context
    self.dialect.do_executemany(
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py", line 921, in do_executemany
    cursor.executemany(statement, parameters)
sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
  File "/usr/lib/python3.12/site-packages/flask/app.py", line 870, in full_dispatch_request
    rv = self.dispatch_request()
         ^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.12/site-packages/flask/app.py", line 855, in dispatch_request
    return self.ensure_sync(self.view_functions[rule.endpoint])(**view_args)  # type: ignore[no-any-return]
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.12/site-packages/flask_restx/api.py", line 402, in wrapper
    resp = resource(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.12/site-packages/flask/views.py", line 110, in view
    return current_app.ensure_sync(self.dispatch_request)(**kwargs)  # type: ignore[no-any-return]
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.12/site-packages/flask_restx/resource.py", line 41, in dispatch_request
    resp = meth(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^
  File "/builddir/build/BUILD/copr-frontend-1.204/coprs_frontend/coprs/views/misc.py", line 341, in check_if_api_login_is_required
    retval = _shared_api_login_required_wrapper()
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/builddir/build/BUILD/copr-frontend-1.204/coprs_frontend/coprs/views/misc.py", line 170, in _shared_api_login_required_wrapper
    user = UsersLogic.get_by_api_login(api_login).first()
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/query.py", line 2727, in first
    return self.limit(1)._iter().first()  # type: ignore
           ^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/query.py", line 2826, in _iter
    result: Union[ScalarResult[_T], Result[_T]] = self.session.execute(
                                                  ^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py", line 2306, in execute
    return self._execute_internal(
           ^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py", line 2170, in _execute_internal
    ) = compile_state_cls.orm_pre_session_exec(
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/context.py", line 549, in orm_pre_session_exec
    session._autoflush()
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py", line 3005, in _autoflush
    raise e.with_traceback(sys.exc_info()[2])
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py", line 2994, in _autoflush
    self.flush()
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py", line 4296, in flush
    self._flush(objects)
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py", line 4431, in _flush
    with util.safe_reraise():
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py", line 146, in __exit__
    raise exc_value.with_traceback(exc_tb)
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py", line 4392, in _flush
    flush_context.execute()
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py", line 466, in execute
    rec.execute(self)
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py", line 642, in execute
    util.preloaded.orm_persistence.save_obj(
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py", line 93, in save_obj
    _emit_insert_statements(
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py", line 1048, in _emit_insert_statements
    result = connection.execute(
             ^^^^^^^^^^^^^^^^^^^
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py", line 1408, in execute
    return meth(
           ^^^^^
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py", line 513, in _execute_on_connection
    return connection._execute_clauseelement(
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py", line 1630, in _execute_clauseelement
    ret = self._execute_context(
          ^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py", line 1839, in _execute_context
    return self._exec_single_context(
           ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py", line 1979, in _exec_single_context
    self._handle_dbapi_exception(
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py", line 2335, in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py", line 1929, in _exec_single_context
    self.dialect.do_executemany(
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py", line 921, in do_executemany
    cursor.executemany(statement, parameters)
sqlalchemy.exc.IntegrityError: (raised as a result of Query-invoked autoflush; consider using a session.no_autoflush block if this flush is occurring prematurely)
(sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
[SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
[parameters: [('f18',), ('fedora-17',), ('master',)]]
(Background on this error at: https://sqlalche.me/e/20/gkpj)
ERROR    coprs:error_handlers.py:42 Response error: gkpj Database error, contact admin
ERROR    coprs:error_handlers.py:102 Admin-only exception
Request: POST http://localhost.localdomain/api_3/package/add/user1/foocopr/hello-world/distgit
User: None
Traceback (most recent call last):
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py", line 1929, in _exec_single_context
    self.dialect.do_executemany(
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py", line 921, in do_executemany
    cursor.executemany(statement, parameters)
sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
  File "/usr/lib/python3.12/site-packages/flask/app.py", line 870, in full_dispatch_request
    rv = self.dispatch_request()
         ^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.12/site-packages/flask/app.py", line 855, in dispatch_request
    return self.ensure_sync(self.view_functions[rule.endpoint])(**view_args)  # type: ignore[no-any-return]
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.12/site-packages/flask_restx/api.py", line 402, in wrapper
    resp = resource(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.12/site-packages/flask/views.py", line 110, in view
    return current_app.ensure_sync(self.dispatch_request)(**kwargs)  # type: ignore[no-any-return]
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.12/site-packages/flask_restx/resource.py", line 41, in dispatch_request
    resp = meth(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^
  File "/builddir/build/BUILD/copr-frontend-1.204/coprs_frontend/coprs/views/misc.py", line 341, in check_if_api_login_is_required
    retval = _shared_api_login_required_wrapper()
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/builddir/build/BUILD/copr-frontend-1.204/coprs_frontend/coprs/views/misc.py", line 170, in _shared_api_login_required_wrapper
    user = UsersLogic.get_by_api_login(api_login).first()
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/query.py", line 2727, in first
    return self.limit(1)._iter().first()  # type: ignore
           ^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/query.py", line 2826, in _iter
    result: Union[ScalarResult[_T], Result[_T]] = self.session.execute(
                                                  ^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py", line 2306, in execute
    return self._execute_internal(
           ^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py", line 2170, in _execute_internal
    ) = compile_state_cls.orm_pre_session_exec(
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/context.py", line 549, in orm_pre_session_exec
    session._autoflush()
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py", line 3005, in _autoflush
    raise e.with_traceback(sys.exc_info()[2])
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py", line 2994, in _autoflush
    self.flush()
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py", line 4296, in flush
    self._flush(objects)
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py", line 4431, in _flush
    with util.safe_reraise():
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py", line 146, in __exit__
    raise exc_value.with_traceback(exc_tb)
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py", line 4392, in _flush
    flush_context.execute()
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py", line 466, in execute
    rec.execute(self)
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py", line 642, in execute
    util.preloaded.orm_persistence.save_obj(
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py", line 93, in save_obj
    _emit_insert_statements(
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py", line 1048, in _emit_insert_statements
    result = connection.execute(
             ^^^^^^^^^^^^^^^^^^^
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py", line 1408, in execute
    return meth(
           ^^^^^
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py", line 513, in _execute_on_connection
    return connection._execute_clauseelement(
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py", line 1630, in _execute_clauseelement
    ret = self._execute_context(
          ^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py", line 1839, in _execute_context
    return self._exec_single_context(
           ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py", line 1979, in _exec_single_context
    self._handle_dbapi_exception(
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py", line 2335, in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py", line 1929, in _exec_single_context
    self.dialect.do_executemany(
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py", line 921, in do_executemany
    cursor.executemany(statement, parameters)
sqlalchemy.exc.IntegrityError: (raised as a result of Query-invoked autoflush; consider using a session.no_autoflush block if this flush is occurring prematurely)
(sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
[SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
[parameters: [('f18',), ('fedora-17',), ('master',)]]
(Background on this error at: https://sqlalche.me/e/20/gkpj)
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
  File "/usr/lib/python3.12/site-packages/flask_restx/api.py", line 669, in error_router
    return self.handle_error(e)
           ^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.12/site-packages/flask_restx/api.py", line 753, in handle_error
    if code >= HTTPStatus.INTERNAL_SERVER_ERROR:
       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
TypeError: '>=' not supported between instances of 'str' and 'HTTPStatus'
ERROR    coprs:error_handlers.py:42 Response error: 500 Request wasn't successful, there is probably a bug in the Copr code.
__________________ TestMockChroot.test_list_available_chroots __________________
self = <test_mock_chroot.TestMockChroot object at 0x7fff90a8c1a0>
f_mock_chroots = None
    def test_list_available_chroots(self, f_mock_chroots):
        r = self.tc.get("/api_3/mock-chroots/list")
>       assert r.status_code == 200
E       assert 500 == 200
E        +  where 500 = <WrapperTestResponse streamed [500 INTERNAL SERVER ERROR]>.status_code
tests/test_apiv3/test_mock_chroot.py:9: AssertionError
------------------------------ Captured log call -------------------------------
ERROR    coprs:error_handlers.py:102 Admin-only exception
Request: GET http://localhost.localdomain/api_3/mock-chroots/list
User: None
Traceback (most recent call last):
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py", line 1929, in _exec_single_context
    self.dialect.do_executemany(
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py", line 921, in do_executemany
    cursor.executemany(statement, parameters)
sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
  File "/usr/lib/python3.12/site-packages/flask/app.py", line 870, in full_dispatch_request
    rv = self.dispatch_request()
         ^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.12/site-packages/flask/app.py", line 855, in dispatch_request
    return self.ensure_sync(self.view_functions[rule.endpoint])(**view_args)  # type: ignore[no-any-return]
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.12/site-packages/flask_restx/api.py", line 402, in wrapper
    resp = resource(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.12/site-packages/flask/views.py", line 110, in view
    return current_app.ensure_sync(self.dispatch_request)(**kwargs)  # type: ignore[no-any-return]
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.12/site-packages/flask_restx/resource.py", line 41, in dispatch_request
    resp = meth(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^
  File "/builddir/build/BUILD/copr-frontend-1.204/coprs_frontend/coprs/views/apiv3_ns/apiv3_mock_chroots.py", line 28, in get
    chroots = MockChrootsLogic.active_names_with_comments()
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/builddir/build/BUILD/copr-frontend-1.204/coprs_frontend/coprs/logic/coprs_logic.py", line 1419, in active_names_with_comments
    return [(ch.name, ch.comment) for ch in cls.get_multiple(active_only=True).all()]
                                            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/query.py", line 2672, in all
    return self._iter().all()  # type: ignore
           ^^^^^^^^^^^^
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/query.py", line 2826, in _iter
    result: Union[ScalarResult[_T], Result[_T]] = self.session.execute(
                                                  ^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py", line 2306, in execute
    return self._execute_internal(
           ^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py", line 2170, in _execute_internal
    ) = compile_state_cls.orm_pre_session_exec(
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/context.py", line 549, in orm_pre_session_exec
    session._autoflush()
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py", line 3005, in _autoflush
    raise e.with_traceback(sys.exc_info()[2])
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py", line 2994, in _autoflush
    self.flush()
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py", line 4296, in flush
    self._flush(objects)
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py", line 4431, in _flush
    with util.safe_reraise():
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py", line 146, in __exit__
    raise exc_value.with_traceback(exc_tb)
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py", line 4392, in _flush
    flush_context.execute()
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py", line 466, in execute
    rec.execute(self)
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py", line 642, in execute
    util.preloaded.orm_persistence.save_obj(
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py", line 93, in save_obj
    _emit_insert_statements(
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py", line 1048, in _emit_insert_statements
    result = connection.execute(
             ^^^^^^^^^^^^^^^^^^^
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py", line 1408, in execute
    return meth(
           ^^^^^
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py", line 513, in _execute_on_connection
    return connection._execute_clauseelement(
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py", line 1630, in _execute_clauseelement
    ret = self._execute_context(
          ^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py", line 1839, in _execute_context
    return self._exec_single_context(
           ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py", line 1979, in _exec_single_context
    self._handle_dbapi_exception(
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py", line 2335, in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py", line 1929, in _exec_single_context
    self.dialect.do_executemany(
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py", line 921, in do_executemany
    cursor.executemany(statement, parameters)
sqlalchemy.exc.IntegrityError: (raised as a result of Query-invoked autoflush; consider using a session.no_autoflush block if this flush is occurring prematurely)
(sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
[SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
[parameters: [('f18',), ('fedora-17',), ('master',)]]
(Background on this error at: https://sqlalche.me/e/20/gkpj)
ERROR    coprs:error_handlers.py:42 Response error: gkpj Database error, contact admin
ERROR    coprs:error_handlers.py:102 Admin-only exception
Request: GET http://localhost.localdomain/api_3/mock-chroots/list
User: None
Traceback (most recent call last):
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py", line 1929, in _exec_single_context
    self.dialect.do_executemany(
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py", line 921, in do_executemany
    cursor.executemany(statement, parameters)
sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
  File "/usr/lib/python3.12/site-packages/flask/app.py", line 870, in full_dispatch_request
    rv = self.dispatch_request()
         ^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.12/site-packages/flask/app.py", line 855, in dispatch_request
    return self.ensure_sync(self.view_functions[rule.endpoint])(**view_args)  # type: ignore[no-any-return]
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.12/site-packages/flask_restx/api.py", line 402, in wrapper
    resp = resource(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.12/site-packages/flask/views.py", line 110, in view
    return current_app.ensure_sync(self.dispatch_request)(**kwargs)  # type: ignore[no-any-return]
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.12/site-packages/flask_restx/resource.py", line 41, in dispatch_request
    resp = meth(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^
  File "/builddir/build/BUILD/copr-frontend-1.204/coprs_frontend/coprs/views/apiv3_ns/apiv3_mock_chroots.py", line 28, in get
    chroots = MockChrootsLogic.active_names_with_comments()
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/builddir/build/BUILD/copr-frontend-1.204/coprs_frontend/coprs/logic/coprs_logic.py", line 1419, in active_names_with_comments
    return [(ch.name, ch.comment) for ch in cls.get_multiple(active_only=True).all()]
                                            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/query.py", line 2672, in all
    return self._iter().all()  # type: ignore
           ^^^^^^^^^^^^
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/query.py", line 2826, in _iter
    result: Union[ScalarResult[_T], Result[_T]] = self.session.execute(
                                                  ^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py", line 2306, in execute
    return self._execute_internal(
           ^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py", line 2170, in _execute_internal
    ) = compile_state_cls.orm_pre_session_exec(
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/context.py", line 549, in orm_pre_session_exec
    session._autoflush()
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py", line 3005, in _autoflush
    raise e.with_traceback(sys.exc_info()[2])
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py", line 2994, in _autoflush
    self.flush()
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py", line 4296, in flush
    self._flush(objects)
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py", line 4431, in _flush
    with util.safe_reraise():
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py", line 146, in __exit__
    raise exc_value.with_traceback(exc_tb)
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py", line 4392, in _flush
    flush_context.execute()
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py", line 466, in execute
    rec.execute(self)
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py", line 642, in execute
    util.preloaded.orm_persistence.save_obj(
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py", line 93, in save_obj
    _emit_insert_statements(
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py", line 1048, in _emit_insert_statements
    result = connection.execute(
             ^^^^^^^^^^^^^^^^^^^
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py", line 1408, in execute
    return meth(
           ^^^^^
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py", line 513, in _execute_on_connection
    return connection._execute_clauseelement(
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py", line 1630, in _execute_clauseelement
    ret = self._execute_context(
          ^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py", line 1839, in _execute_context
    return self._exec_single_context(
           ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py", line 1979, in _exec_single_context
    self._handle_dbapi_exception(
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py", line 2335, in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py", line 1929, in _exec_single_context
    self.dialect.do_executemany(
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py", line 921, in do_executemany
    cursor.executemany(statement, parameters)
sqlalchemy.exc.IntegrityError: (raised as a result of Query-invoked autoflush; consider using a session.no_autoflush block if this flush is occurring prematurely)
(sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
[SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
[parameters: [('f18',), ('fedora-17',), ('master',)]]
(Background on this error at: https://sqlalche.me/e/20/gkpj)
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
  File "/usr/lib/python3.12/site-packages/flask_restx/api.py", line 669, in error_router
    return self.handle_error(e)
           ^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.12/site-packages/flask_restx/api.py", line 753, in handle_error
    if code >= HTTPStatus.INTERNAL_SERVER_ERROR:
       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
TypeError: '>=' not supported between instances of 'str' and 'HTTPStatus'
ERROR    coprs:error_handlers.py:42 Response error: 500 Request wasn't successful, there is probably a bug in the Copr code.
_____________ TestBuildsLogic.test_resubmit_build_inherit_git_hash _____________
self = <sqlalchemy.engine.base.Connection object at 0x7fff8e6e4620>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8e6e52b0>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff90310da0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8d962ac0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8e6e52b0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
The above exception was the direct cause of the following exception:
self = <test_builds_logic.TestBuildsLogic object at 0x7fff90aaba40>
    @pytest.mark.usefixtures("f_users", "f_coprs", "f_mock_chroots", "f_builds")
    def test_resubmit_build_inherit_git_hash(self):
        orig_git_hash = self.b1.build_chroots[0].git_hash
        self.b1.source_type = 2  # builds from upload should inherit the git hash
>       new_build = BuildsLogic.create_new_from_other_build(self.u1, self.c1, self.b1)
tests/test_logic/test_builds_logic.py:387: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
coprs/logic/builds_logic.py:454: in create_new_from_other_build
    build = cls.create_new(user, copr, source_build.source_type, source_build.source_json, chroot_names,
coprs/logic/builds_logic.py:693: in create_new
    build = cls.add(
coprs/logic/builds_logic.py:816: in add
    coprs_logic.CoprsLogic.raise_if_unfinished_blocking_action(
coprs/logic/coprs_logic.py:439: in raise_if_unfinished_blocking_action
    unfinished_actions = cls.unfinished_blocking_actions_for(copr).all()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/query.py:2672: in all
    return self._iter().all()  # type: ignore
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/query.py:2826: in _iter
    result: Union[ScalarResult[_T], Result[_T]] = self.session.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:2306: in execute
    return self._execute_internal(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:2170: in _execute_internal
    ) = compile_state_cls.orm_pre_session_exec(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/context.py:549: in orm_pre_session_exec
    session._autoflush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:3005: in _autoflush
    raise e.with_traceback(sys.exc_info()[2])
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:2994: in _autoflush
    self.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8d962ac0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8e6e52b0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (raised as a result of Query-invoked autoflush; consider using a session.no_autoflush block if this flush is occurring prematurely)
E       (sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
E       [SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
E       [parameters: [('f18',), ('fedora-17',), ('master',)]]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
_____________________ TestBuildsLogic.test_mark_as_failed ______________________
self = <sqlalchemy.engine.base.Connection object at 0x7fff8ef73b00>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8fdd3950>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff90310da0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8df1be40>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8fdd3950>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
The above exception was the direct cause of the following exception:
self = <test_builds_logic.TestBuildsLogic object at 0x7fff90b034a0>
f_users = None, f_coprs = None, f_mock_chroots = None, f_builds = None
    def test_mark_as_failed(self, f_users, f_coprs, f_mock_chroots, f_builds):
        self.b1.source_status = StatusEnum("succeeded")
>       self.db.session.commit()
tests/test_logic/test_builds_logic.py:393: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
<string>:2: in commit
    ???
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
<string>:2: in _prepare_impl
    ???
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8df1be40>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8fdd3950>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
E       [SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
E       [parameters: [('f18',), ('fedora-17',), ('master',)]]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
___________________ TestCoprsLogic.test_raise_if_cant_delete ___________________
self = <sqlalchemy.engine.base.Connection object at 0x7fff8f13d370>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8f13d430>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff903111c0>
parameters = [('user1', 0, 1, '{"fas_groups": ["fas_1", "fas_2"]}')]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
                    self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
                    )
            elif not effective_parameters and context.no_parameters:
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_execute_no_params:
                        if fn(cursor, str_statement, context):
                            evt_handled = True
                            break
                if not evt_handled:
                    self.dialect.do_execute_no_params(
                        cursor, str_statement, context
                    )
            else:
                effective_parameters = cast(
                    "_CoreSingleExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_execute:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_execute(
                        cursor, str_statement, effective_parameters, context
                    )
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1960: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8d879e40>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, '{"fas_groups": ["fas_1", "fas_2"]}')
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8f13d430>
    def do_execute(self, cursor, statement, parameters, context=None):
>       cursor.execute(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: user.username
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:924: IntegrityError
The above exception was the direct cause of the following exception:
self = <test_coprs_logic.TestCoprsLogic object at 0x7fff90b664e0>
f_users = None, f_fas_groups = ['fas_1', 'fas_2', 'fas_3', 'fas_4']
f_coprs = None
    def test_raise_if_cant_delete(self, f_users, f_fas_groups, f_coprs):
        # Project owner should be able to delete his project
        CoprsLogic.raise_if_cant_delete(self.u2, self.c2)
    
        # Admin should be able to delete everything
        CoprsLogic.raise_if_cant_delete(self.u1, self.c2)
    
        # A user can't remove someone else's project
        with pytest.raises(InsufficientRightsException):
            CoprsLogic.raise_if_cant_delete(self.u2, self.c1)
    
        # Group member should be able to remove group project
        self.u2.openid_groups = {"fas_groups": ["somegroup"]}
        self.u3.openid_groups = {"fas_groups": ["somegroup"]}
    
>       self.c2.group = UsersLogic.get_group_by_fas_name_or_create("somegroup")
tests/test_logic/test_coprs_logic.py:99: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
coprs/logic/users_logic.py:106: in get_group_by_fas_name_or_create
    mb_group = cls.get_group_by_fas_name(fas_name).first()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/query.py:2727: in first
    return self.limit(1)._iter().first()  # type: ignore
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/query.py:2826: in _iter
    result: Union[ScalarResult[_T], Result[_T]] = self.session.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:2306: in execute
    return self._execute_internal(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:2170: in _execute_internal
    ) = compile_state_cls.orm_pre_session_exec(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/context.py:549: in orm_pre_session_exec
    session._autoflush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:3005: in _autoflush
    raise e.with_traceback(sys.exc_info()[2])
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:2994: in _autoflush
    self.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1233: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1960: in _exec_single_context
    self.dialect.do_execute(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8d879e40>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, '{"fas_groups": ["fas_1", "fas_2"]}')
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8f13d430>
    def do_execute(self, cursor, statement, parameters, context=None):
>       cursor.execute(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (raised as a result of Query-invoked autoflush; consider using a session.no_autoflush block if this flush is occurring prematurely)
E       (sqlite3.IntegrityError) UNIQUE constraint failed: user.username
E       [SQL: INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)]
E       [parameters: ('user1', 0, 1, '{"fas_groups": ["fas_1", "fas_2"]}')]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:924: IntegrityError
________________________ TestStatLogic.test_new_by_incr ________________________
self = <test_stat_logic.TestStatLogic object at 0x7fff90b6c4d0>
    def test_new_by_incr(self):
>       with pytest.raises(Exception):
E       Failed: DID NOT RAISE <class 'Exception'>
tests/test_logic/test_stat_logic.py:26: Failed
___________________ TestWaitingBuilds.test_no_pending_builds ___________________
attr = 'is_background'
    def _parse_attr_argument(
        attr: _AttrType,
    ) -> Tuple[InspectionAttr, _InternalEntityType[Any], MapperProperty[Any]]:
        """parse an attribute or wildcard argument to produce an
        :class:`._AbstractLoad` instance.
    
        This is used by the standalone loader strategy functions like
        ``joinedload()``, ``defer()``, etc. to produce :class:`_orm.Load` or
        :class:`._WildcardLoad` objects.
    
        """
        try:
            # TODO: need to figure out this None thing being returned by
            # inspect(), it should not have None as an option in most cases
            # if at all
>           insp: InspectionAttr = inspect(attr)  # type: ignore
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/strategy_options.py:2338: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
subject = 'is_background', raiseerr = True
    def inspect(subject: Any, raiseerr: bool = True) -> Any:
        """Produce an inspection object for the given target.
    
        The returned value in some cases may be the
        same object as the one given, such as if a
        :class:`_orm.Mapper` object is passed.   In other
        cases, it will be an instance of the registered
        inspection type for the given object, such as
        if an :class:`_engine.Engine` is passed, an
        :class:`_reflection.Inspector` object is returned.
    
        :param subject: the subject to be inspected.
        :param raiseerr: When ``True``, if the given subject
         does not
         correspond to a known SQLAlchemy inspected type,
         :class:`sqlalchemy.exc.NoInspectionAvailable`
         is raised.  If ``False``, ``None`` is returned.
    
        """
        type_ = type(subject)
        for cls in type_.__mro__:
            if cls in _registrars:
                reg = _registrars.get(cls, None)
                if reg is None:
                    continue
                elif reg is True:
                    return subject
                ret = reg(subject)
                if ret is not None:
                    return ret
        else:
            reg = ret = None
    
        if raiseerr and (reg is None or ret is None):
>           raise exc.NoInspectionAvailable(
                "No inspection system is "
                "available for object of type %s" % type_
            )
E           sqlalchemy.exc.NoInspectionAvailable: No inspection system is available for object of type <class 'str'>
/usr/lib64/python3.12/site-packages/sqlalchemy/inspection.py:147: NoInspectionAvailable
The above exception was the direct cause of the following exception:
self = <test_backend_general.TestWaitingBuilds object at 0x7fff9070bb00>
    def test_no_pending_builds(self):
>       assert b'[]' in self.tc.get(
            "/backend/pending-jobs/", headers=self.auth_header).data
tests/test_views/test_backend_ns/test_backend_general.py:51: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib/python3.12/site-packages/werkzeug/test.py:1160: in get
    return self.open(*args, **kw)
/usr/lib/python3.12/site-packages/flask/testing.py:235: in open
    response = super().open(
/usr/lib/python3.12/site-packages/werkzeug/test.py:1114: in open
    response = self.run_wsgi_app(request.environ, buffered=buffered)
/usr/lib/python3.12/site-packages/werkzeug/test.py:986: in run_wsgi_app
    rv = run_wsgi_app(self.application, environ, buffered=buffered)
/usr/lib/python3.12/site-packages/werkzeug/test.py:1280: in run_wsgi_app
    for item in app_iter:
/usr/lib/python3.12/site-packages/werkzeug/wsgi.py:256: in __next__
    return self._next()
/usr/lib/python3.12/site-packages/werkzeug/wrappers/response.py:32: in _iter_encoded
    for item in iterable:
/usr/lib/python3.12/site-packages/flask/helpers.py:113: in generator
    yield from gen
coprs/helpers.py:859: in _batched_stream
    for chunk in _stream():
coprs/helpers.py:843: in _stream
    for item in stream:
coprs/views/backend_ns/backend_general.py:347: in _stream
    for build in BuildsLogic.get_pending_srpm_build_tasks(**args):
coprs/logic/builds_logic.py:318: in get_pending_srpm_build_tasks
    load_only(*load_build_fields),
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/strategy_options.py:2391: in load_only
    _, lead_element, _ = _parse_attr_argument(attrs[0])
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
attr = 'is_background'
    def _parse_attr_argument(
        attr: _AttrType,
    ) -> Tuple[InspectionAttr, _InternalEntityType[Any], MapperProperty[Any]]:
        """parse an attribute or wildcard argument to produce an
        :class:`._AbstractLoad` instance.
    
        This is used by the standalone loader strategy functions like
        ``joinedload()``, ``defer()``, etc. to produce :class:`_orm.Load` or
        :class:`._WildcardLoad` objects.
    
        """
        try:
            # TODO: need to figure out this None thing being returned by
            # inspect(), it should not have None as an option in most cases
            # if at all
            insp: InspectionAttr = inspect(attr)  # type: ignore
        except sa_exc.NoInspectionAvailable as err:
>           raise sa_exc.ArgumentError(
                "expected ORM mapped attribute for loader strategy argument"
            ) from err
E           sqlalchemy.exc.ArgumentError: expected ORM mapped attribute for loader strategy argument
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/strategy_options.py:2340: ArgumentError
------------------------------ Captured log call -------------------------------
INFO     coprs:backend_general.py:346 Generating SRPM builds
________ TestCoprDeleteBuild.test_copr_build_submitter_can_delete_build ________
self = <sqlalchemy.engine.base.Connection object at 0x7fff8e30bb60>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8e309f40>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff90310da0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8ceac8c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8e309f40>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
The above exception was the direct cause of the following exception:
self = <test_coprs_builds.TestCoprDeleteBuild object at 0x7fff90740110>
f_users = None, f_coprs = None, f_mock_chroots = None, f_builds = None
    @TransactionDecorator("u1")
    def test_copr_build_submitter_can_delete_build(self, f_users,
                                                   f_coprs, f_mock_chroots,
                                                   f_builds):
        self.db.session.add(self.b1)
>       self.db.session.commit()
tests/test_views/test_coprs_ns/test_coprs_builds.py:177: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
<string>:2: in commit
    ???
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
<string>:2: in _prepare_impl
    ???
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8ceac8c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8e309f40>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
E       [SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
E       [parameters: [('f18',), ('fedora-17',), ('master',)]]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
___ TestCoprDeleteBuild.test_copr_delete_multiple_builds_sends_single_action ___
self = <sqlalchemy.engine.base.Connection object at 0x7fff8dd72870>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8dd70a10>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff90310da0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8cf2d740>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8dd70a10>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
The above exception was the direct cause of the following exception:
self = <test_coprs_builds.TestCoprDeleteBuild object at 0x7fff906f63c0>
f_users = None, f_coprs = None, f_pr_build = None
    @TransactionDecorator("u1")
    def test_copr_delete_multiple_builds_sends_single_action(self, f_users,
                                                             f_coprs,
                                                             f_pr_build):
        for bc in self.b2_bc:
            bc.status = StatusEnum("canceled")
        self.db.session.add_all(self.b2_bc)
        self.db.session.add_all([self.b1, self.b2])
>       self.db.session.commit()
tests/test_views/test_coprs_ns/test_coprs_builds.py:226: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
<string>:2: in commit
    ???
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
<string>:2: in _prepare_impl
    ???
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8cf2d740>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8dd70a10>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
E       [SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
E       [parameters: [('f18',), ('fedora-17',), ('master',)]]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
_______ TestCoprDeleteBuild.test_copr_delete_package_sends_single_action _______
self = <sqlalchemy.engine.base.Connection object at 0x7fff8dd73110>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8ddebfb0>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x7fff90310da0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8c903ec0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8ddebfb0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
The above exception was the direct cause of the following exception:
self = <test_coprs_builds.TestCoprDeleteBuild object at 0x7fff907402f0>
f_users = None, f_coprs = None, f_mock_chroots = None, f_builds = None
    @TransactionDecorator("u1")
    def test_copr_delete_package_sends_single_action(self, f_users,
                                                     f_coprs, f_mock_chroots,
                                                     f_builds):
        for bc in self.b2_bc:
            bc.status = StatusEnum("canceled")
        self.db.session.add_all(self.b2_bc)
        self.db.session.add_all([self.b1, self.b2, self.p1])
>       self.db.session.commit()
tests/test_views/test_coprs_ns/test_coprs_builds.py:275: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
<string>:2: in commit
    ???
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
<string>:2: in _prepare_impl
    ???
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7fff95ee98e0>
cursor = <sqlite3.Cursor object at 0x7fff8c903ec0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7fff8ddebfb0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
E       [SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
E       [parameters: [('f18',), ('fedora-17',), ('master',)]]
E       (Background on this error at: https://sqlalche.me/e/20/gkpj)
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py:921: IntegrityError
_____________ TestMonitor.test_regression_monitor_no_copr_returned _____________
self = <test_coprs_general.TestMonitor object at 0x7fff9099ba70>
    @pytest.mark.usefixtures("f_db", "f_users", "f_mock_chroots", "f_db")
    def test_regression_monitor_no_copr_returned(self):
        # https://bugzilla.redhat.com/show_bug.cgi?id=1165284
        copr_name = u"temp"
    
        # trying to get monitor page for non-existing project
        url_monitor = "/coprs/{}/{}/monitor/".format(self.u1.name, copr_name)
    
        res = self.tc.get(url_monitor)
>       assert res.status_code == 404
E       assert 0 == 404
E        +  where 0 = <WrapperTestResponse streamed [0 gkpj]>.status_code
tests/test_views/test_coprs_ns/test_coprs_general.py:37: AssertionError
------------------------------ Captured log call -------------------------------
ERROR    coprs:error_handlers.py:102 Admin-only exception
Request: GET http://localhost.localdomain/coprs/user1/temp/monitor/
User: None
Traceback (most recent call last):
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py", line 1929, in _exec_single_context
    self.dialect.do_executemany(
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py", line 921, in do_executemany
    cursor.executemany(statement, parameters)
sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
  File "/usr/lib/python3.12/site-packages/flask/app.py", line 870, in full_dispatch_request
    rv = self.dispatch_request()
         ^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.12/site-packages/flask/app.py", line 855, in dispatch_request
    return self.ensure_sync(self.view_functions[rule.endpoint])(**view_args)  # type: ignore[no-any-return]
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/builddir/build/BUILD/copr-frontend-1.204/coprs_frontend/coprs/views/misc.py", line 253, in wrapper
    copr = ComplexLogic.get_copr(username, coprname, with_mock_chroots=True)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/builddir/build/BUILD/copr-frontend-1.204/coprs_frontend/coprs/logic/complex_logic.py", line 201, in get_copr
    return CoprsLogic.get(user_name, copr_name, **kwargs).filter(Copr.group_id.is_(None)).one()
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/query.py", line 2777, in one
    return self._iter().one()  # type: ignore
           ^^^^^^^^^^^^
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/query.py", line 2826, in _iter
    result: Union[ScalarResult[_T], Result[_T]] = self.session.execute(
                                                  ^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py", line 2306, in execute
    return self._execute_internal(
           ^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py", line 2170, in _execute_internal
    ) = compile_state_cls.orm_pre_session_exec(
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/context.py", line 549, in orm_pre_session_exec
    session._autoflush()
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py", line 3005, in _autoflush
    raise e.with_traceback(sys.exc_info()[2])
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py", line 2994, in _autoflush
    self.flush()
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py", line 4296, in flush
    self._flush(objects)
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py", line 4431, in _flush
    with util.safe_reraise():
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py", line 146, in __exit__
    raise exc_value.with_traceback(exc_tb)
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py", line 4392, in _flush
    flush_context.execute()
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py", line 466, in execute
    rec.execute(self)
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py", line 642, in execute
    util.preloaded.orm_persistence.save_obj(
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py", line 93, in save_obj
    _emit_insert_statements(
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py", line 1048, in _emit_insert_statements
    result = connection.execute(
             ^^^^^^^^^^^^^^^^^^^
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py", line 1408, in execute
    return meth(
           ^^^^^
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py", line 513, in _execute_on_connection
    return connection._execute_clauseelement(
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py", line 1630, in _execute_clauseelement
    ret = self._execute_context(
          ^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py", line 1839, in _execute_context
    return self._exec_single_context(
           ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py", line 1979, in _exec_single_context
    self._handle_dbapi_exception(
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py", line 2335, in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py", line 1929, in _exec_single_context
    self.dialect.do_executemany(
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py", line 921, in do_executemany
    cursor.executemany(statement, parameters)
sqlalchemy.exc.IntegrityError: (raised as a result of Query-invoked autoflush; consider using a session.no_autoflush block if this flush is occurring prematurely)
(sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
[SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
[parameters: [('f18',), ('fedora-17',), ('master',)]]
(Background on this error at: https://sqlalche.me/e/20/gkpj)
ERROR    coprs:error_handlers.py:42 Response error: gkpj Database error, contact admin
______________________ TestCoprsShow.test_show_no_entries ______________________
self = <test_coprs_general.TestCoprsShow object at 0x7fff9099ae10>
    def test_show_no_entries(self):
>       assert b"No projects..." in self.tc.get("/").data
E       assert b'No projects...' in b'\n<!doctype html>\n<html>\n<head>\n  <title>Copr Build System \xe2\x80\x93 Unknown error</title>\n  <link rel="stylesheet" href="/system_static/jquery-ui/jquery-ui.min.css" />\n  <link rel="shortcut icon" href="/static/favicon.ico" type="image/vnd.microsoft.icon">\n  <link rel="shortcut icon" href="/static/favicon.ico" type="image/x-icon">\n  <link href="/system_static/patternfly/css/patternfly.min.css" rel="stylesheet" media="screen, print">\n  <link rel="stylesheet" href="/system_static/patternfly/css/patternfly-additions.min.css">\n  <link href="/static/css/custom-styles.css" rel="stylesheet" media="screen, print">\n  <script src="/system_static/jquery/3/jquery.min.js"></script>\n  <script src="/system_static/jquery-ui/jquery-ui.min.js"></script>\n  <script src="/system_static/bootstrap_scss/js/bootstrap.min.js"></script>\n  <script src="/system_static/datatables/js/jquery.dataTables.min.js"></script>\n  <script src="/system_static/patternfly/js/patternfly.min.js"></script>\n\n  <script src="/static/copr.js"></script>\n  <link rel=stylesheet type=text/css href="/static/copr.css">\n  <link rel=stylesheet type=text/css href="/static/css/style-overwrite.css">\n  <link rel=stylesheet type=text/css href="/static/css/copr-flavor.css">\n</head>\n\n<body>\n  <!-- BANNER -->\n\n  <!-- MAIN MENU -->\n  <nav class="" id="main-bar">\n    <div class="container">\n      <div class="row">\n        <div class="col-md-8 col-sm-7 col-xs-6">\n          <a href="/coprs/">\n            <img id="logo" src="/static/copr_logo.png" alt="Copr Build System">\n          </a>\n        </div>\n        <div class="col-md-4 col-sm-5 col-xs-6">\n          <div id="login-menu" class="text-right">\n\n\n          </div>\n          <form role="search" method="get" id="1"\n      action="/coprs/fulltext/">\n  <div class="input-group  menu-search">\n    <input name="fulltext" type="text" class="form-control"\n           placeholder="Search projects by name, os or arch"\n           value="">\n\n    <div class="input-group-btn">\n      <button type="submit" class="btn btn-default">\n        <span class="glyphicon glyphicon-search"></span>\n      </button>\n\n      <button type="button" class="btn btn-default dropdown-toggle"\n              data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">\n        <span class="caret"></span>\n        <span class="sr-only">Toggle Dropdown</span>\n      </button>\n\n      <ul class="dropdown-menu">\n        <li>\n          <a id="search-username" onClick="search_by_attribute(\'ownername\', 1)" href="#">\n            Search by user name\n          </a>\n        </li>\n\n        <li>\n          <a id="search-groupname" onClick="search_by_attribute(\'ownername\', 1)" href="#">\n            Search by group name\n          </a>\n        </li>\n        <li role="separator" class="divider"></li>\n\n        <li>\n          <a id="search-projectname" onClick="search_by_attribute(\'projectname\', 1)" href="#">\n            Search by project name\n          </a>\n        </li>\n\n        <li>\n          <a id="search-packagename" onClick="search_by_attribute(\'packagename\', 1)" href="#">\n            Search by package name\n          </a>\n        </li>\n        <li role="separator" class="divider"></li>\n\n        <li>\n          <a href="https://docs.pagure.org/copr.copr/user_documentation.html#advanced-searching">\n            Searching documentation\n          </a>\n        </li>\n      </ul>\n    </div>\n  </div>\n</form>\n\n        </div>\n      </div>\n    </div>\n  </nav>\n  <div class="breadcrumb-panel">\n    <div class="container">\n    </div>\n  </div>\n\n  <!-- CONTENT -->\n  <div id=content>\n    <div class="container">\n\n      <!-- Flash messages -->\n\n\n\n      <!-- the actual content -->\n<h1> Error 500: Unknown error</h1>\n  Request wasn&#39;t successful, there is probably a bug in the Copr code. \n    </div>\n    <footer class="footer">\n      <div>\n        <div class="container text-muted">\n          <div class="">\n            <div class="row">\n             <div class="col-sm-3">\n                <dl>\n<dt><h3>Contact us</h3></dt>\n<dd>\n  <ul>\n    <li> <a href="https://matrix.to/#/#buildsys:fedoraproject.org">Fedora Build System on Matrix</a> </li>\n  </ul>\n</dd>                </dl>\n              </div>\n              <div class="col-sm-3">\n                <dl>\n<dt><h3>Copr Project</h3></dt>\n<dd>\n  <ul>\n    <li><a href="https://github.com/fedora-copr/copr">Project Homepage</a></li>\n    <li><a href="https://docs.pagure.org/copr.copr/user_documentation.html">User Documentation</a></li>\n    <li><a href="https://github.com/fedora-copr/copr/issues/new">Report a Bug</a></li>\n    <li><a href="https://github.com/fedora-copr/copr/issues">Known Issues</a></li>\n    <li><a href="https://docs.pagure.org/copr.copr/user_documentation.html#faq">FAQ</a></li>\n  </ul>\n</dd>                </dl>\n              </div>\n              <div class="col-sm-3">\n                <dl>\n                  <dt><h3>Site Navigation</h3></dt>\n                  <dd>\n                    <ul>\n                      <li> <a href="/coprs/">Home</a> </li>\n                      <li> <a href="/status/importing/">Task Queue</a> </li>\n                      <li> <a href="/api/">API</a> </li>\n                      <li> <a href="/user/info">GDPR</a> </li>\n                      <li> <a href="/rss/">RSS</a> </li>\n                      <li> <a href="/db_dumps/">Database Dump</a> </li>\n                    </ul>\n                  </dd>\n                </dl>\n              </div>\n              <div class="col-sm-3">\n                <dl>\n                  <dt><h3>Powered by</h3></dt>\n                  <dd>\n                    <ul>\n                      <li><a href="https://www.python.org">Python</a></li>\n                      <li><a href="http://www.openstack.org">OpenStack</a></li>\n                      <li><a href="https://www.patternfly.org">PatternFly</a></li>\n                      <li><a href="https://github.com/release-engineering/dist-git">Dist Git</a></li>\n                    </ul>\n                  </dd>\n                </dl>\n              </div>\n            </div>\n            <!-- <small class="text-muted">\n              Build __RPM_BUILD_VERSION\n              Build 1.125-1.git.16.4767b3b.fc25\n            </small> -->\n          </div>\n        </div>\n      </div>\n    </footer>\n  </div>\n\n  <!-- FEDORA MENU -->\n  <!-- Last post from our blog -->\n  <script src="/static/js/blog.js"></script>\n  <script>\n    $(document).ready(function(){\n      show_last_articles("https://fedora-copr.github.io/feed.xml", 2)\n      $(".show-me-javascript").removeClass("hidden");\n    });\n  </script>\n\n</body>\n</html>'
E        +  where b'\n<!doctype html>\n<html>\n<head>\n  <title>Copr Build System \xe2\x80\x93 Unknown error</title>\n  <link rel="stylesheet" href="/system_static/jquery-ui/jquery-ui.min.css" />\n  <link rel="shortcut icon" href="/static/favicon.ico" type="image/vnd.microsoft.icon">\n  <link rel="shortcut icon" href="/static/favicon.ico" type="image/x-icon">\n  <link href="/system_static/patternfly/css/patternfly.min.css" rel="stylesheet" media="screen, print">\n  <link rel="stylesheet" href="/system_static/patternfly/css/patternfly-additions.min.css">\n  <link href="/static/css/custom-styles.css" rel="stylesheet" media="screen, print">\n  <script src="/system_static/jquery/3/jquery.min.js"></script>\n  <script src="/system_static/jquery-ui/jquery-ui.min.js"></script>\n  <script src="/system_static/bootstrap_scss/js/bootstrap.min.js"></script>\n  <script src="/system_static/datatables/js/jquery.dataTables.min.js"></script>\n  <script src="/system_static/patternfly/js/patternfly.min.js"></script>\n\n  <script src="/static/copr.js"></script>\n  <link rel=stylesheet type=text/css href="/static/copr.css">\n  <link rel=stylesheet type=text/css href="/static/css/style-overwrite.css">\n  <link rel=stylesheet type=text/css href="/static/css/copr-flavor.css">\n</head>\n\n<body>\n  <!-- BANNER -->\n\n  <!-- MAIN MENU -->\n  <nav class="" id="main-bar">\n    <div class="container">\n      <div class="row">\n        <div class="col-md-8 col-sm-7 col-xs-6">\n          <a href="/coprs/">\n            <img id="logo" src="/static/copr_logo.png" alt="Copr Build System">\n          </a>\n        </div>\n        <div class="col-md-4 col-sm-5 col-xs-6">\n          <div id="login-menu" class="text-right">\n\n\n          </div>\n          <form role="search" method="get" id="1"\n      action="/coprs/fulltext/">\n  <div class="input-group  menu-search">\n    <input name="fulltext" type="text" class="form-control"\n           placeholder="Search projects by name, os or arch"\n           value="">\n\n    <div class="input-group-btn">\n      <button type="submit" class="btn btn-default">\n        <span class="glyphicon glyphicon-search"></span>\n      </button>\n\n      <button type="button" class="btn btn-default dropdown-toggle"\n              data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">\n        <span class="caret"></span>\n        <span class="sr-only">Toggle Dropdown</span>\n      </button>\n\n      <ul class="dropdown-menu">\n        <li>\n          <a id="search-username" onClick="search_by_attribute(\'ownername\', 1)" href="#">\n            Search by user name\n          </a>\n        </li>\n\n        <li>\n          <a id="search-groupname" onClick="search_by_attribute(\'ownername\', 1)" href="#">\n            Search by group name\n          </a>\n        </li>\n        <li role="separator" class="divider"></li>\n\n        <li>\n          <a id="search-projectname" onClick="search_by_attribute(\'projectname\', 1)" href="#">\n            Search by project name\n          </a>\n        </li>\n\n        <li>\n          <a id="search-packagename" onClick="search_by_attribute(\'packagename\', 1)" href="#">\n            Search by package name\n          </a>\n        </li>\n        <li role="separator" class="divider"></li>\n\n        <li>\n          <a href="https://docs.pagure.org/copr.copr/user_documentation.html#advanced-searching">\n            Searching documentation\n          </a>\n        </li>\n      </ul>\n    </div>\n  </div>\n</form>\n\n        </div>\n      </div>\n    </div>\n  </nav>\n  <div class="breadcrumb-panel">\n    <div class="container">\n    </div>\n  </div>\n\n  <!-- CONTENT -->\n  <div id=content>\n    <div class="container">\n\n      <!-- Flash messages -->\n\n\n\n      <!-- the actual content -->\n<h1> Error 500: Unknown error</h1>\n  Request wasn&#39;t successful, there is probably a bug in the Copr code. \n    </div>\n    <footer class="footer">\n      <div>\n        <div class="container text-muted">\n          <div class="">\n            <div class="row">\n             <div class="col-sm-3">\n                <dl>\n<dt><h3>Contact us</h3></dt>\n<dd>\n  <ul>\n    <li> <a href="https://matrix.to/#/#buildsys:fedoraproject.org">Fedora Build System on Matrix</a> </li>\n  </ul>\n</dd>                </dl>\n              </div>\n              <div class="col-sm-3">\n                <dl>\n<dt><h3>Copr Project</h3></dt>\n<dd>\n  <ul>\n    <li><a href="https://github.com/fedora-copr/copr">Project Homepage</a></li>\n    <li><a href="https://docs.pagure.org/copr.copr/user_documentation.html">User Documentation</a></li>\n    <li><a href="https://github.com/fedora-copr/copr/issues/new">Report a Bug</a></li>\n    <li><a href="https://github.com/fedora-copr/copr/issues">Known Issues</a></li>\n    <li><a href="https://docs.pagure.org/copr.copr/user_documentation.html#faq">FAQ</a></li>\n  </ul>\n</dd>                </dl>\n              </div>\n              <div class="col-sm-3">\n                <dl>\n                  <dt><h3>Site Navigation</h3></dt>\n                  <dd>\n                    <ul>\n                      <li> <a href="/coprs/">Home</a> </li>\n                      <li> <a href="/status/importing/">Task Queue</a> </li>\n                      <li> <a href="/api/">API</a> </li>\n                      <li> <a href="/user/info">GDPR</a> </li>\n                      <li> <a href="/rss/">RSS</a> </li>\n                      <li> <a href="/db_dumps/">Database Dump</a> </li>\n                    </ul>\n                  </dd>\n                </dl>\n              </div>\n              <div class="col-sm-3">\n                <dl>\n                  <dt><h3>Powered by</h3></dt>\n                  <dd>\n                    <ul>\n                      <li><a href="https://www.python.org">Python</a></li>\n                      <li><a href="http://www.openstack.org">OpenStack</a></li>\n                      <li><a href="https://www.patternfly.org">PatternFly</a></li>\n                      <li><a href="https://github.com/release-engineering/dist-git">Dist Git</a></li>\n                    </ul>\n                  </dd>\n                </dl>\n              </div>\n            </div>\n            <!-- <small class="text-muted">\n              Build __RPM_BUILD_VERSION\n              Build 1.125-1.git.16.4767b3b.fc25\n            </small> -->\n          </div>\n        </div>\n      </div>\n    </footer>\n  </div>\n\n  <!-- FEDORA MENU -->\n  <!-- Last post from our blog -->\n  <script src="/static/js/blog.js"></script>\n  <script>\n    $(document).ready(function(){\n      show_last_articles("https://fedora-copr.github.io/feed.xml", 2)\n      $(".show-me-javascript").removeClass("hidden");\n    });\n  </script>\n\n</body>\n</html>' = <WrapperTestResponse 6547 bytes [500 INTERNAL SERVER ERROR]>.data
E        +    where <WrapperTestResponse 6547 bytes [500 INTERNAL SERVER ERROR]> = <bound method Client.get of <FlaskClient <Flask 'coprs'>>>('/')
E        +      where <bound method Client.get of <FlaskClient <Flask 'coprs'>>> = <FlaskClient <Flask 'coprs'>>.get
E        +        where <FlaskClient <Flask 'coprs'>> = <test_coprs_general.TestCoprsShow object at 0x7fff9099ae10>.tc
tests/test_views/test_coprs_ns/test_coprs_general.py:61: AssertionError
------------------------------ Captured log call -------------------------------
ERROR    coprs:error_handlers.py:102 Admin-only exception
Request: GET http://localhost.localdomain/
User: None
Traceback (most recent call last):
  File "/usr/lib/python3.12/site-packages/flask/app.py", line 870, in full_dispatch_request
    rv = self.dispatch_request()
         ^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.12/site-packages/flask/app.py", line 855, in dispatch_request
    return self.ensure_sync(self.view_functions[rule.endpoint])(**view_args)  # type: ignore[no-any-return]
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/builddir/build/BUILD/copr-frontend-1.204/coprs_frontend/coprs/views/coprs_ns/coprs_general.py", line 102, in coprs_show
    data = builds_logic.BuildsLogic.get_small_graph_data('30min')
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/builddir/build/BUILD/copr-frontend-1.204/coprs_frontend/coprs/logic/builds_logic.py", line 243, in get_small_graph_data
    running = cls.get_running_jobs_bucket(step_start, step_end)
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/builddir/build/BUILD/copr-frontend-1.204/coprs_frontend/coprs/logic/builds_logic.py", line 184, in get_running_jobs_bucket
    res = db.engine.execute(query, start=start, end=end, status=StatusEnum("running"))
          ^^^^^^^^^^^^^^^^^
AttributeError: 'Engine' object has no attribute 'execute'
ERROR    coprs:error_handlers.py:42 Response error: 500 Request wasn't successful, there is probably a bug in the Copr code.
__________________ TestCoprDetail.test_copr_detail_not_found ___________________
self = <test_coprs_general.TestCoprDetail object at 0x7fff9076ae10>
    def test_copr_detail_not_found(self):
        r = self.tc.get("/coprs/foo/bar/")
>       assert r.status_code == 404
E       assert 500 == 404
E        +  where 500 = <WrapperTestResponse streamed [500 INTERNAL SERVER ERROR]>.status_code
tests/test_views/test_coprs_ns/test_coprs_general.py:270: AssertionError
------------------------------ Captured log call -------------------------------
ERROR    coprs:error_handlers.py:102 Admin-only exception
Request: GET http://localhost.localdomain/coprs/foo/bar/
User: None
Traceback (most recent call last):
  File "/usr/lib/python3.12/site-packages/flask/app.py", line 870, in full_dispatch_request
    rv = self.dispatch_request()
         ^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.12/site-packages/flask/app.py", line 855, in dispatch_request
    return self.ensure_sync(self.view_functions[rule.endpoint])(**view_args)  # type: ignore[no-any-return]
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/builddir/build/BUILD/copr-frontend-1.204/coprs_frontend/coprs/views/misc.py", line 253, in wrapper
    copr = ComplexLogic.get_copr(username, coprname, with_mock_chroots=True)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/builddir/build/BUILD/copr-frontend-1.204/coprs_frontend/coprs/logic/complex_logic.py", line 201, in get_copr
    return CoprsLogic.get(user_name, copr_name, **kwargs).filter(Copr.group_id.is_(None)).one()
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/query.py", line 2777, in one
    return self._iter().one()  # type: ignore
           ^^^^^^^^^^^^
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/query.py", line 2826, in _iter
    result: Union[ScalarResult[_T], Result[_T]] = self.session.execute(
                                                  ^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py", line 2306, in execute
    return self._execute_internal(
           ^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py", line 2191, in _execute_internal
    result: Result[Any] = compile_state_cls.orm_execute_statement(
                          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/context.py", line 293, in orm_execute_statement
    result = conn.execute(
             ^^^^^^^^^^^^^
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py", line 1408, in execute
    return meth(
           ^^^^^
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py", line 513, in _execute_on_connection
    return connection._execute_clauseelement(
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py", line 1622, in _execute_clauseelement
    compiled_sql, extracted_params, cache_hit = elem._compile_w_cache(
                                                ^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py", line 701, in _compile_w_cache
    compiled_sql = self._compiler(
                   ^^^^^^^^^^^^^^^
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py", line 314, in _compiler
    return dialect.statement_compiler(dialect, self, **kw)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/sql/compiler.py", line 1424, in __init__
    Compiled.__init__(self, dialect, statement, **kwargs)
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/sql/compiler.py", line 865, in __init__
    self.string = self.process(self.statement, **compile_kwargs)
                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/sql/compiler.py", line 910, in process
    return obj._compiler_dispatch(self, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/sql/visitors.py", line 141, in _compiler_dispatch
    return meth(self, **kw)  # type: ignore  # noqa: E501
           ^^^^^^^^^^^^^^^^
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/sql/compiler.py", line 4641, in visit_select
    compile_state = select_stmt._compile_state_factory(
                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/sql/base.py", line 684, in create_for_statement
    return klass.create_for_statement(statement, compiler, **kw)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/context.py", line 1162, in create_for_statement
    self._setup_for_generate()
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/context.py", line 1197, in _setup_for_generate
    self._join(query._setup_joins, self._entities)
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/context.py", line 1766, in _join
    raise sa_exc.InvalidRequestError(
sqlalchemy.exc.InvalidRequestError: No 'on clause' argument may be passed when joining to a relationship path as a target
ERROR    coprs:error_handlers.py:42 Response error: 500 Database error, contact admin
__________ TestCoprDetail.test_codeblock_html_in_project_description ___________
self = <test_coprs_general.TestCoprDetail object at 0x7fff9076ba10>
f_users = None, f_coprs = None
    def test_codeblock_html_in_project_description(self, f_users, f_coprs):
        r = self.tc.get("/coprs/{0}/{1}/".format(self.u1.name, self.c1.name))
        lines = ['<pre><code class="language-python"><div class="highlight"><span></span><span class="c1"># code snippet</span>',
                 '<span class="k">def</span> <span class="nf">foo</span><span class="p">():</span>',
                 '    <span class="n">bar</span><span class="p">()</span>',
                 '    <span class="k">return</span> <span class="mi">1</span>',
                 '</div>',
                 '</code></pre>']
        removed_code = ['<blink>']
    
        generated_html = r.data.decode("utf-8")
        for line in lines:
>           assert line in generated_html
E           assert '<pre><code class="language-python"><div class="highlight"><span></span><span class="c1"># code snippet</span>' in '\n<!doctype html>\n<html>\n<head>\n  <title>Copr Build System – Unknown error</title>\n  <link rel="stylesheet" href="/system_static/jquery-ui/jquery-ui.min.css" />\n  <link rel="shortcut icon" href="/static/favicon.ico" type="image/vnd.microsoft.icon">\n  <link rel="shortcut icon" href="/static/favicon.ico" type="image/x-icon">\n  <link href="/system_static/patternfly/css/patternfly.min.css" rel="stylesheet" media="screen, print">\n  <link rel="stylesheet" href="/system_static/patternfly/css/patternfly-additions.min.css">\n  <link href="/static/css/custom-styles.css" rel="stylesheet" media="screen, print">\n  <script src="/system_static/jquery/3/jquery.min.js"></script>\n  <script src="/system_static/jquery-ui/jquery-ui.min.js"></script>\n  <script src="/system_static/bootstrap_scss/js/bootstrap.min.js"></script>\n  <script src="/system_static/datatables/js/jquery.dataTables.min.js"></script>\n  <script src="/system_static/patternfly/js/patternfly.min.js"></script>\n\n  <script src="/static/copr.js"></script>\n  <link rel=stylesheet type=text/css href="/static/copr.css">\n  <link rel=stylesheet type=text/css href="/static/css/style-overwrite.css">\n  <link rel=stylesheet type=text/css href="/static/css/copr-flavor.css">\n</head>\n\n<body>\n  <!-- BANNER -->\n\n  <!-- MAIN MENU -->\n  <nav class="" id="main-bar">\n    <div class="container">\n      <div class="row">\n        <div class="col-md-8 col-sm-7 col-xs-6">\n          <a href="/coprs/">\n            <img id="logo" src="/static/copr_logo.png" alt="Copr Build System">\n          </a>\n        </div>\n        <div class="col-md-4 col-sm-5 col-xs-6">\n          <div id="login-menu" class="text-right">\n\n\n          </div>\n          <form role="search" method="get" id="1"\n      action="/coprs/fulltext/">\n  <div class="input-group  menu-search">\n    <input name="fulltext" type="text" class="form-control"\n           placeholder="Search projects by name, os or arch"\n           value="">\n\n    <div class="input-group-btn">\n      <button type="submit" class="btn btn-default">\n        <span class="glyphicon glyphicon-search"></span>\n      </button>\n\n      <button type="button" class="btn btn-default dropdown-toggle"\n              data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">\n        <span class="caret"></span>\n        <span class="sr-only">Toggle Dropdown</span>\n      </button>\n\n      <ul class="dropdown-menu">\n        <li>\n          <a id="search-username" onClick="search_by_attribute(\'ownername\', 1)" href="#">\n            Search by user name\n          </a>\n        </li>\n\n        <li>\n          <a id="search-groupname" onClick="search_by_attribute(\'ownername\', 1)" href="#">\n            Search by group name\n          </a>\n        </li>\n        <li role="separator" class="divider"></li>\n\n        <li>\n          <a id="search-projectname" onClick="search_by_attribute(\'projectname\', 1)" href="#">\n            Search by project name\n          </a>\n        </li>\n\n        <li>\n          <a id="search-packagename" onClick="search_by_attribute(\'packagename\', 1)" href="#">\n            Search by package name\n          </a>\n        </li>\n        <li role="separator" class="divider"></li>\n\n        <li>\n          <a href="https://docs.pagure.org/copr.copr/user_documentation.html#advanced-searching">\n            Searching documentation\n          </a>\n        </li>\n      </ul>\n    </div>\n  </div>\n</form>\n\n        </div>\n      </div>\n    </div>\n  </nav>\n  <div class="breadcrumb-panel">\n    <div class="container">\n    </div>\n  </div>\n\n  <!-- CONTENT -->\n  <div id=content>\n    <div class="container">\n\n      <!-- Flash messages -->\n\n\n\n      <!-- the actual content -->\n<h1> Error gkpj: Unknown error</h1>\n  Database error, contact admin \n    </div>\n    <footer class="footer">\n      <div>\n        <div class="container text-muted">\n          <div class="">\n            <div class="row">\n             <div class="col-sm-3">\n                <dl>\n<dt><h3>Contact us</h3></dt>\n<dd>\n  <ul>\n    <li> <a href="https://matrix.to/#/#buildsys:fedoraproject.org">Fedora Build System on Matrix</a> </li>\n  </ul>\n</dd>                </dl>\n              </div>\n              <div class="col-sm-3">\n                <dl>\n<dt><h3>Copr Project</h3></dt>\n<dd>\n  <ul>\n    <li><a href="https://github.com/fedora-copr/copr">Project Homepage</a></li>\n    <li><a href="https://docs.pagure.org/copr.copr/user_documentation.html">User Documentation</a></li>\n    <li><a href="https://github.com/fedora-copr/copr/issues/new">Report a Bug</a></li>\n    <li><a href="https://github.com/fedora-copr/copr/issues">Known Issues</a></li>\n    <li><a href="https://docs.pagure.org/copr.copr/user_documentation.html#faq">FAQ</a></li>\n  </ul>\n</dd>                </dl>\n              </div>\n              <div class="col-sm-3">\n                <dl>\n                  <dt><h3>Site Navigation</h3></dt>\n                  <dd>\n                    <ul>\n                      <li> <a href="/coprs/">Home</a> </li>\n                      <li> <a href="/status/importing/">Task Queue</a> </li>\n                      <li> <a href="/api/">API</a> </li>\n                      <li> <a href="/user/info">GDPR</a> </li>\n                      <li> <a href="/rss/">RSS</a> </li>\n                      <li> <a href="/db_dumps/">Database Dump</a> </li>\n                    </ul>\n                  </dd>\n                </dl>\n              </div>\n              <div class="col-sm-3">\n                <dl>\n                  <dt><h3>Powered by</h3></dt>\n                  <dd>\n                    <ul>\n                      <li><a href="https://www.python.org">Python</a></li>\n                      <li><a href="http://www.openstack.org">OpenStack</a></li>\n                      <li><a href="https://www.patternfly.org">PatternFly</a></li>\n                      <li><a href="https://github.com/release-engineering/dist-git">Dist Git</a></li>\n                    </ul>\n                  </dd>\n                </dl>\n              </div>\n            </div>\n            <!-- <small class="text-muted">\n              Build __RPM_BUILD_VERSION\n              Build 1.125-1.git.16.4767b3b.fc25\n            </small> -->\n          </div>\n        </div>\n      </div>\n    </footer>\n  </div>\n\n  <!-- FEDORA MENU -->\n  <!-- Last post from our blog -->\n  <script src="/static/js/blog.js"></script>\n  <script>\n    $(document).ready(function(){\n      show_last_articles("https://fedora-copr.github.io/feed.xml", 2)\n      $(".show-me-javascript").removeClass("hidden");\n    });\n  </script>\n\n</body>\n</html>'
tests/test_views/test_coprs_ns/test_coprs_general.py:355: AssertionError
------------------------------ Captured log call -------------------------------
ERROR    coprs:error_handlers.py:102 Admin-only exception
Request: GET http://localhost.localdomain/coprs/user1/foocopr/
User: None
Traceback (most recent call last):
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py", line 1960, in _exec_single_context
    self.dialect.do_execute(
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py", line 924, in do_execute
    cursor.execute(statement, parameters)
sqlite3.IntegrityError: UNIQUE constraint failed: user.username
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
  File "/usr/lib/python3.12/site-packages/flask/app.py", line 870, in full_dispatch_request
    rv = self.dispatch_request()
         ^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.12/site-packages/flask/app.py", line 855, in dispatch_request
    return self.ensure_sync(self.view_functions[rule.endpoint])(**view_args)  # type: ignore[no-any-return]
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/builddir/build/BUILD/copr-frontend-1.204/coprs_frontend/coprs/views/misc.py", line 253, in wrapper
    copr = ComplexLogic.get_copr(username, coprname, with_mock_chroots=True)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/builddir/build/BUILD/copr-frontend-1.204/coprs_frontend/coprs/logic/complex_logic.py", line 201, in get_copr
    return CoprsLogic.get(user_name, copr_name, **kwargs).filter(Copr.group_id.is_(None)).one()
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/query.py", line 2777, in one
    return self._iter().one()  # type: ignore
           ^^^^^^^^^^^^
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/query.py", line 2826, in _iter
    result: Union[ScalarResult[_T], Result[_T]] = self.session.execute(
                                                  ^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py", line 2306, in execute
    return self._execute_internal(
           ^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py", line 2170, in _execute_internal
    ) = compile_state_cls.orm_pre_session_exec(
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/context.py", line 549, in orm_pre_session_exec
    session._autoflush()
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py", line 3005, in _autoflush
    raise e.with_traceback(sys.exc_info()[2])
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py", line 2994, in _autoflush
    self.flush()
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py", line 4296, in flush
    self._flush(objects)
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py", line 4431, in _flush
    with util.safe_reraise():
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py", line 146, in __exit__
    raise exc_value.with_traceback(exc_tb)
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py", line 4392, in _flush
    flush_context.execute()
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py", line 466, in execute
    rec.execute(self)
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py", line 642, in execute
    util.preloaded.orm_persistence.save_obj(
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py", line 93, in save_obj
    _emit_insert_statements(
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py", line 1233, in _emit_insert_statements
    result = connection.execute(
             ^^^^^^^^^^^^^^^^^^^
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py", line 1408, in execute
    return meth(
           ^^^^^
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py", line 513, in _execute_on_connection
    return connection._execute_clauseelement(
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py", line 1630, in _execute_clauseelement
    ret = self._execute_context(
          ^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py", line 1839, in _execute_context
    return self._exec_single_context(
           ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py", line 1979, in _exec_single_context
    self._handle_dbapi_exception(
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py", line 2335, in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py", line 1960, in _exec_single_context
    self.dialect.do_execute(
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py", line 924, in do_execute
    cursor.execute(statement, parameters)
sqlalchemy.exc.IntegrityError: (raised as a result of Query-invoked autoflush; consider using a session.no_autoflush block if this flush is occurring prematurely)
(sqlite3.IntegrityError) UNIQUE constraint failed: user.username
[SQL: INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)]
[parameters: ('user1', 0, 1, None)]
(Background on this error at: https://sqlalche.me/e/20/gkpj)
ERROR    coprs:error_handlers.py:42 Response error: gkpj Database error, contact admin
____________ TestCoprRepoGeneration.test_repofile_copr_runtime_deps ____________
self = <test_coprs_general.TestCoprRepoGeneration object at 0x7fff908d5370>
f_users = None, f_coprs = None, f_mock_chroots = None
    def test_repofile_copr_runtime_deps(self, f_users, f_coprs, f_mock_chroots):
        """
        Test that a repofile for a project that has runtime dependencies was
        generated correctly.
        """
        _side_effects = (f_users, f_coprs, f_mock_chroots)
    
        repofile = self.tc.get(
            "/coprs/{0}/{1}/repo/fedora-18/some.repo?arch=x86_64".format(
                self.u2.name, self.c3.name))
    
        config = ConfigParser()
>       config.read_string(repofile.data.decode("utf-8"))
tests/test_views/test_coprs_ns/test_coprs_general.py:872: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/configparser.py:710: in read_string
    self.read_file(sfile, source)
/usr/lib64/python3.12/configparser.py:705: in read_file
    self._read(f, source)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <configparser.ConfigParser object at 0x7fff8d8f1a60>
fp = <_io.StringIO object at 0x7fff8d9e8ac0>, fpname = '<string>'
    def _read(self, fp, fpname):
        """Parse a sectioned configuration file.
    
        Each section in a configuration file contains a header, indicated by
        a name in square brackets (`[]`), plus key/value options, indicated by
        `name` and `value` delimited with a specific substring (`=` or `:` by
        default).
    
        Values can span multiple lines, as long as they are indented deeper
        than the first line of the value. Depending on the parser's mode, blank
        lines may be treated as parts of multiline values or ignored.
    
        Configuration files may include comments, prefixed by specific
        characters (`#` and `;` by default). Comments may appear on their own
        in an otherwise empty line or may be entered in lines holding values or
        section names. Please note that comments get stripped off when reading configuration files.
        """
        elements_added = set()
        cursect = None                        # None, or a dictionary
        sectname = None
        optname = None
        lineno = 0
        indent_level = 0
        e = None                              # None, or an exception
        for lineno, line in enumerate(fp, start=1):
            comment_start = sys.maxsize
            # strip inline comments
            inline_prefixes = {p: -1 for p in self._inline_comment_prefixes}
            while comment_start == sys.maxsize and inline_prefixes:
                next_prefixes = {}
                for prefix, index in inline_prefixes.items():
                    index = line.find(prefix, index+1)
                    if index == -1:
                        continue
                    next_prefixes[prefix] = index
                    if index == 0 or (index > 0 and line[index-1].isspace()):
                        comment_start = min(comment_start, index)
                inline_prefixes = next_prefixes
            # strip full line comments
            for prefix in self._comment_prefixes:
                if line.strip().startswith(prefix):
                    comment_start = 0
                    break
            if comment_start == sys.maxsize:
                comment_start = None
            value = line[:comment_start].strip()
            if not value:
                if self._empty_lines_in_values:
                    # add empty line to the value, but only if there was no
                    # comment on the line
                    if (comment_start is None and
                        cursect is not None and
                        optname and
                        cursect[optname] is not None):
                        cursect[optname].append('') # newlines added at join
                else:
                    # empty line marks end of value
                    indent_level = sys.maxsize
                continue
            # continuation line?
            first_nonspace = self.NONSPACECRE.search(line)
            cur_indent_level = first_nonspace.start() if first_nonspace else 0
            if (cursect is not None and optname and
                cur_indent_level > indent_level):
                cursect[optname].append(value)
            # a section header or option header?
            else:
                indent_level = cur_indent_level
                # is it a section header?
                mo = self.SECTCRE.match(value)
                if mo:
                    sectname = mo.group('header')
                    if sectname in self._sections:
                        if self._strict and sectname in elements_added:
                            raise DuplicateSectionError(sectname, fpname,
                                                        lineno)
                        cursect = self._sections[sectname]
                        elements_added.add(sectname)
                    elif sectname == self.default_section:
                        cursect = self._defaults
                    else:
                        cursect = self._dict()
                        self._sections[sectname] = cursect
                        self._proxies[sectname] = SectionProxy(self, sectname)
                        elements_added.add(sectname)
                    # So sections can't start with a continuation line
                    optname = None
                # no section header in the file?
                elif cursect is None:
>                   raise MissingSectionHeaderError(fpname, lineno, line)
E                   configparser.MissingSectionHeaderError: File contains no section headers.
E                   file: '<string>', line: 2
E                   '<!doctype html>\n'
/usr/lib64/python3.12/configparser.py:1063: MissingSectionHeaderError
------------------------------ Captured log call -------------------------------
ERROR    coprs:error_handlers.py:102 Admin-only exception
Request: GET http://localhost.localdomain/coprs/user2/barcopr/repo/fedora-18/some.repo?arch=x86_64
User: None
Traceback (most recent call last):
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py", line 1929, in _exec_single_context
    self.dialect.do_executemany(
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py", line 921, in do_executemany
    cursor.executemany(statement, parameters)
sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
  File "/usr/lib/python3.12/site-packages/flask/app.py", line 870, in full_dispatch_request
    rv = self.dispatch_request()
         ^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.12/site-packages/flask/app.py", line 855, in dispatch_request
    return self.ensure_sync(self.view_functions[rule.endpoint])(**view_args)  # type: ignore[no-any-return]
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/builddir/build/BUILD/copr-frontend-1.204/coprs_frontend/coprs/views/misc.py", line 266, in wrapper
    copr_dir = ComplexLogic.get_copr_dir(ownername, copr_dirname)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/builddir/build/BUILD/copr-frontend-1.204/coprs_frontend/coprs/logic/complex_logic.py", line 262, in get_copr_dir
    return CoprDirsLogic.get_by_ownername(ownername, copr_dirname).one()
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/query.py", line 2777, in one
    return self._iter().one()  # type: ignore
           ^^^^^^^^^^^^
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/query.py", line 2826, in _iter
    result: Union[ScalarResult[_T], Result[_T]] = self.session.execute(
                                                  ^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py", line 2306, in execute
    return self._execute_internal(
           ^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py", line 2170, in _execute_internal
    ) = compile_state_cls.orm_pre_session_exec(
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/context.py", line 549, in orm_pre_session_exec
    session._autoflush()
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py", line 3005, in _autoflush
    raise e.with_traceback(sys.exc_info()[2])
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py", line 2994, in _autoflush
    self.flush()
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py", line 4296, in flush
    self._flush(objects)
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py", line 4431, in _flush
    with util.safe_reraise():
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py", line 146, in __exit__
    raise exc_value.with_traceback(exc_tb)
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py", line 4392, in _flush
    flush_context.execute()
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py", line 466, in execute
    rec.execute(self)
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py", line 642, in execute
    util.preloaded.orm_persistence.save_obj(
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py", line 93, in save_obj
    _emit_insert_statements(
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py", line 1048, in _emit_insert_statements
    result = connection.execute(
             ^^^^^^^^^^^^^^^^^^^
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py", line 1408, in execute
    return meth(
           ^^^^^
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py", line 513, in _execute_on_connection
    return connection._execute_clauseelement(
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py", line 1630, in _execute_clauseelement
    ret = self._execute_context(
          ^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py", line 1839, in _execute_context
    return self._exec_single_context(
           ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py", line 1979, in _exec_single_context
    self._handle_dbapi_exception(
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py", line 2335, in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py", line 1929, in _exec_single_context
    self.dialect.do_executemany(
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py", line 921, in do_executemany
    cursor.executemany(statement, parameters)
sqlalchemy.exc.IntegrityError: (raised as a result of Query-invoked autoflush; consider using a session.no_autoflush block if this flush is occurring prematurely)
(sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
[SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
[parameters: [('f18',), ('fedora-17',), ('master',)]]
(Background on this error at: https://sqlalche.me/e/20/gkpj)
ERROR    coprs:error_handlers.py:42 Response error: gkpj Database error, contact admin
_________ TestCoprRepoGeneration.test_repofile_group_copr_runtime_deps _________
self = <test_coprs_general.TestCoprRepoGeneration object at 0x7fff908d5550>
f_users = None, f_coprs = None, f_mock_chroots = None, f_group_copr = None
f_group_copr_dependent = None
    def test_repofile_group_copr_runtime_deps(self, f_users, f_coprs,
                                              f_mock_chroots, f_group_copr,
                                              f_group_copr_dependent):
        """
        Test that repofiles for a project that has runtime dependency on
        a group project and a group project with runtime dependency were
        generated correctly.
        """
        _side_effects = (f_users, f_coprs, f_mock_chroots, f_group_copr,
                         f_group_copr_dependent)
    
        repofile = self.tc.get(
            "/coprs/{0}/{1}/repo/fedora-18/some.repo?arch=x86_64".format(
                self.u2.name, self.c_gd.name))
    
        config = ConfigParser()
>       config.read_string(repofile.data.decode("utf-8"))
tests/test_views/test_coprs_ns/test_coprs_general.py:903: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/configparser.py:710: in read_string
    self.read_file(sfile, source)
/usr/lib64/python3.12/configparser.py:705: in read_file
    self._read(f, source)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <configparser.ConfigParser object at 0x7fff8d938c80>
fp = <_io.StringIO object at 0x7fff8d9eb580>, fpname = '<string>'
    def _read(self, fp, fpname):
        """Parse a sectioned configuration file.
    
        Each section in a configuration file contains a header, indicated by
        a name in square brackets (`[]`), plus key/value options, indicated by
        `name` and `value` delimited with a specific substring (`=` or `:` by
        default).
    
        Values can span multiple lines, as long as they are indented deeper
        than the first line of the value. Depending on the parser's mode, blank
        lines may be treated as parts of multiline values or ignored.
    
        Configuration files may include comments, prefixed by specific
        characters (`#` and `;` by default). Comments may appear on their own
        in an otherwise empty line or may be entered in lines holding values or
        section names. Please note that comments get stripped off when reading configuration files.
        """
        elements_added = set()
        cursect = None                        # None, or a dictionary
        sectname = None
        optname = None
        lineno = 0
        indent_level = 0
        e = None                              # None, or an exception
        for lineno, line in enumerate(fp, start=1):
            comment_start = sys.maxsize
            # strip inline comments
            inline_prefixes = {p: -1 for p in self._inline_comment_prefixes}
            while comment_start == sys.maxsize and inline_prefixes:
                next_prefixes = {}
                for prefix, index in inline_prefixes.items():
                    index = line.find(prefix, index+1)
                    if index == -1:
                        continue
                    next_prefixes[prefix] = index
                    if index == 0 or (index > 0 and line[index-1].isspace()):
                        comment_start = min(comment_start, index)
                inline_prefixes = next_prefixes
            # strip full line comments
            for prefix in self._comment_prefixes:
                if line.strip().startswith(prefix):
                    comment_start = 0
                    break
            if comment_start == sys.maxsize:
                comment_start = None
            value = line[:comment_start].strip()
            if not value:
                if self._empty_lines_in_values:
                    # add empty line to the value, but only if there was no
                    # comment on the line
                    if (comment_start is None and
                        cursect is not None and
                        optname and
                        cursect[optname] is not None):
                        cursect[optname].append('') # newlines added at join
                else:
                    # empty line marks end of value
                    indent_level = sys.maxsize
                continue
            # continuation line?
            first_nonspace = self.NONSPACECRE.search(line)
            cur_indent_level = first_nonspace.start() if first_nonspace else 0
            if (cursect is not None and optname and
                cur_indent_level > indent_level):
                cursect[optname].append(value)
            # a section header or option header?
            else:
                indent_level = cur_indent_level
                # is it a section header?
                mo = self.SECTCRE.match(value)
                if mo:
                    sectname = mo.group('header')
                    if sectname in self._sections:
                        if self._strict and sectname in elements_added:
                            raise DuplicateSectionError(sectname, fpname,
                                                        lineno)
                        cursect = self._sections[sectname]
                        elements_added.add(sectname)
                    elif sectname == self.default_section:
                        cursect = self._defaults
                    else:
                        cursect = self._dict()
                        self._sections[sectname] = cursect
                        self._proxies[sectname] = SectionProxy(self, sectname)
                        elements_added.add(sectname)
                    # So sections can't start with a continuation line
                    optname = None
                # no section header in the file?
                elif cursect is None:
>                   raise MissingSectionHeaderError(fpname, lineno, line)
E                   configparser.MissingSectionHeaderError: File contains no section headers.
E                   file: '<string>', line: 2
E                   '<!doctype html>\n'
/usr/lib64/python3.12/configparser.py:1063: MissingSectionHeaderError
------------------------------ Captured log call -------------------------------
ERROR    coprs:error_handlers.py:102 Admin-only exception
Request: GET http://localhost.localdomain/coprs/user2/depcopr/repo/fedora-18/some.repo?arch=x86_64
User: None
Traceback (most recent call last):
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py", line 1929, in _exec_single_context
    self.dialect.do_executemany(
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py", line 921, in do_executemany
    cursor.executemany(statement, parameters)
sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
  File "/usr/lib/python3.12/site-packages/flask/app.py", line 870, in full_dispatch_request
    rv = self.dispatch_request()
         ^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.12/site-packages/flask/app.py", line 855, in dispatch_request
    return self.ensure_sync(self.view_functions[rule.endpoint])(**view_args)  # type: ignore[no-any-return]
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/builddir/build/BUILD/copr-frontend-1.204/coprs_frontend/coprs/views/misc.py", line 266, in wrapper
    copr_dir = ComplexLogic.get_copr_dir(ownername, copr_dirname)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/builddir/build/BUILD/copr-frontend-1.204/coprs_frontend/coprs/logic/complex_logic.py", line 262, in get_copr_dir
    return CoprDirsLogic.get_by_ownername(ownername, copr_dirname).one()
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/query.py", line 2777, in one
    return self._iter().one()  # type: ignore
           ^^^^^^^^^^^^
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/query.py", line 2826, in _iter
    result: Union[ScalarResult[_T], Result[_T]] = self.session.execute(
                                                  ^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py", line 2306, in execute
    return self._execute_internal(
           ^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py", line 2170, in _execute_internal
    ) = compile_state_cls.orm_pre_session_exec(
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/context.py", line 549, in orm_pre_session_exec
    session._autoflush()
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py", line 3005, in _autoflush
    raise e.with_traceback(sys.exc_info()[2])
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py", line 2994, in _autoflush
    self.flush()
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py", line 4296, in flush
    self._flush(objects)
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py", line 4431, in _flush
    with util.safe_reraise():
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py", line 146, in __exit__
    raise exc_value.with_traceback(exc_tb)
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py", line 4392, in _flush
    flush_context.execute()
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py", line 466, in execute
    rec.execute(self)
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py", line 642, in execute
    util.preloaded.orm_persistence.save_obj(
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py", line 93, in save_obj
    _emit_insert_statements(
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py", line 1048, in _emit_insert_statements
    result = connection.execute(
             ^^^^^^^^^^^^^^^^^^^
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py", line 1408, in execute
    return meth(
           ^^^^^
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py", line 513, in _execute_on_connection
    return connection._execute_clauseelement(
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py", line 1630, in _execute_clauseelement
    ret = self._execute_context(
          ^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py", line 1839, in _execute_context
    return self._exec_single_context(
           ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py", line 1979, in _exec_single_context
    self._handle_dbapi_exception(
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py", line 2335, in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py", line 1929, in _exec_single_context
    self.dialect.do_executemany(
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py", line 921, in do_executemany
    cursor.executemany(statement, parameters)
sqlalchemy.exc.IntegrityError: (raised as a result of Query-invoked autoflush; consider using a session.no_autoflush block if this flush is occurring prematurely)
(sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
[SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
[parameters: [('f18',), ('fedora-17',), ('master',)]]
(Background on this error at: https://sqlalche.me/e/20/gkpj)
ERROR    coprs:error_handlers.py:42 Response error: gkpj Database error, contact admin
_________ TestCoprRepoGeneration.test_repofile_transitive_runtime_deps _________
self = <test_coprs_general.TestCoprRepoGeneration object at 0x7fff908d57c0>
f_users = None, f_copr_transitive_dependency = None
    def test_repofile_transitive_runtime_deps(self, f_users,
                                              f_copr_transitive_dependency):
        """
        Test that a repofile for a project that has multiple transitive
        runtime dependencies was generated correctly.
        """
        _side_effects = (f_users, f_copr_transitive_dependency)
    
        repofile = self.tc.get(
            "/coprs/{0}/{1}/repo/fedora-18/some.repo?arch=x86_64".format(
                self.u2.name, self.c_td1.name))
    
        config = ConfigParser()
>       config.read_string(repofile.data.decode("utf-8"))
tests/test_views/test_coprs_ns/test_coprs_general.py:942: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/configparser.py:710: in read_string
    self.read_file(sfile, source)
/usr/lib64/python3.12/configparser.py:705: in read_file
    self._read(f, source)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <configparser.ConfigParser object at 0x7fff8d939c70>
fp = <_io.StringIO object at 0x7fff8d9e8940>, fpname = '<string>'
    def _read(self, fp, fpname):
        """Parse a sectioned configuration file.
    
        Each section in a configuration file contains a header, indicated by
        a name in square brackets (`[]`), plus key/value options, indicated by
        `name` and `value` delimited with a specific substring (`=` or `:` by
        default).
    
        Values can span multiple lines, as long as they are indented deeper
        than the first line of the value. Depending on the parser's mode, blank
        lines may be treated as parts of multiline values or ignored.
    
        Configuration files may include comments, prefixed by specific
        characters (`#` and `;` by default). Comments may appear on their own
        in an otherwise empty line or may be entered in lines holding values or
        section names. Please note that comments get stripped off when reading configuration files.
        """
        elements_added = set()
        cursect = None                        # None, or a dictionary
        sectname = None
        optname = None
        lineno = 0
        indent_level = 0
        e = None                              # None, or an exception
        for lineno, line in enumerate(fp, start=1):
            comment_start = sys.maxsize
            # strip inline comments
            inline_prefixes = {p: -1 for p in self._inline_comment_prefixes}
            while comment_start == sys.maxsize and inline_prefixes:
                next_prefixes = {}
                for prefix, index in inline_prefixes.items():
                    index = line.find(prefix, index+1)
                    if index == -1:
                        continue
                    next_prefixes[prefix] = index
                    if index == 0 or (index > 0 and line[index-1].isspace()):
                        comment_start = min(comment_start, index)
                inline_prefixes = next_prefixes
            # strip full line comments
            for prefix in self._comment_prefixes:
                if line.strip().startswith(prefix):
                    comment_start = 0
                    break
            if comment_start == sys.maxsize:
                comment_start = None
            value = line[:comment_start].strip()
            if not value:
                if self._empty_lines_in_values:
                    # add empty line to the value, but only if there was no
                    # comment on the line
                    if (comment_start is None and
                        cursect is not None and
                        optname and
                        cursect[optname] is not None):
                        cursect[optname].append('') # newlines added at join
                else:
                    # empty line marks end of value
                    indent_level = sys.maxsize
                continue
            # continuation line?
            first_nonspace = self.NONSPACECRE.search(line)
            cur_indent_level = first_nonspace.start() if first_nonspace else 0
            if (cursect is not None and optname and
                cur_indent_level > indent_level):
                cursect[optname].append(value)
            # a section header or option header?
            else:
                indent_level = cur_indent_level
                # is it a section header?
                mo = self.SECTCRE.match(value)
                if mo:
                    sectname = mo.group('header')
                    if sectname in self._sections:
                        if self._strict and sectname in elements_added:
                            raise DuplicateSectionError(sectname, fpname,
                                                        lineno)
                        cursect = self._sections[sectname]
                        elements_added.add(sectname)
                    elif sectname == self.default_section:
                        cursect = self._defaults
                    else:
                        cursect = self._dict()
                        self._sections[sectname] = cursect
                        self._proxies[sectname] = SectionProxy(self, sectname)
                        elements_added.add(sectname)
                    # So sections can't start with a continuation line
                    optname = None
                # no section header in the file?
                elif cursect is None:
>                   raise MissingSectionHeaderError(fpname, lineno, line)
E                   configparser.MissingSectionHeaderError: File contains no section headers.
E                   file: '<string>', line: 2
E                   '<!doctype html>\n'
/usr/lib64/python3.12/configparser.py:1063: MissingSectionHeaderError
------------------------------ Captured log call -------------------------------
ERROR    coprs:error_handlers.py:102 Admin-only exception
Request: GET http://localhost.localdomain/coprs/user2/depcopr1/repo/fedora-18/some.repo?arch=x86_64
User: None
Traceback (most recent call last):
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py", line 1929, in _exec_single_context
    self.dialect.do_executemany(
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py", line 921, in do_executemany
    cursor.executemany(statement, parameters)
sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
  File "/usr/lib/python3.12/site-packages/flask/app.py", line 870, in full_dispatch_request
    rv = self.dispatch_request()
         ^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.12/site-packages/flask/app.py", line 855, in dispatch_request
    return self.ensure_sync(self.view_functions[rule.endpoint])(**view_args)  # type: ignore[no-any-return]
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/builddir/build/BUILD/copr-frontend-1.204/coprs_frontend/coprs/views/misc.py", line 266, in wrapper
    copr_dir = ComplexLogic.get_copr_dir(ownername, copr_dirname)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/builddir/build/BUILD/copr-frontend-1.204/coprs_frontend/coprs/logic/complex_logic.py", line 262, in get_copr_dir
    return CoprDirsLogic.get_by_ownername(ownername, copr_dirname).one()
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/query.py", line 2777, in one
    return self._iter().one()  # type: ignore
           ^^^^^^^^^^^^
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/query.py", line 2826, in _iter
    result: Union[ScalarResult[_T], Result[_T]] = self.session.execute(
                                                  ^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py", line 2306, in execute
    return self._execute_internal(
           ^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py", line 2170, in _execute_internal
    ) = compile_state_cls.orm_pre_session_exec(
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/context.py", line 549, in orm_pre_session_exec
    session._autoflush()
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py", line 3005, in _autoflush
    raise e.with_traceback(sys.exc_info()[2])
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py", line 2994, in _autoflush
    self.flush()
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py", line 4296, in flush
    self._flush(objects)
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py", line 4431, in _flush
    with util.safe_reraise():
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py", line 146, in __exit__
    raise exc_value.with_traceback(exc_tb)
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py", line 4392, in _flush
    flush_context.execute()
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py", line 466, in execute
    rec.execute(self)
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py", line 642, in execute
    util.preloaded.orm_persistence.save_obj(
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py", line 93, in save_obj
    _emit_insert_statements(
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py", line 1048, in _emit_insert_statements
    result = connection.execute(
             ^^^^^^^^^^^^^^^^^^^
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py", line 1408, in execute
    return meth(
           ^^^^^
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py", line 513, in _execute_on_connection
    return connection._execute_clauseelement(
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py", line 1630, in _execute_clauseelement
    ret = self._execute_context(
          ^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py", line 1839, in _execute_context
    return self._exec_single_context(
           ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py", line 1979, in _exec_single_context
    self._handle_dbapi_exception(
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py", line 2335, in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py", line 1929, in _exec_single_context
    self.dialect.do_executemany(
  File "/usr/lib64/python3.12/site-packages/sqlalchemy/engine/default.py", line 921, in do_executemany
    cursor.executemany(statement, parameters)
sqlalchemy.exc.IntegrityError: (raised as a result of Query-invoked autoflush; consider using a session.no_autoflush block if this flush is occurring prematurely)
(sqlite3.IntegrityError) UNIQUE constraint failed: dist_git_branch.name
[SQL: INSERT INTO dist_git_branch (name) VALUES (?)]
[parameters: [('f18',), ('fedora-17',), ('master',)]]
(Background on this error at: https://sqlalche.me/e/20/gkpj)
ERROR    coprs:error_handlers.py:42 Response error: gkpj Database error, contact admin
=============================== warnings summary ===============================
../../../../../usr/lib/python3.12/site-packages/openid/oidutil.py:106
  /usr/lib/python3.12/site-packages/openid/oidutil.py:106: DeprecationWarning: defusedxml.cElementTree is deprecated, import from defusedxml.ElementTree instead.
    ElementTree = __import__(mod_name, None, None, ['unused'])
../../../../../usr/lib/python3.12/site-packages/flask_whooshee.py:18
../../../../../usr/lib/python3.12/site-packages/flask_whooshee.py:18
  /usr/lib/python3.12/site-packages/flask_whooshee.py:18: DeprecationWarning: 'BaseQuery' has been moved and renamed to 'query.Query'. The top-level import is deprecated and will be removed in Flask-SQLAlchemy 3.1.
    from flask_sqlalchemy import BaseQuery
../../../../../usr/lib/python3.12/site-packages/gi/overrides/__init__.py:108
../../../../../usr/lib/python3.12/site-packages/gi/overrides/__init__.py:108
../../../../../usr/lib/python3.12/site-packages/gi/overrides/__init__.py:108
  /usr/lib/python3.12/site-packages/gi/overrides/__init__.py:108: DeprecationWarning: 'pkgutil.get_loader' is deprecated and slated for removal in Python 3.14; use importlib.util.find_spec() instead
    override_loader = get_loader(override_package_name)
../../../../../usr/lib64/python3.12/pkgutil.py:291
../../../../../usr/lib64/python3.12/pkgutil.py:291
../../../../../usr/lib64/python3.12/pkgutil.py:291
  /usr/lib64/python3.12/pkgutil.py:291: DeprecationWarning: 'pkgutil.find_loader' is deprecated and slated for removal in Python 3.14; use importlib.util.find_spec() instead
    return find_loader(fullname)
../../../../../usr/lib/python3.12/site-packages/flask_caching/__init__.py:153
  /usr/lib/python3.12/site-packages/flask_caching/__init__.py:153: DeprecationWarning: Using the initialization functions in flask_caching.backend is deprecated.  Use the a full path to backend classes directly.
    warnings.warn(
../../../../../usr/lib/python3.12/site-packages/flask_restx/api.py:19
../../../../../usr/lib/python3.12/site-packages/flask_restx/api.py:19
  /usr/lib/python3.12/site-packages/flask_restx/api.py:19: DeprecationWarning: jsonschema.RefResolver is deprecated as of v4.18.0, in favor of the https://github.com/python-jsonschema/referencing library, which provides more compliant referencing behavior as well as more flexible APIs for customization. A future release will remove RefResolver. Please file a feature request (on referencing) if you are missing an API for the kind of customization you need.
    from jsonschema import RefResolver
../../../../../usr/lib/python3.12/site-packages/flask_restx/api.py:273
  /usr/lib/python3.12/site-packages/flask_restx/api.py:273: DeprecationWarning: 'ERROR_404_HELP' config setting is deprecated and will be removed in the future. Use 'RESTX_ERROR_404_HELP' instead.
    warnings.warn(
coprs/__init__.py:236
coprs/__init__.py:236
  /builddir/build/BUILD/copr-frontend-1.204/coprs_frontend/coprs/__init__.py:236: DeprecationWarning: 'models_committed' has been moved to 'track_modifications.models_committed'. The top-level import is deprecated and will be removed in Flask-SQLAlchemy 3.1.
    from flask_sqlalchemy import models_committed
../../../../../usr/lib/python3.12/site-packages/copr_common/request.py:7
  /usr/lib/python3.12/site-packages/copr_common/request.py:7: DeprecationWarning: pkg_resources is deprecated as an API. See https://setuptools.pypa.io/en/latest/pkg_resources.html
    import pkg_resources
../../../../../usr/lib/python3.12/site-packages/pkg_resources/__init__.py:2868
  /usr/lib/python3.12/site-packages/pkg_resources/__init__.py:2868: DeprecationWarning: Deprecated call to `pkg_resources.declare_namespace('sphinxcontrib')`.
  Implementing implicit namespace packages (as specified in PEP 420) is preferred to `pkg_resources.declare_namespace`. See https://setuptools.pypa.io/en/latest/references/keywords.html#keyword-namespace-packages
    declare_namespace(pkg)
tests/test_logic/test_batch_logic.py:8
tests/test_logic/test_batch_logic.py:8
  /builddir/build/BUILD/copr-frontend-1.204/coprs_frontend/tests/test_logic/test_batch_logic.py:8: DeprecationWarning: 'get_debug_queries' has been moved and renamed to 'record_queries.get_recorded_queries'. The top-level import is deprecated and will be removed in Flask-SQLAlchemy 3.1.
    from flask_sqlalchemy import get_debug_queries
tests/test_views/test_backend_ns/test_backend_general.py:6
tests/test_views/test_backend_ns/test_backend_general.py:6
  /builddir/build/BUILD/copr-frontend-1.204/coprs_frontend/tests/test_views/test_backend_ns/test_backend_general.py:6: DeprecationWarning: 'get_debug_queries' has been moved and renamed to 'record_queries.get_recorded_queries'. The top-level import is deprecated and will be removed in Flask-SQLAlchemy 3.1.
    from flask_sqlalchemy import get_debug_queries
tests/test_exceptions.py: 2 warnings
tests/test_models.py: 5 warnings
tests/test_resubmit.py: 1 warning
tests/test_webhooks.py: 13 warnings
tests/test_apiv3/test_build_chroots.py: 6 warnings
tests/test_apiv3/test_builds.py: 1 warning
tests/test_apiv3/test_monitor.py: 4 warnings
tests/test_logic/test_builds_logic.py: 15 warnings
tests/test_logic/test_complex_logic.py: 10 warnings
tests/test_logic/test_coprs_logic.py: 1 warning
tests/test_logic/test_modules_logic.py: 5 warnings
tests/test_logic/test_outdated_chroots_logic.py: 1 warning
tests/test_logic/test_users_logic.py: 1 warning
tests/test_views/test_backend_ns/test_backend_general.py: 15 warnings
tests/test_views/test_coprs_ns/test_coprs_builds.py: 9 warnings
tests/test_views/test_coprs_ns/test_coprs_general.py: 5 warnings
  /builddir/build/BUILD/copr-frontend-1.204/coprs_frontend/tests/coprs_test_case.py:111: SAWarning: Object of type <Package> not in session, add operation along 'Copr.packages' will not proceed
    self.db.session.commit()
tests/test_logging.py: 3 warnings
tests/test_mail.py: 2 warnings
tests/test_apiv3/test_projects.py: 3 warnings
tests/test_commands/test_notify_outdated_chroots.py: 1 warning
tests/test_views/test_coprs_ns/test_coprs_builds.py: 4 warnings
tests/test_views/test_coprs_ns/test_coprs_general.py: 11 warnings
  /builddir/build/BUILD/copr-frontend-1.204/coprs_frontend/tests/coprs_test_case.py:111: SAWarning: Object of type <CoprPermission> not in session, add operation along 'User.copr_permissions_unfiltered' will not proceed
    self.db.session.commit()
tests/test_logging.py: 3 warnings
tests/test_mail.py: 2 warnings
tests/test_apiv3/test_projects.py: 12 warnings
tests/test_commands/test_notify_outdated_chroots.py: 1 warning
tests/test_views/test_coprs_ns/test_coprs_builds.py: 4 warnings
tests/test_views/test_coprs_ns/test_coprs_general.py: 11 warnings
  /builddir/build/BUILD/copr-frontend-1.204/coprs_frontend/tests/coprs_test_case.py:111: SAWarning: Object of type <CoprPermission> not in session, add operation along 'Copr.copr_permissions' will not proceed
    self.db.session.commit()
tests/test_models.py::TestBuildModel::test_get_chroots_by_status
tests/test_models.py::TestBuildModel::test_chroot_denylist
tests/test_models.py::TestBuildModel::test_chroot_denylist_all
  /builddir/build/BUILD/copr-frontend-1.204/coprs_frontend/coprs/logic/coprs_logic.py:927: SAWarning: Object of type <Package> not in session, add operation along 'Copr.packages' will not proceed (This warning originated from the Session 'autoflush' process, which was invoked automatically in response to a user-initiated operation.)
    item = session.query(models.DistGitBranch).filter_by(name=name).first()
tests/test_pagure_events.py::TestPagureEvents::test_negative_is_dir_in_commit
tests/test_pagure_events.py::TestPagureEvents::test_positive_is_dir_in_commit
tests/test_pagure_events.py::TestPagureEvents::test_positive_build_from_pr_update
tests/test_pagure_events.py::TestPagureEvents::test_positive_build_from_push
  /builddir/build/BUILD/copr-frontend-1.204/coprs_frontend/pagure_events.py:76: SAWarning: Object of type <Package> not in session, add operation along 'Copr.packages' will not proceed (This warning originated from the Session 'autoflush' process, which was invoked automatically in response to a user-initiated operation.)
    return [ScmPackage(row) for row in rows]
tests/test_pagure_events.py::TestPagureEvents::test_negative_build_from_push
  /builddir/build/BUILD/copr-frontend-1.204/coprs_frontend/tests/test_pagure_events.py:181: SAWarning: Object of type <Package> not in session, add operation along 'Copr.packages' will not proceed (This warning originated from the Session 'autoflush' process, which was invoked automatically in response to a user-initiated operation.)
    builds = self.models.Build.query.all()
tests/test_apiv3/test_coprdirs.py::TestCoprDir::test_custom_copr_dir
tests/test_apiv3/test_coprdirs.py::TestCoprDir::test_custom_dir_validation
  /builddir/build/BUILD/copr-frontend-1.204/coprs_frontend/coprs/logic/dist_git_logic.py:15: SAWarning: Object of type <Package> not in session, add operation along 'Copr.packages' will not proceed (This warning originated from the Session 'autoflush' process, which was invoked automatically in response to a user-initiated operation.)
    return cls.ordered().limit(1).one()
tests/test_commands/test_rawhide_to_release.py::TestBranchFedora::test_branch_fedora
tests/test_logic/test_complex_logic.py::TestProjectForking::test_fork_check_assigned_copr_chroot
tests/test_logic/test_coprs_logic.py::TestCoprChrootsLogic::test_disabling_disallowed_when_build_runs
tests/test_logic/test_coprs_logic.py::TestCoprChrootsLogic::test_chroot_reenable
tests/test_logic/test_coprs_logic.py::TestCoprChrootsLogic::test_unclick_chroot_repeatedly
  /builddir/build/BUILD/copr-frontend-1.204/coprs_frontend/tests/coprs_test_case.py:791: SAWarning: Object of type <Package> not in session, add operation along 'Copr.packages' will not proceed (This warning originated from the Session 'autoflush' process, which was invoked automatically in response to a user-initiated operation.)
    for bch in models.BuildChroot.query.all():
tests/test_logic/test_builds_logic.py::TestBuildsLogic::test_resubmit_build_inherit_git_hash
  /builddir/build/BUILD/copr-frontend-1.204/coprs_frontend/coprs/logic/coprs_logic.py:439: SAWarning: Object of type <Package> not in session, add operation along 'Copr.packages' will not proceed (This warning originated from the Session 'autoflush' process, which was invoked automatically in response to a user-initiated operation.)
    unfinished_actions = cls.unfinished_blocking_actions_for(copr).all()
tests/test_logic/test_builds_logic.py::TestBuildsLogic::test_mark_as_failed
  /builddir/build/BUILD/copr-frontend-1.204/coprs_frontend/tests/test_logic/test_builds_logic.py:393: SAWarning: Object of type <Package> not in session, add operation along 'Copr.packages' will not proceed
    self.db.session.commit()
tests/test_logic/test_complex_logic.py::TestComplexLogic::test_fork_copr_projects_with_more_builds
tests/test_logic/test_complex_logic.py::TestComplexLogic::test_fork_copr_with_eoled_chroots
tests/test_logic/test_packages_logic.py::TestPackagesLogic::test_last_successful_build_chroots
tests/test_views/test_backend_ns/test_backend_general.py::TestUpdateBuilds::test_update_state_from_dict
  /builddir/build/BUILD/copr-frontend-1.204/coprs_frontend/tests/coprs_test_case.py:461: SAWarning: Object of type <Build> not in session, add operation along 'User.builds' will not proceed
    self.db.session.flush()
tests/test_logic/test_complex_logic.py::TestComplexLogic::test_fork_copr_projects_with_more_builds
tests/test_logic/test_complex_logic.py::TestComplexLogic::test_fork_copr_with_eoled_chroots
tests/test_logic/test_packages_logic.py::TestPackagesLogic::test_last_successful_build_chroots
tests/test_views/test_backend_ns/test_backend_general.py::TestUpdateBuilds::test_update_state_from_dict
  /builddir/build/BUILD/copr-frontend-1.204/coprs_frontend/tests/coprs_test_case.py:461: SAWarning: Object of type <Build> not in session, add operation along 'CoprDir.builds' will not proceed
    self.db.session.flush()
tests/test_logic/test_complex_logic.py::TestComplexLogic::test_fork_copr_projects_with_more_builds
tests/test_logic/test_complex_logic.py::TestComplexLogic::test_fork_copr_with_eoled_chroots
tests/test_logic/test_packages_logic.py::TestPackagesLogic::test_last_successful_build_chroots
tests/test_views/test_backend_ns/test_backend_general.py::TestUpdateBuilds::test_update_state_from_dict
  /builddir/build/BUILD/copr-frontend-1.204/coprs_frontend/tests/coprs_test_case.py:461: SAWarning: Object of type <Package> not in session, add operation along 'Copr.packages' will not proceed
    self.db.session.flush()
tests/test_logic/test_complex_logic.py::TestComplexLogic::test_fork_copr_projects_with_more_builds
tests/test_logic/test_complex_logic.py::TestComplexLogic::test_fork_copr_with_eoled_chroots
tests/test_logic/test_packages_logic.py::TestPackagesLogic::test_last_successful_build_chroots
tests/test_views/test_backend_ns/test_backend_general.py::TestUpdateBuilds::test_update_state_from_dict
  /builddir/build/BUILD/copr-frontend-1.204/coprs_frontend/tests/coprs_test_case.py:461: SAWarning: Object of type <Build> not in session, add operation along 'Copr.builds' will not proceed
    self.db.session.flush()
tests/test_views/test_coprs_ns/test_coprs_builds.py::TestCoprDeleteBuild::test_copr_build_submitter_can_delete_build
  /builddir/build/BUILD/copr-frontend-1.204/coprs_frontend/tests/test_views/test_coprs_ns/test_coprs_builds.py:177: SAWarning: Object of type <Package> not in session, add operation along 'Copr.packages' will not proceed
    self.db.session.commit()
tests/test_views/test_coprs_ns/test_coprs_builds.py::TestCoprDeleteBuild::test_copr_delete_multiple_builds_sends_single_action
  /builddir/build/BUILD/copr-frontend-1.204/coprs_frontend/tests/test_views/test_coprs_ns/test_coprs_builds.py:226: SAWarning: Object of type <Package> not in session, add operation along 'Copr.packages' will not proceed
    self.db.session.commit()
tests/test_views/test_coprs_ns/test_coprs_builds.py::TestCoprDeleteBuild::test_copr_delete_package_sends_single_action
  /builddir/build/BUILD/copr-frontend-1.204/coprs_frontend/tests/test_views/test_coprs_ns/test_coprs_builds.py:275: SAWarning: Object of type <Package> not in session, add operation along 'Copr.packages' will not proceed
    self.db.session.commit()
-- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html
=========================== short test summary info ============================
FAILED tests/test_anitya.py::TestAnitya::test_pypi - AssertionError
FAILED tests/test_exceptions.py::TestExceptionHandling::test_both_nonexisting_page_and_object
FAILED tests/test_pagure_events.py::TestPagureEvents::test_negative_is_dir_in_commit
FAILED tests/test_pagure_events.py::TestPagureEvents::test_positive_is_dir_in_commit
FAILED tests/test_pagure_events.py::TestPagureEvents::test_positive_build_from_pr_update
FAILED tests/test_pagure_events.py::TestPagureEvents::test_negative_build_from_pr_comment
FAILED tests/test_pagure_events.py::TestPagureEvents::test_negative_event_info
FAILED tests/test_pagure_events.py::TestPagureEvents::test_positive_build_from_push
FAILED tests/test_pagure_events.py::TestPagureEvents::test_negative_build_from_push
FAILED tests/test_pagure_events.py::TestPagureEvents::test_positive_build_from_pr_fork
FAILED tests/test_apiv3/test_mock_chroot.py::TestMockChroot::test_list_available_chroots
FAILED tests/test_logic/test_builds_logic.py::TestBuildsLogic::test_resubmit_build_inherit_git_hash
FAILED tests/test_logic/test_builds_logic.py::TestBuildsLogic::test_mark_as_failed
FAILED tests/test_logic/test_coprs_logic.py::TestCoprsLogic::test_raise_if_cant_delete
FAILED tests/test_logic/test_stat_logic.py::TestStatLogic::test_new_by_incr
FAILED tests/test_views/test_backend_ns/test_backend_general.py::TestWaitingBuilds::test_no_pending_builds
FAILED tests/test_views/test_coprs_ns/test_coprs_builds.py::TestCoprDeleteBuild::test_copr_build_submitter_can_delete_build
FAILED tests/test_views/test_coprs_ns/test_coprs_builds.py::TestCoprDeleteBuild::test_copr_delete_multiple_builds_sends_single_action
FAILED tests/test_views/test_coprs_ns/test_coprs_builds.py::TestCoprDeleteBuild::test_copr_delete_package_sends_single_action
FAILED tests/test_views/test_coprs_ns/test_coprs_general.py::TestMonitor::test_regression_monitor_no_copr_returned
FAILED tests/test_views/test_coprs_ns/test_coprs_general.py::TestCoprsShow::test_show_no_entries
FAILED tests/test_views/test_coprs_ns/test_coprs_general.py::TestCoprDetail::test_copr_detail_not_found
FAILED tests/test_views/test_coprs_ns/test_coprs_general.py::TestCoprDetail::test_codeblock_html_in_project_description
FAILED tests/test_views/test_coprs_ns/test_coprs_general.py::TestCoprRepoGeneration::test_repofile_copr_runtime_deps
FAILED tests/test_views/test_coprs_ns/test_coprs_general.py::TestCoprRepoGeneration::test_repofile_group_copr_runtime_deps
FAILED tests/test_views/test_coprs_ns/test_coprs_general.py::TestCoprRepoGeneration::test_repofile_transitive_runtime_deps
ERROR tests/test_anitya.py::TestAnitya::test_pypi - sqlalchemy.exc.InvalidReq...
ERROR tests/test_auth.py::TestGroupAuth::test_group_names_ldap - AttributeErr...
ERROR tests/test_comps.py::TestComps::test_edit_project_chroot_comps[api] - s...
ERROR tests/test_comps.py::TestComps::test_edit_project_chroot_comps[api] - A...
ERROR tests/test_comps.py::TestComps::test_edit_project_chroot_comps[webui]
ERROR tests/test_comps.py::TestComps::test_edit_project_chroot_comps[webui]
ERROR tests/test_config_overrides.py::TestConfigOverrides::test_valid_configuration_cases[case0-api]
ERROR tests/test_config_overrides.py::TestConfigOverrides::test_valid_configuration_cases[case0-api]
ERROR tests/test_config_overrides.py::TestConfigOverrides::test_valid_configuration_cases[case0-webui]
ERROR tests/test_config_overrides.py::TestConfigOverrides::test_valid_configuration_cases[case0-webui]
ERROR tests/test_config_overrides.py::TestConfigOverrides::test_valid_configuration_cases[case1-api]
ERROR tests/test_config_overrides.py::TestConfigOverrides::test_valid_configuration_cases[case1-api]
ERROR tests/test_config_overrides.py::TestConfigOverrides::test_valid_configuration_cases[case1-webui]
ERROR tests/test_config_overrides.py::TestConfigOverrides::test_valid_configuration_cases[case1-webui]
ERROR tests/test_config_overrides.py::TestConfigOverrides::test_valid_configuration_cases[case2-api]
ERROR tests/test_config_overrides.py::TestConfigOverrides::test_valid_configuration_cases[case2-api]
ERROR tests/test_config_overrides.py::TestConfigOverrides::test_valid_configuration_cases[case2-webui]
ERROR tests/test_config_overrides.py::TestConfigOverrides::test_valid_configuration_cases[case2-webui]
ERROR tests/test_config_overrides.py::TestConfigOverrides::test_valid_configuration_cases[case3-api]
ERROR tests/test_config_overrides.py::TestConfigOverrides::test_valid_configuration_cases[case3-api]
ERROR tests/test_config_overrides.py::TestConfigOverrides::test_valid_configuration_cases[case3-webui]
ERROR tests/test_config_overrides.py::TestConfigOverrides::test_valid_configuration_cases[case3-webui]
ERROR tests/test_config_overrides.py::TestConfigOverrides::test_valid_configuration_cases[case4-api]
ERROR tests/test_config_overrides.py::TestConfigOverrides::test_valid_configuration_cases[case4-api]
ERROR tests/test_config_overrides.py::TestConfigOverrides::test_valid_configuration_cases[case4-webui]
ERROR tests/test_config_overrides.py::TestConfigOverrides::test_valid_configuration_cases[case4-webui]
ERROR tests/test_config_overrides.py::TestConfigOverrides::test_isolation_override[case0-api]
ERROR tests/test_config_overrides.py::TestConfigOverrides::test_isolation_override[case0-api]
ERROR tests/test_config_overrides.py::TestConfigOverrides::test_isolation_override[case0-webui]
ERROR tests/test_config_overrides.py::TestConfigOverrides::test_isolation_override[case0-webui]
ERROR tests/test_config_overrides.py::TestConfigOverrides::test_isolation_override[case1-api]
ERROR tests/test_config_overrides.py::TestConfigOverrides::test_isolation_override[case1-api]
ERROR tests/test_config_overrides.py::TestConfigOverrides::test_isolation_override[case1-webui]
ERROR tests/test_config_overrides.py::TestConfigOverrides::test_isolation_override[case1-webui]
ERROR tests/test_config_overrides.py::TestConfigOverrides::test_isolation_override[case2-api]
ERROR tests/test_config_overrides.py::TestConfigOverrides::test_isolation_override[case2-api]
ERROR tests/test_config_overrides.py::TestConfigOverrides::test_isolation_override[case2-webui]
ERROR tests/test_config_overrides.py::TestConfigOverrides::test_isolation_override[case2-webui]
ERROR tests/test_config_overrides.py::TestConfigOverrides::test_isolation_override[case3-api]
ERROR tests/test_config_overrides.py::TestConfigOverrides::test_isolation_override[case3-api]
ERROR tests/test_config_overrides.py::TestConfigOverrides::test_isolation_override[case3-webui]
ERROR tests/test_config_overrides.py::TestConfigOverrides::test_isolation_override[case3-webui]
ERROR tests/test_config_overrides.py::TestConfigOverrides::test_isolation_override_by_chroot[case0-api]
ERROR tests/test_config_overrides.py::TestConfigOverrides::test_isolation_override_by_chroot[case0-api]
ERROR tests/test_config_overrides.py::TestConfigOverrides::test_isolation_override_by_chroot[case0-webui]
ERROR tests/test_config_overrides.py::TestConfigOverrides::test_isolation_override_by_chroot[case0-webui]
ERROR tests/test_config_overrides.py::TestConfigOverrides::test_isolation_override_by_chroot[case1-api]
ERROR tests/test_config_overrides.py::TestConfigOverrides::test_isolation_override_by_chroot[case1-api]
ERROR tests/test_config_overrides.py::TestConfigOverrides::test_isolation_override_by_chroot[case1-webui]
ERROR tests/test_config_overrides.py::TestConfigOverrides::test_isolation_override_by_chroot[case1-webui]
ERROR tests/test_config_overrides.py::TestConfigOverrides::test_isolation_override_by_chroot[case2-api]
ERROR tests/test_config_overrides.py::TestConfigOverrides::test_isolation_override_by_chroot[case2-api]
ERROR tests/test_config_overrides.py::TestConfigOverrides::test_isolation_override_by_chroot[case2-webui]
ERROR tests/test_config_overrides.py::TestConfigOverrides::test_isolation_override_by_chroot[case2-webui]
ERROR tests/test_config_overrides.py::TestConfigOverrides::test_isolation_override_by_chroot[case3-api]
ERROR tests/test_config_overrides.py::TestConfigOverrides::test_isolation_override_by_chroot[case3-api]
ERROR tests/test_config_overrides.py::TestConfigOverrides::test_isolation_override_by_chroot[case3-webui]
ERROR tests/test_config_overrides.py::TestConfigOverrides::test_isolation_override_by_chroot[case3-webui]
ERROR tests/test_copr_create.py::TestProjectCreate::test_invalid_contact[homepage-api]
ERROR tests/test_copr_create.py::TestProjectCreate::test_invalid_contact[homepage-api]
ERROR tests/test_copr_create.py::TestProjectCreate::test_invalid_contact[homepage-webui]
ERROR tests/test_copr_create.py::TestProjectCreate::test_invalid_contact[homepage-webui]
ERROR tests/test_copr_create.py::TestProjectCreate::test_invalid_contact[contact-api]
ERROR tests/test_copr_create.py::TestProjectCreate::test_invalid_contact[contact-api]
ERROR tests/test_copr_create.py::TestProjectCreate::test_invalid_contact[contact-webui]
ERROR tests/test_copr_create.py::TestProjectCreate::test_invalid_contact[contact-webui]
ERROR tests/test_copr_create.py::TestProjectCreate::test_valid_contact[homepage-api]
ERROR tests/test_copr_create.py::TestProjectCreate::test_valid_contact[homepage-api]
ERROR tests/test_copr_create.py::TestProjectCreate::test_valid_contact[homepage-webui]
ERROR tests/test_copr_create.py::TestProjectCreate::test_valid_contact[homepage-webui]
ERROR tests/test_copr_create.py::TestProjectCreate::test_valid_contact[contact-api]
ERROR tests/test_copr_create.py::TestProjectCreate::test_valid_contact[contact-api]
ERROR tests/test_copr_create.py::TestProjectCreate::test_valid_contact[contact-webui]
ERROR tests/test_copr_create.py::TestProjectCreate::test_valid_contact[contact-webui]
ERROR tests/test_exceptions.py::TestExceptionHandling::test_json_only_for_api
ERROR tests/test_exceptions.py::TestExceptionHandling::test_both_nonexisting_page_and_object
ERROR tests/test_exceptions.py::TestExceptionHandling::test_both_nonexisting_page_and_object_api
ERROR tests/test_exceptions.py::TestExceptionHandling::test_api_401 - Attribu...
ERROR tests/test_exceptions.py::TestExceptionHandling::test_api_403 - sqlalch...
ERROR tests/test_exceptions.py::TestExceptionHandling::test_api_403 - Attribu...
ERROR tests/test_exceptions.py::TestExceptionHandling::test_api_409 - sqlalch...
ERROR tests/test_exceptions.py::TestExceptionHandling::test_api_409 - Attribu...
ERROR tests/test_exceptions.py::TestExceptionHandling::test_api_400 - sqlalch...
ERROR tests/test_exceptions.py::TestExceptionHandling::test_api_400 - Attribu...
ERROR tests/test_exceptions.py::TestExceptionHandling::test_api_504 - Attribu...
ERROR tests/test_exceptions.py::TestExceptionHandling::test_api_500 - Attribu...
ERROR tests/test_exceptions.py::TestExceptionHandling::test_api_500_default_message
ERROR tests/test_exceptions.py::TestExceptionHandling::test_api_500_runtime_error
ERROR tests/test_exceptions.py::TestExceptionHandling::test_api_500_storage
ERROR tests/test_exceptions.py::TestExceptionHandling::test_api_500_in_progress
ERROR tests/test_forms.py::TestCoprsFormFactory::test_empty_chroots - sqlalch...
ERROR tests/test_forms.py::TestCoprsFormFactory::test_empty_chroots - Attribu...
ERROR tests/test_forms.py::TestPinnedCoprsForm::test_limit - sqlalchemy.exc.I...
ERROR tests/test_forms.py::TestPinnedCoprsForm::test_limit - AttributeError: ...
ERROR tests/test_forms.py::TestPinnedCoprsForm::test_unique_coprs - sqlalchem...
ERROR tests/test_forms.py::TestPinnedCoprsForm::test_unique_coprs - Attribute...
ERROR tests/test_forms.py::TestPinnedCoprsForm::test_invalid_choice - sqlalch...
ERROR tests/test_forms.py::TestPinnedCoprsForm::test_invalid_choice - Attribu...
ERROR tests/test_forms.py::TestCreateModuleForm::test_successful_validate - A...
ERROR tests/test_forms.py::TestCreateModuleForm::test_unique_names - Attribut...
ERROR tests/test_forms.py::TestCreateModuleForm::test_profile_name_required
ERROR tests/test_helpers.py::TestHelpers::test_guess_package_name - Attribute...
ERROR tests/test_helpers.py::TestHelpers::test_generate_repo_url - AttributeE...
ERROR tests/test_helpers.py::TestHelpers::test_fix_protocol_for_backend - Att...
ERROR tests/test_helpers.py::TestHelpers::test_fix_protocol_for_frontend - At...
ERROR tests/test_helpers.py::TestHelpers::test_pre_process_repo_url - Attribu...
ERROR tests/test_helpers.py::TestHelpers::test_parse_repo_params - AttributeE...
ERROR tests/test_helpers.py::TestHelpers::test_parse_repo_params_pass_keys - ...
ERROR tests/test_helpers.py::TestHelpers::test_subdir_match - AttributeError:...
ERROR tests/test_helpers.py::TestHelpers::test_raw_patch_parse - AttributeErr...
ERROR tests/test_helpers.py::TestHelpers::test_pagure_html_diff_parser - Attr...
ERROR tests/test_helpers.py::TestHelpers::test_orm_object_clone - sqlalchemy....
ERROR tests/test_helpers.py::TestHelpers::test_orm_object_clone - AttributeEr...
ERROR tests/test_helpers.py::TestHelpers::test_being_server_admin - sqlalchem...
ERROR tests/test_helpers.py::TestHelpers::test_being_server_admin - Attribute...
ERROR tests/test_logging.py::TestLoggingRequestUser::test_anon - sqlalchemy.e...
ERROR tests/test_logging.py::TestLoggingRequestUser::test_anon - AttributeErr...
ERROR tests/test_logging.py::TestLoggingRequestUser::test_server - sqlalchemy...
ERROR tests/test_logging.py::TestLoggingRequestUser::test_server - AttributeE...
ERROR tests/test_logging.py::TestLoggingRequestUser::test_user - sqlalchemy.e...
ERROR tests/test_logging.py::TestLoggingRequestUser::test_user - AttributeErr...
ERROR tests/test_logging.py::TestLoggingUsersLogic::test_user_get - sqlalchem...
ERROR tests/test_logging.py::TestLoggingUsersLogic::test_user_get - Attribute...
ERROR tests/test_logging.py::TestLoggingUsersLogic::test_raise_if_cant_update_copr
ERROR tests/test_logging.py::TestLoggingUsersLogic::test_raise_if_cant_update_copr
ERROR tests/test_logging.py::TestLoggingUsersLogic::test_raise_if_cant_build_in_copr
ERROR tests/test_logging.py::TestLoggingUsersLogic::test_raise_if_cant_build_in_copr
ERROR tests/test_logging.py::TestLoggingUsersLogic::test_raise_if_not_in_group
ERROR tests/test_logging.py::TestLoggingUsersLogic::test_raise_if_not_in_group
ERROR tests/test_logging.py::TestLoggingUsersLogic::test_delete_user_data - s...
ERROR tests/test_logging.py::TestLoggingUsersLogic::test_delete_user_data - A...
ERROR tests/test_logging.py::TestLoggingUsersLogic::test_create_user_wrapper
ERROR tests/test_logging.py::TestLoggingUsersLogic::test_create_user_wrapper
ERROR tests/test_logging.py::TestLoggingUsersLogic::test_user_data_dumper - s...
ERROR tests/test_logging.py::TestLoggingUsersLogic::test_user_data_dumper - A...
ERROR tests/test_logging.py::TestLoggingUserGeneral::test_delete_user_data - ...
ERROR tests/test_logging.py::TestLoggingUserGeneral::test_delete_user_data - ...
ERROR tests/test_logging.py::TestLoggingCoprPermissionsLogic::test_update_permissions
ERROR tests/test_logging.py::TestLoggingCoprPermissionsLogic::test_update_permissions
ERROR tests/test_logging.py::TestLoggingCoprPermissionsLogic::test_update_permissions_by_applier
ERROR tests/test_logging.py::TestLoggingCoprPermissionsLogic::test_update_permissions_by_applier
ERROR tests/test_logging.py::TestLoggingCoprPermissionsLogic::test_set_permissions
ERROR tests/test_logging.py::TestLoggingCoprPermissionsLogic::test_set_permissions
ERROR tests/test_logging.py::TestLoggingCoprPermissionsLogic::test_request_permission
ERROR tests/test_logging.py::TestLoggingCoprPermissionsLogic::test_request_permission
ERROR tests/test_logging.py::TestLoggingAuth::test_create_or_login - sqlalche...
ERROR tests/test_logging.py::TestLoggingAuth::test_create_or_login - Attribut...
ERROR tests/test_logging.py::TestLoggingAuth::test_logout - sqlalchemy.exc.In...
ERROR tests/test_logging.py::TestLoggingAuth::test_logout - AttributeError: '...
ERROR tests/test_logging.py::TestLoggingAuth::test_api_login_required_invalid
ERROR tests/test_logging.py::TestLoggingAuth::test_api_login_required_invalid
ERROR tests/test_logging.py::TestLoggingUsingAdminPermissions::test_update_copr
ERROR tests/test_logging.py::TestLoggingUsingAdminPermissions::test_update_copr
ERROR tests/test_logging.py::TestLoggingUsingAdminPermissions::test_update_copr_chroot
ERROR tests/test_logging.py::TestLoggingUsingAdminPermissions::test_update_copr_chroot
ERROR tests/test_logging.py::TestLoggingUsingAdminPermissions::test_update_package_webui
ERROR tests/test_logging.py::TestLoggingUsingAdminPermissions::test_update_package_webui
ERROR tests/test_logging.py::TestLoggingUsingAdminPermissions::test_update_package_apiv3
ERROR tests/test_logging.py::TestLoggingUsingAdminPermissions::test_update_package_apiv3
ERROR tests/test_mail.py::TestMail::test_permissions_request_message - sqlalc...
ERROR tests/test_mail.py::TestMail::test_permissions_request_message - Attrib...
ERROR tests/test_mail.py::TestMail::test_permissions_change_message - sqlalch...
ERROR tests/test_mail.py::TestMail::test_permissions_change_message - Attribu...
ERROR tests/test_mail.py::TestMail::test_legal_flag_message - sqlalchemy.exc....
ERROR tests/test_mail.py::TestMail::test_legal_flag_message - AttributeError:...
ERROR tests/test_mail.py::TestMail::test_outdated_chroot_message - sqlalchemy...
ERROR tests/test_mail.py::TestMail::test_outdated_chroot_message - AttributeE...
ERROR tests/test_mail.py::TestMail::test_outdated_chroot_message_empty_chroots
ERROR tests/test_mail.py::TestMail::test_filter_recipients - AttributeError: ...
ERROR tests/test_models.py::TestBuildModel::test_get_chroots_by_status - sqla...
ERROR tests/test_models.py::TestBuildModel::test_get_chroots_by_status - Attr...
ERROR tests/test_models.py::TestBuildModel::test_chroot_denylist - sqlalchemy...
ERROR tests/test_models.py::TestBuildModel::test_chroot_denylist - AttributeE...
ERROR tests/test_models.py::TestBuildModel::test_chroot_denylist_all - sqlalc...
ERROR tests/test_models.py::TestBuildModel::test_chroot_denylist_all - Attrib...
ERROR tests/test_models.py::TestBuildModel::test_finished - sqlalchemy.exc.In...
ERROR tests/test_models.py::TestBuildModel::test_finished - AttributeError: '...
ERROR tests/test_models.py::TestBuildModel::test_finished_srpms - sqlalchemy....
ERROR tests/test_models.py::TestBuildModel::test_finished_srpms - AttributeEr...
ERROR tests/test_models.py::TestBuildModel::test_canceled - sqlalchemy.exc.In...
ERROR tests/test_models.py::TestBuildModel::test_canceled - AttributeError: '...
ERROR tests/test_models.py::TestBuildModel::test_build_logs - sqlalchemy.exc....
ERROR tests/test_models.py::TestBuildModel::test_build_logs - AttributeError:...
ERROR tests/test_models.py::TestBuildModel::test_buildchroot_logs - sqlalchem...
ERROR tests/test_models.py::TestBuildModel::test_buildchroot_logs - Attribute...
ERROR tests/test_models.py::TestBuildModel::test_source_state_translation - A...
ERROR tests/test_models.py::TestCoprModel::test_permissible_chroots - sqlalch...
ERROR tests/test_models.py::TestCoprModel::test_permissible_chroots - Attribu...
ERROR tests/test_pagure_events.py::TestPagureEvents::test_negative_event_info_from_pr_comment
ERROR tests/test_pagure_events.py::TestPagureEvents::test_negative_is_dir_in_commit
ERROR tests/test_pagure_events.py::TestPagureEvents::test_positive_is_dir_in_commit
ERROR tests/test_pagure_events.py::TestPagureEvents::test_positive_build_from_pr_update
ERROR tests/test_pagure_events.py::TestPagureEvents::test_negative_event_info_from_pr_comment_random_comment
ERROR tests/test_pagure_events.py::TestPagureEvents::test_positive_event_info_from_pr_comment
ERROR tests/test_pagure_events.py::TestPagureEvents::test_negative_build_from_pr_comment
ERROR tests/test_pagure_events.py::TestPagureEvents::test_negative_event_info
ERROR tests/test_pagure_events.py::TestPagureEvents::test_negative_event_info_from_pr_comment_closed_pr
ERROR tests/test_pagure_events.py::TestPagureEvents::test_positive_event_info_from_pr
ERROR tests/test_pagure_events.py::TestPagureEvents::test_positive_event_info_from_push
ERROR tests/test_pagure_events.py::TestPagureEvents::test_positive_build_from_push
ERROR tests/test_pagure_events.py::TestPagureEvents::test_negative_build_from_push
ERROR tests/test_pagure_events.py::TestPagureEvents::test_negative_unknown_topic
ERROR tests/test_pagure_events.py::TestPagureEvents::test_positive_build_from_pr_fork
ERROR tests/test_resubmit.py::TestCoprResubmitBuild::test_copr_repeat_build_attributes_upload
ERROR tests/test_resubmit.py::TestCoprResubmitBuild::test_copr_repeat_build_attributes_upload
ERROR tests/test_webhooks.py::TestCustomWebhook::test_package_not_found - sql...
ERROR tests/test_webhooks.py::TestCustomWebhook::test_package_not_found - Att...
ERROR tests/test_webhooks.py::TestCustomWebhook::test_hook_data_stored - sqla...
ERROR tests/test_webhooks.py::TestCustomWebhook::test_hook_data_stored - Attr...
ERROR tests/test_webhooks.py::TestCustomWebhook::test_bad_uuid - sqlalchemy.e...
ERROR tests/test_webhooks.py::TestCustomWebhook::test_bad_uuid - AttributeErr...
ERROR tests/test_webhooks.py::TestGithubWebhook::test_package_bad_request - s...
ERROR tests/test_webhooks.py::TestGithubWebhook::test_package_bad_request - A...
ERROR tests/test_webhooks.py::TestGithubWebhook::test_hook_status_ping_event
ERROR tests/test_webhooks.py::TestGithubWebhook::test_hook_status_ping_event
ERROR tests/test_webhooks.py::TestGithubWebhook::test_hook_data_stored - sqla...
ERROR tests/test_webhooks.py::TestGithubWebhook::test_hook_data_stored - Attr...
ERROR tests/test_webhooks.py::TestGithubWebhook::test_bad_uuid - sqlalchemy.e...
ERROR tests/test_webhooks.py::TestGithubWebhook::test_bad_uuid - AttributeErr...
ERROR tests/test_webhooks.py::TestGitlabWebhook::test_package_bad_request - s...
ERROR tests/test_webhooks.py::TestGitlabWebhook::test_package_bad_request - A...
ERROR tests/test_webhooks.py::TestGitlabWebhook::test_hook_data_stored - sqla...
ERROR tests/test_webhooks.py::TestGitlabWebhook::test_hook_data_stored - Attr...
ERROR tests/test_webhooks.py::TestGitlabWebhook::test_bad_uuid - sqlalchemy.e...
ERROR tests/test_webhooks.py::TestGitlabWebhook::test_bad_uuid - AttributeErr...
ERROR tests/test_webhooks.py::TestBitbucketWebhook::test_package_bad_request
ERROR tests/test_webhooks.py::TestBitbucketWebhook::test_package_bad_request
ERROR tests/test_webhooks.py::TestBitbucketWebhook::test_hook_data_stored - s...
ERROR tests/test_webhooks.py::TestBitbucketWebhook::test_hook_data_stored - A...
ERROR tests/test_webhooks.py::TestBitbucketWebhook::test_bad_uuid - sqlalchem...
ERROR tests/test_webhooks.py::TestBitbucketWebhook::test_bad_uuid - Attribute...
ERROR tests/test_apiv3/test_build_chroots.py::TestAPIv3BuildChrootsResults::test_build_chroot_built_packages[None]
ERROR tests/test_apiv3/test_build_chroots.py::TestAPIv3BuildChrootsResults::test_build_chroot_built_packages[None]
ERROR tests/test_apiv3/test_build_chroots.py::TestAPIv3BuildChrootsResults::test_build_chroot_built_packages[1]
ERROR tests/test_apiv3/test_build_chroots.py::TestAPIv3BuildChrootsResults::test_build_chroot_built_packages[1]
ERROR tests/test_apiv3/test_build_chroots.py::TestAPIv3BuildChrootsResults::test_build_chroot_built_packages[11]
ERROR tests/test_apiv3/test_build_chroots.py::TestAPIv3BuildChrootsResults::test_build_chroot_built_packages[11]
ERROR tests/test_apiv3/test_build_chroots.py::TestAPIv3BuildChrootsResults::test_build_chroot_list[ASC]
ERROR tests/test_apiv3/test_build_chroots.py::TestAPIv3BuildChrootsResults::test_build_chroot_list[ASC]
ERROR tests/test_apiv3/test_build_chroots.py::TestAPIv3BuildChrootsResults::test_build_chroot_list[DESC]
ERROR tests/test_apiv3/test_build_chroots.py::TestAPIv3BuildChrootsResults::test_build_chroot_list[DESC]
ERROR tests/test_apiv3/test_build_chroots.py::TestAPIv3BuildChrootsResults::test_build_chroot_list_no_id
ERROR tests/test_apiv3/test_build_chroots.py::TestAPIv3BuildChrootsResults::test_build_chroot_list_no_id
ERROR tests/test_apiv3/test_builds.py::TestAPIv3Builds::test_v3_builds[buildopts0-case0]
ERROR tests/test_apiv3/test_builds.py::TestAPIv3Builds::test_v3_builds[buildopts0-case0]
ERROR tests/test_apiv3/test_builds.py::TestAPIv3Builds::test_v3_builds[buildopts0-case1]
ERROR tests/test_apiv3/test_builds.py::TestAPIv3Builds::test_v3_builds[buildopts0-case1]
ERROR tests/test_apiv3/test_builds.py::TestAPIv3Builds::test_v3_builds[buildopts0-case2]
ERROR tests/test_apiv3/test_builds.py::TestAPIv3Builds::test_v3_builds[buildopts0-case2]
ERROR tests/test_apiv3/test_builds.py::TestAPIv3Builds::test_v3_builds[buildopts0-case3]
ERROR tests/test_apiv3/test_builds.py::TestAPIv3Builds::test_v3_builds[buildopts0-case3]
ERROR tests/test_apiv3/test_builds.py::TestAPIv3Builds::test_v3_builds[buildopts1-case0]
ERROR tests/test_apiv3/test_builds.py::TestAPIv3Builds::test_v3_builds[buildopts1-case0]
ERROR tests/test_apiv3/test_builds.py::TestAPIv3Builds::test_v3_builds[buildopts1-case1]
ERROR tests/test_apiv3/test_builds.py::TestAPIv3Builds::test_v3_builds[buildopts1-case1]
ERROR tests/test_apiv3/test_builds.py::TestAPIv3Builds::test_v3_builds[buildopts1-case2]
ERROR tests/test_apiv3/test_builds.py::TestAPIv3Builds::test_v3_builds[buildopts1-case2]
ERROR tests/test_apiv3/test_builds.py::TestAPIv3Builds::test_v3_builds[buildopts1-case3]
ERROR tests/test_apiv3/test_builds.py::TestAPIv3Builds::test_v3_builds[buildopts1-case3]
ERROR tests/test_apiv3/test_builds.py::TestAPIv3Builds::test_v3_builds[buildopts2-case0]
ERROR tests/test_apiv3/test_builds.py::TestAPIv3Builds::test_v3_builds[buildopts2-case0]
ERROR tests/test_apiv3/test_builds.py::TestAPIv3Builds::test_v3_builds[buildopts2-case1]
ERROR tests/test_apiv3/test_builds.py::TestAPIv3Builds::test_v3_builds[buildopts2-case1]
ERROR tests/test_apiv3/test_builds.py::TestAPIv3Builds::test_v3_builds[buildopts2-case2]
ERROR tests/test_apiv3/test_builds.py::TestAPIv3Builds::test_v3_builds[buildopts2-case2]
ERROR tests/test_apiv3/test_builds.py::TestAPIv3Builds::test_v3_builds[buildopts2-case3]
ERROR tests/test_apiv3/test_builds.py::TestAPIv3Builds::test_v3_builds[buildopts2-case3]
ERROR tests/test_apiv3/test_builds.py::TestAPIv3Builds::test_v3_builds[buildopts3-case0]
ERROR tests/test_apiv3/test_builds.py::TestAPIv3Builds::test_v3_builds[buildopts3-case0]
ERROR tests/test_apiv3/test_builds.py::TestAPIv3Builds::test_v3_builds[buildopts3-case1]
ERROR tests/test_apiv3/test_builds.py::TestAPIv3Builds::test_v3_builds[buildopts3-case1]
ERROR tests/test_apiv3/test_builds.py::TestAPIv3Builds::test_v3_builds[buildopts3-case2]
ERROR tests/test_apiv3/test_builds.py::TestAPIv3Builds::test_v3_builds[buildopts3-case2]
ERROR tests/test_apiv3/test_builds.py::TestAPIv3Builds::test_v3_builds[buildopts3-case3]
ERROR tests/test_apiv3/test_builds.py::TestAPIv3Builds::test_v3_builds[buildopts3-case3]
ERROR tests/test_apiv3/test_builds.py::TestAPIv3Builds::test_v3_build_failure[case0]
ERROR tests/test_apiv3/test_builds.py::TestAPIv3Builds::test_v3_build_failure[case0]
ERROR tests/test_apiv3/test_builds.py::TestAPIv3Builds::test_v3_build_failure[case1]
ERROR tests/test_apiv3/test_builds.py::TestAPIv3Builds::test_v3_build_failure[case1]
ERROR tests/test_apiv3/test_builds.py::TestAPIv3Builds::test_v3_get_build - s...
ERROR tests/test_apiv3/test_builds.py::TestAPIv3Builds::test_v3_get_build - A...
ERROR tests/test_apiv3/test_builds.py::TestAPIv3Builds::test_v3_builds_exclude_chroots[exclude_chroots0-case0]
ERROR tests/test_apiv3/test_builds.py::TestAPIv3Builds::test_v3_builds_exclude_chroots[exclude_chroots0-case0]
ERROR tests/test_apiv3/test_builds.py::TestAPIv3Builds::test_v3_builds_exclude_chroots[exclude_chroots0-case1]
ERROR tests/test_apiv3/test_builds.py::TestAPIv3Builds::test_v3_builds_exclude_chroots[exclude_chroots0-case1]
ERROR tests/test_apiv3/test_builds.py::TestAPIv3Builds::test_v3_builds_exclude_chroots[exclude_chroots0-case2]
ERROR tests/test_apiv3/test_builds.py::TestAPIv3Builds::test_v3_builds_exclude_chroots[exclude_chroots0-case2]
ERROR tests/test_apiv3/test_builds.py::TestAPIv3Builds::test_v3_builds_exclude_chroots[exclude_chroots0-case3]
ERROR tests/test_apiv3/test_builds.py::TestAPIv3Builds::test_v3_builds_exclude_chroots[exclude_chroots0-case3]
ERROR tests/test_apiv3/test_builds.py::TestAPIv3Builds::test_v3_builds_exclude_chroots[exclude_chroots1-case0]
ERROR tests/test_apiv3/test_builds.py::TestAPIv3Builds::test_v3_builds_exclude_chroots[exclude_chroots1-case0]
ERROR tests/test_apiv3/test_builds.py::TestAPIv3Builds::test_v3_builds_exclude_chroots[exclude_chroots1-case1]
ERROR tests/test_apiv3/test_builds.py::TestAPIv3Builds::test_v3_builds_exclude_chroots[exclude_chroots1-case1]
ERROR tests/test_apiv3/test_builds.py::TestAPIv3Builds::test_v3_builds_exclude_chroots[exclude_chroots1-case2]
ERROR tests/test_apiv3/test_builds.py::TestAPIv3Builds::test_v3_builds_exclude_chroots[exclude_chroots1-case2]
ERROR tests/test_apiv3/test_builds.py::TestAPIv3Builds::test_v3_builds_exclude_chroots[exclude_chroots1-case3]
ERROR tests/test_apiv3/test_builds.py::TestAPIv3Builds::test_v3_builds_exclude_chroots[exclude_chroots1-case3]
ERROR tests/test_apiv3/test_builds.py::TestWebUIBuilds::test_isolation_option_set
ERROR tests/test_apiv3/test_builds.py::TestWebUIBuilds::test_isolation_option_set
ERROR tests/test_apiv3/test_builds.py::TestAPIv3BuildsResults::test_build_built_packages
ERROR tests/test_apiv3/test_builds.py::TestAPIv3BuildsResults::test_build_built_packages
ERROR tests/test_apiv3/test_copr_chroot.py::TestCoprChroots::test_edit_chroot_form
ERROR tests/test_apiv3/test_copr_chroot.py::TestCoprChroots::test_edit_chroot_form
ERROR tests/test_apiv3/test_copr_chroot.py::TestCoprChroots::test_v3_edit_chroot
ERROR tests/test_apiv3/test_copr_chroot.py::TestCoprChroots::test_v3_edit_chroot
ERROR tests/test_apiv3/test_copr_chroot.py::TestCoprChroots::test_v3_edit_chroot_reset
ERROR tests/test_apiv3/test_copr_chroot.py::TestCoprChroots::test_v3_edit_chroot_reset
ERROR tests/test_apiv3/test_copr_chroot.py::TestCoprChroots::test_edit_chroot_permission
ERROR tests/test_apiv3/test_copr_chroot.py::TestCoprChroots::test_edit_chroot_permission
ERROR tests/test_apiv3/test_copr_chroot.py::TestCoprChroots::test_edit_chroot_form_error
ERROR tests/test_apiv3/test_copr_chroot.py::TestCoprChroots::test_edit_chroot_form_error
ERROR tests/test_apiv3/test_coprdirs.py::TestCoprDir::test_custom_copr_dir - ...
ERROR tests/test_apiv3/test_coprdirs.py::TestCoprDir::test_custom_copr_dir - ...
ERROR tests/test_apiv3/test_coprdirs.py::TestCoprDir::test_custom_dir_validation
ERROR tests/test_apiv3/test_coprdirs.py::TestCoprDir::test_custom_dir_validation
ERROR tests/test_apiv3/test_mock_chroot.py::TestMockChroot::test_list_available_chroots
ERROR tests/test_apiv3/test_monitor.py::TestAPIv3Monitor::test_v3_monitor[case0]
ERROR tests/test_apiv3/test_monitor.py::TestAPIv3Monitor::test_v3_monitor[case0]
ERROR tests/test_apiv3/test_monitor.py::TestAPIv3Monitor::test_v3_monitor[case1]
ERROR tests/test_apiv3/test_monitor.py::TestAPIv3Monitor::test_v3_monitor[case1]
ERROR tests/test_apiv3/test_monitor.py::TestAPIv3Monitor::test_v3_monitor[case2]
ERROR tests/test_apiv3/test_monitor.py::TestAPIv3Monitor::test_v3_monitor[case2]
ERROR tests/test_apiv3/test_monitor.py::TestAPIv3Monitor::test_v3_monitor[case3]
ERROR tests/test_apiv3/test_monitor.py::TestAPIv3Monitor::test_v3_monitor[case3]
ERROR tests/test_apiv3/test_monitor.py::TestAPIv3Monitor::test_v3_monitor_empty_project
ERROR tests/test_apiv3/test_monitor.py::TestAPIv3Monitor::test_v3_monitor_empty_project
ERROR tests/test_apiv3/test_monitor.py::TestAPIv3Monitor::test_v3_monitor_multi_chroot
ERROR tests/test_apiv3/test_monitor.py::TestAPIv3Monitor::test_v3_monitor_multi_chroot
ERROR tests/test_apiv3/test_monitor.py::TestAPIv3Monitor::test_v3_monitor_source_build
ERROR tests/test_apiv3/test_monitor.py::TestAPIv3Monitor::test_v3_monitor_source_build
ERROR tests/test_apiv3/test_packages.py::TestAPIv3Packages::test_v3_packages[chroots0-case0]
ERROR tests/test_apiv3/test_packages.py::TestAPIv3Packages::test_v3_packages[chroots0-case0]
ERROR tests/test_apiv3/test_packages.py::TestAPIv3Packages::test_v3_packages[chroots0-case1]
ERROR tests/test_apiv3/test_packages.py::TestAPIv3Packages::test_v3_packages[chroots0-case1]
ERROR tests/test_apiv3/test_packages.py::TestAPIv3Packages::test_v3_packages[chroots0-case2]
ERROR tests/test_apiv3/test_packages.py::TestAPIv3Packages::test_v3_packages[chroots0-case2]
ERROR tests/test_apiv3/test_packages.py::TestAPIv3Packages::test_v3_packages[chroots0-case3]
ERROR tests/test_apiv3/test_packages.py::TestAPIv3Packages::test_v3_packages[chroots0-case3]
ERROR tests/test_apiv3/test_packages.py::TestAPIv3Packages::test_v3_packages[chroots1-case0]
ERROR tests/test_apiv3/test_packages.py::TestAPIv3Packages::test_v3_packages[chroots1-case0]
ERROR tests/test_apiv3/test_packages.py::TestAPIv3Packages::test_v3_packages[chroots1-case1]
ERROR tests/test_apiv3/test_packages.py::TestAPIv3Packages::test_v3_packages[chroots1-case1]
ERROR tests/test_apiv3/test_packages.py::TestAPIv3Packages::test_v3_packages[chroots1-case2]
ERROR tests/test_apiv3/test_packages.py::TestAPIv3Packages::test_v3_packages[chroots1-case2]
ERROR tests/test_apiv3/test_packages.py::TestAPIv3Packages::test_v3_packages[chroots1-case3]
ERROR tests/test_apiv3/test_packages.py::TestAPIv3Packages::test_v3_packages[chroots1-case3]
ERROR tests/test_apiv3/test_project_chroots.py::TestApiv3ProjectChroots::test_edit_project_chroot_api
ERROR tests/test_apiv3/test_project_chroots.py::TestApiv3ProjectChroots::test_edit_project_chroot_api
ERROR tests/test_apiv3/test_projects.py::TestApiv3Projects::test_get_project_list_order
ERROR tests/test_apiv3/test_projects.py::TestApiv3Projects::test_get_project_list_order
ERROR tests/test_apiv3/test_projects.py::TestApiv3Projects::test_compat_bootstrap_config[True-on]
ERROR tests/test_apiv3/test_projects.py::TestApiv3Projects::test_compat_bootstrap_config[True-on]
ERROR tests/test_apiv3/test_projects.py::TestApiv3Projects::test_compat_bootstrap_config[False-off]
ERROR tests/test_apiv3/test_projects.py::TestApiv3Projects::test_compat_bootstrap_config[False-off]
ERROR tests/test_apiv3/test_projects.py::TestApiv3Projects::test_isolation_config[nspawn-nspawn]
ERROR tests/test_apiv3/test_projects.py::TestApiv3Projects::test_isolation_config[nspawn-nspawn]
ERROR tests/test_apiv3/test_projects.py::TestApiv3Projects::test_isolation_config[simple-simple]
ERROR tests/test_apiv3/test_projects.py::TestApiv3Projects::test_isolation_config[simple-simple]
ERROR tests/test_apiv3/test_projects.py::TestApiv3Projects::test_isolation_config[None-default]
ERROR tests/test_apiv3/test_projects.py::TestApiv3Projects::test_isolation_config[None-default]
ERROR tests/test_apiv3/test_projects.py::TestApiv3Projects::test_update_copr_api3
ERROR tests/test_apiv3/test_projects.py::TestApiv3Projects::test_update_copr_api3
ERROR tests/test_apiv3/test_projects.py::TestApiv3Projects::test_fedora_review_setting
ERROR tests/test_apiv3/test_projects.py::TestApiv3Projects::test_fedora_review_setting
ERROR tests/test_apiv3/test_projects.py::TestApiv3Projects::test_regenerate_repos
ERROR tests/test_apiv3/test_projects.py::TestApiv3Projects::test_regenerate_repos
ERROR tests/test_apiv3/test_projects.py::TestApiV3Permissions::test_perms_get_require_admin
ERROR tests/test_apiv3/test_projects.py::TestApiV3Permissions::test_perms_get_require_admin
ERROR tests/test_apiv3/test_projects.py::TestApiV3Permissions::test_no_permission_set
ERROR tests/test_apiv3/test_projects.py::TestApiV3Permissions::test_no_permission_set
ERROR tests/test_apiv3/test_projects.py::TestApiV3Permissions::test_perms_accessible_by_user
ERROR tests/test_apiv3/test_projects.py::TestApiV3Permissions::test_perms_accessible_by_user
ERROR tests/test_apiv3/test_projects.py::TestApiV3Permissions::test_perms_set_require_admin
ERROR tests/test_apiv3/test_projects.py::TestApiV3Permissions::test_perms_set_require_admin
ERROR tests/test_apiv3/test_projects.py::TestApiV3Permissions::test_set_bad_data
ERROR tests/test_apiv3/test_projects.py::TestApiV3Permissions::test_set_bad_data
ERROR tests/test_apiv3/test_projects.py::TestApiV3Permissions::test_settable
ERROR tests/test_apiv3/test_projects.py::TestApiV3Permissions::test_settable
ERROR tests/test_apiv3/test_projects.py::TestApiV3Permissions::test_cant_readd_owner
ERROR tests/test_apiv3/test_projects.py::TestApiV3Permissions::test_cant_readd_owner
ERROR tests/test_apiv3/test_projects.py::TestApiV3Permissions::test_request_invalid
ERROR tests/test_apiv3/test_projects.py::TestApiV3Permissions::test_request_invalid
ERROR tests/test_apiv3/test_projects.py::TestApiV3Permissions::test_request_valid
ERROR tests/test_apiv3/test_projects.py::TestApiV3Permissions::test_request_valid
ERROR tests/test_apiv3/test_projects.py::TestApiV3Permissions::test_perms_set_sends_emails
ERROR tests/test_apiv3/test_projects.py::TestApiV3Permissions::test_perms_set_sends_emails
ERROR tests/test_apiv3/test_projects.py::TestApiV3Permissions::test_perms_set_sends_emails_2
ERROR tests/test_apiv3/test_projects.py::TestApiV3Permissions::test_perms_set_sends_emails_2
ERROR tests/test_apiv3/test_projects.py::TestApiV3Permissions::test_add_exist_ok
ERROR tests/test_apiv3/test_projects.py::TestApiV3Permissions::test_add_exist_ok
ERROR tests/test_apiv3/test_rpmrepo.py::TestApiRPMRepo::test_apiv3_rpmrepo_external_deps
ERROR tests/test_apiv3/test_rpmrepo.py::TestApiRPMRepo::test_apiv3_rpmrepo_external_deps
ERROR tests/test_apiv3/test_rpmrepo.py::TestApiRPMRepo::test_apiv3_rpmrepo_multilib
ERROR tests/test_apiv3/test_rpmrepo.py::TestApiRPMRepo::test_apiv3_rpmrepo_multilib
ERROR tests/test_apiv3/test_rpmrepo.py::TestApiRPMRepo::test_apiv3_rpmrepo_dirs
ERROR tests/test_apiv3/test_rpmrepo.py::TestApiRPMRepo::test_apiv3_rpmrepo_dirs
ERROR tests/test_commands/test_create_chroots.py::TestCreateChrootCommand::test_create_chroot_with_comments
ERROR tests/test_commands/test_create_chroots.py::TestCreateChrootCommand::test_create_chroot_with_comments
ERROR tests/test_commands/test_delete_outdated_chroots.py::TestDeleteOutdatedChroots::test_delete_outdated
ERROR tests/test_commands/test_delete_outdated_chroots.py::TestDeleteOutdatedChroots::test_delete_outdated
ERROR tests/test_commands/test_delete_outdated_chroots.py::TestDeleteOutdatedChroots::test_delete_outdated_yesterday
ERROR tests/test_commands/test_delete_outdated_chroots.py::TestDeleteOutdatedChroots::test_delete_outdated_yesterday
ERROR tests/test_commands/test_delete_outdated_chroots.py::TestDeleteOutdatedChroots::test_delete_outdated_not_yet
ERROR tests/test_commands/test_delete_outdated_chroots.py::TestDeleteOutdatedChroots::test_delete_outdated_not_yet
ERROR tests/test_commands/test_delete_outdated_chroots.py::TestDeleteOutdatedChroots::test_delete_outdated_handle_none_notify
ERROR tests/test_commands/test_delete_outdated_chroots.py::TestDeleteOutdatedChroots::test_delete_outdated_handle_none_notify
ERROR tests/test_commands/test_delete_outdated_chroots.py::TestDeleteOutdatedChroots::test_delete_unclicked
ERROR tests/test_commands/test_delete_outdated_chroots.py::TestDeleteOutdatedChroots::test_delete_unclicked
ERROR tests/test_commands/test_notify_outdated_chroots.py::TestNotifyOutdatedChroots::test_user_chroots_map
ERROR tests/test_commands/test_notify_outdated_chroots.py::TestNotifyOutdatedChroots::test_user_chroots_map
ERROR tests/test_commands/test_notify_outdated_chroots.py::TestNotifyOutdatedChroots::test_user_chroots_map_permissions
ERROR tests/test_commands/test_notify_outdated_chroots.py::TestNotifyOutdatedChroots::test_user_chroots_map_permissions
ERROR tests/test_commands/test_notify_outdated_chroots.py::TestNotifyOutdatedChroots::test_user_chroots_map_email
ERROR tests/test_commands/test_notify_outdated_chroots.py::TestNotifyOutdatedChroots::test_user_chroots_map_email
ERROR tests/test_commands/test_notify_outdated_chroots.py::TestNotifyOutdatedChroots::test_filter_chroots
ERROR tests/test_commands/test_notify_outdated_chroots.py::TestNotifyOutdatedChroots::test_filter_chroots
ERROR tests/test_commands/test_notify_outdated_chroots.py::TestNotifyOutdatedChroots::test_notify_outdated_chroots
ERROR tests/test_commands/test_notify_outdated_chroots.py::TestNotifyOutdatedChroots::test_notify_outdated_chroots
ERROR tests/test_commands/test_notify_outdated_chroots.py::TestNotifyOutdatedChroots::test_notify_outdated_chroots_email_filter
ERROR tests/test_commands/test_notify_outdated_chroots.py::TestNotifyOutdatedChroots::test_notify_outdated_chroots_email_filter
ERROR tests/test_commands/test_rawhide_to_release.py::TestRawhideToRelease::test_rawhide_to_release_action
ERROR tests/test_commands/test_rawhide_to_release.py::TestRawhideToRelease::test_rawhide_to_release_action
ERROR tests/test_commands/test_rawhide_to_release.py::TestBranchFedora::test_branch_fedora
ERROR tests/test_commands/test_rawhide_to_release.py::TestBranchFedora::test_branch_fedora
ERROR tests/test_logic/test_batch_logic.py::TestBatchesLogic::test_normal_batch_operation_failures
ERROR tests/test_logic/test_batch_logic.py::TestBatchesLogic::test_normal_batch_operation_failures
ERROR tests/test_logic/test_batch_logic.py::TestBatchesLogic::test_less_likely_batch_problems
ERROR tests/test_logic/test_batch_logic.py::TestBatchesLogic::test_less_likely_batch_problems
ERROR tests/test_logic/test_batch_logic.py::TestBatchesLogic::test_cant_group_others_build
ERROR tests/test_logic/test_batch_logic.py::TestBatchesLogic::test_cant_group_others_build
ERROR tests/test_logic/test_batch_logic.py::TestBatchesLogic::test_batched_build_queue_sql_performance
ERROR tests/test_logic/test_batch_logic.py::TestBatchesLogic::test_batched_build_queue_sql_performance
ERROR tests/test_logic/test_batch_logic.py::TestBatchesLogic::test_large_batch_build_queue
ERROR tests/test_logic/test_batch_logic.py::TestBatchesLogic::test_large_batch_build_queue
ERROR tests/test_logic/test_builds_logic.py::TestBuildsLogic::test_add_only_adds_active_chroots
ERROR tests/test_logic/test_builds_logic.py::TestBuildsLogic::test_add_only_adds_active_chroots
ERROR tests/test_logic/test_builds_logic.py::TestBuildsLogic::test_build_still_active_chroots
ERROR tests/test_logic/test_builds_logic.py::TestBuildsLogic::test_build_still_active_chroots
ERROR tests/test_logic/test_builds_logic.py::TestBuildsLogic::test_add_raises_if_copr_has_unfinished_actions
ERROR tests/test_logic/test_builds_logic.py::TestBuildsLogic::test_add_raises_if_copr_has_unfinished_actions
ERROR tests/test_logic/test_builds_logic.py::TestBuildsLogic::test_add_assigns_params_correctly
ERROR tests/test_logic/test_builds_logic.py::TestBuildsLogic::test_add_assigns_params_correctly
ERROR tests/test_logic/test_builds_logic.py::TestBuildsLogic::test_add_error_on_multiply_src
ERROR tests/test_logic/test_builds_logic.py::TestBuildsLogic::test_add_error_on_multiply_src
ERROR tests/test_logic/test_builds_logic.py::TestBuildsLogic::test_build_queue_1
ERROR tests/test_logic/test_builds_logic.py::TestBuildsLogic::test_build_queue_1
ERROR tests/test_logic/test_builds_logic.py::TestBuildsLogic::test_build_queue_2
ERROR tests/test_logic/test_builds_logic.py::TestBuildsLogic::test_build_queue_2
ERROR tests/test_logic/test_builds_logic.py::TestBuildsLogic::test_build_queue_3
ERROR tests/test_logic/test_builds_logic.py::TestBuildsLogic::test_build_queue_3
ERROR tests/test_logic/test_builds_logic.py::TestBuildsLogic::test_build_queue_4
ERROR tests/test_logic/test_builds_logic.py::TestBuildsLogic::test_build_queue_4
ERROR tests/test_logic/test_builds_logic.py::TestBuildsLogic::test_build_queue_5
ERROR tests/test_logic/test_builds_logic.py::TestBuildsLogic::test_build_queue_5
ERROR tests/test_logic/test_builds_logic.py::TestBuildsLogic::test_build_queue_6
ERROR tests/test_logic/test_builds_logic.py::TestBuildsLogic::test_build_queue_6
ERROR tests/test_logic/test_builds_logic.py::TestBuildsLogic::test_build_queue_7
ERROR tests/test_logic/test_builds_logic.py::TestBuildsLogic::test_build_queue_7
ERROR tests/test_logic/test_builds_logic.py::TestBuildsLogic::test_delete_build_exceptions
ERROR tests/test_logic/test_builds_logic.py::TestBuildsLogic::test_delete_build_exceptions
ERROR tests/test_logic/test_builds_logic.py::TestBuildsLogic::test_delete_build_as_admin
ERROR tests/test_logic/test_builds_logic.py::TestBuildsLogic::test_delete_build_as_admin
ERROR tests/test_logic/test_builds_logic.py::TestBuildsLogic::test_delete_build_no_resultdir
ERROR tests/test_logic/test_builds_logic.py::TestBuildsLogic::test_delete_build_no_resultdir
ERROR tests/test_logic/test_builds_logic.py::TestBuildsLogic::test_delete_mulitple_builds_no_resultdir
ERROR tests/test_logic/test_builds_logic.py::TestBuildsLogic::test_delete_mulitple_builds_no_resultdir
ERROR tests/test_logic/test_builds_logic.py::TestBuildsLogic::test_delete_build_basic
ERROR tests/test_logic/test_builds_logic.py::TestBuildsLogic::test_delete_build_basic
ERROR tests/test_logic/test_builds_logic.py::TestBuildsLogic::test_delete_multiple_builds
ERROR tests/test_logic/test_builds_logic.py::TestBuildsLogic::test_delete_multiple_builds
ERROR tests/test_logic/test_builds_logic.py::TestBuildsLogic::test_resubmit_build_inherit_git_hash
ERROR tests/test_logic/test_builds_logic.py::TestBuildsLogic::test_mark_as_failed
ERROR tests/test_logic/test_builds_logic.py::TestBuildsLogic::test_build_garbage_collector_works
ERROR tests/test_logic/test_builds_logic.py::TestBuildsLogic::test_build_garbage_collector_works
ERROR tests/test_logic/test_builds_logic.py::TestBuildsLogic::test_no_active_chroot
ERROR tests/test_logic/test_builds_logic.py::TestBuildsLogic::test_no_active_chroot
ERROR tests/test_logic/test_builds_logic.py::TestBuildsLogic::test_create_new_from_upload_no_space_left
ERROR tests/test_logic/test_builds_logic.py::TestBuildsLogic::test_create_new_from_upload_no_space_left
ERROR tests/test_logic/test_builds_logic.py::TestBuildsLogic::test_package_assigned_to_build_initially
ERROR tests/test_logic/test_builds_logic.py::TestBuildsLogic::test_package_assigned_to_build_initially
ERROR tests/test_logic/test_builds_logic.py::TestBuildsLogic::test_rebuild_all_packages
ERROR tests/test_logic/test_builds_logic.py::TestBuildsLogic::test_rebuild_all_packages
ERROR tests/test_logic/test_builds_logic.py::TestBuildsLogic::test_package_rebuild_permission_error
ERROR tests/test_logic/test_builds_logic.py::TestBuildsLogic::test_package_rebuild_permission_error
ERROR tests/test_logic/test_builds_logic.py::TestBuildsLogic::test_package_not_updated_after_source_ready
ERROR tests/test_logic/test_builds_logic.py::TestBuildsLogic::test_package_not_updated_after_source_ready
ERROR tests/test_logic/test_builds_logic.py::TestBuildsLogic::test_package_set_when_source_ready
ERROR tests/test_logic/test_builds_logic.py::TestBuildsLogic::test_package_set_when_source_ready
ERROR tests/test_logic/test_builds_logic.py::TestBuildsLogic::test_srpm_upload[100]
ERROR tests/test_logic/test_builds_logic.py::TestBuildsLogic::test_srpm_upload[100]
ERROR tests/test_logic/test_builds_logic.py::TestBuildsLogic::test_srpm_upload[1024]
ERROR tests/test_logic/test_builds_logic.py::TestBuildsLogic::test_srpm_upload[1024]
ERROR tests/test_logic/test_builds_logic.py::TestBuildsLogic::test_srpm_upload[102400]
ERROR tests/test_logic/test_builds_logic.py::TestBuildsLogic::test_srpm_upload[102400]
ERROR tests/test_logic/test_builds_logic.py::TestBuildsLogic::test_temporary_data_removed[False]
ERROR tests/test_logic/test_builds_logic.py::TestBuildsLogic::test_temporary_data_removed[False]
ERROR tests/test_logic/test_builds_logic.py::TestBuildsLogic::test_temporary_data_removed[True]
ERROR tests/test_logic/test_builds_logic.py::TestBuildsLogic::test_temporary_data_removed[True]
ERROR tests/test_logic/test_complex_logic.py::TestComplexLogic::test_fork_copr_sends_actions
ERROR tests/test_logic/test_complex_logic.py::TestComplexLogic::test_fork_copr_sends_actions
ERROR tests/test_logic/test_complex_logic.py::TestComplexLogic::test_fork_copr_projects_with_more_builds
ERROR tests/test_logic/test_complex_logic.py::TestComplexLogic::test_fork_copr_projects_with_more_builds
ERROR tests/test_logic/test_complex_logic.py::TestComplexLogic::test_fork_copr_with_eoled_chroots
ERROR tests/test_logic/test_complex_logic.py::TestComplexLogic::test_fork_copr_with_eoled_chroots
ERROR tests/test_logic/test_complex_logic.py::TestComplexLogic::test_delete_expired_coprs
ERROR tests/test_logic/test_complex_logic.py::TestComplexLogic::test_delete_expired_coprs
ERROR tests/test_logic/test_complex_logic.py::TestProjectForking::test_create_object
ERROR tests/test_logic/test_complex_logic.py::TestProjectForking::test_create_object
ERROR tests/test_logic/test_complex_logic.py::TestProjectForking::test_fork_build
ERROR tests/test_logic/test_complex_logic.py::TestProjectForking::test_fork_build
ERROR tests/test_logic/test_complex_logic.py::TestProjectForking::test_fork_check_assigned_copr_chroot
ERROR tests/test_logic/test_complex_logic.py::TestProjectForking::test_fork_check_assigned_copr_chroot
ERROR tests/test_logic/test_complex_logic.py::TestProjectForking::test_fork_package
ERROR tests/test_logic/test_complex_logic.py::TestProjectForking::test_fork_package
ERROR tests/test_logic/test_complex_logic.py::TestProjectForking::test_fork_copr
ERROR tests/test_logic/test_complex_logic.py::TestProjectForking::test_fork_copr
ERROR tests/test_logic/test_complex_logic.py::TestProjectForking::test_forking_into_existing_project
ERROR tests/test_logic/test_complex_logic.py::TestProjectForking::test_forking_into_existing_project
ERROR tests/test_logic/test_complex_logic.py::TestProjectForking::test_copr_by_repo_safe
ERROR tests/test_logic/test_complex_logic.py::TestProjectForking::test_copr_by_repo_safe
ERROR tests/test_logic/test_complex_logic.py::TestProjectForking::test_generate_build_config_with_dep_mistake
ERROR tests/test_logic/test_complex_logic.py::TestProjectForking::test_generate_build_config_with_dep_mistake
ERROR tests/test_logic/test_complex_logic.py::TestReposLogic::test_delete_reasons
ERROR tests/test_logic/test_complex_logic.py::TestReposLogic::test_delete_reasons
ERROR tests/test_logic/test_copr_dirs_logic.py::TestCoprDirsLogic::test_coprdir_cleanup_no_removal
ERROR tests/test_logic/test_copr_dirs_logic.py::TestCoprDirsLogic::test_coprdir_cleanup_no_removal
ERROR tests/test_logic/test_copr_dirs_logic.py::TestCoprDirsLogic::test_coprdir_cleanup_no_build
ERROR tests/test_logic/test_copr_dirs_logic.py::TestCoprDirsLogic::test_coprdir_cleanup_no_build
ERROR tests/test_logic/test_copr_dirs_logic.py::TestCoprDirsLogic::test_coprdir_cleanup_old_pr
ERROR tests/test_logic/test_copr_dirs_logic.py::TestCoprDirsLogic::test_coprdir_cleanup_old_pr
ERROR tests/test_logic/test_copr_dirs_logic.py::TestCoprDirsLogic::test_coprdir_cleanup_one_prs
ERROR tests/test_logic/test_copr_dirs_logic.py::TestCoprDirsLogic::test_coprdir_cleanup_one_prs
ERROR tests/test_logic/test_copr_dirs_logic.py::TestCoprDirsLogic::test_coprdir_build_normal_then_pr
ERROR tests/test_logic/test_copr_dirs_logic.py::TestCoprDirsLogic::test_coprdir_build_normal_then_pr
ERROR tests/test_logic/test_coprs_logic.py::TestCoprsLogic::test_legal_flag_doesnt_block_copr_functionality
ERROR tests/test_logic/test_coprs_logic.py::TestCoprsLogic::test_legal_flag_doesnt_block_copr_functionality
ERROR tests/test_logic/test_coprs_logic.py::TestCoprsLogic::test_fulltext_whooshee_return_all_hits
ERROR tests/test_logic/test_coprs_logic.py::TestCoprsLogic::test_fulltext_whooshee_return_all_hits
ERROR tests/test_logic/test_coprs_logic.py::TestCoprsLogic::test_raise_if_cant_delete
ERROR tests/test_logic/test_coprs_logic.py::TestCoprsLogic::test_raise_if_packit_forge_project_cant_build_in_copr
ERROR tests/test_logic/test_coprs_logic.py::TestCoprsLogic::test_copr_logic_add_sends_create_gpg_key_action
ERROR tests/test_logic/test_coprs_logic.py::TestCoprsLogic::test_copr_logic_add_sends_create_gpg_key_action
ERROR tests/test_logic/test_coprs_logic.py::TestCoprChrootsLogic::test_update_from_names
ERROR tests/test_logic/test_coprs_logic.py::TestCoprChrootsLogic::test_update_from_names
ERROR tests/test_logic/test_coprs_logic.py::TestCoprChrootsLogic::test_update_from_names_delete_after
ERROR tests/test_logic/test_coprs_logic.py::TestCoprChrootsLogic::test_update_from_names_delete_after
ERROR tests/test_logic/test_coprs_logic.py::TestCoprChrootsLogic::test_update_from_names_disabled
ERROR tests/test_logic/test_coprs_logic.py::TestCoprChrootsLogic::test_update_from_names_disabled
ERROR tests/test_logic/test_coprs_logic.py::TestCoprChrootsLogic::test_filter_outdated
ERROR tests/test_logic/test_coprs_logic.py::TestCoprChrootsLogic::test_filter_outdated
ERROR tests/test_logic/test_coprs_logic.py::TestCoprChrootsLogic::test_filter_outdated_to_be_deleted
ERROR tests/test_logic/test_coprs_logic.py::TestCoprChrootsLogic::test_filter_outdated_to_be_deleted
ERROR tests/test_logic/test_coprs_logic.py::TestCoprChrootsLogic::test_disabling_disallowed_when_build_runs
ERROR tests/test_logic/test_coprs_logic.py::TestCoprChrootsLogic::test_disabling_disallowed_when_build_runs
ERROR tests/test_logic/test_coprs_logic.py::TestCoprChrootsLogic::test_chroot_reenable
ERROR tests/test_logic/test_coprs_logic.py::TestCoprChrootsLogic::test_chroot_reenable
ERROR tests/test_logic/test_coprs_logic.py::TestCoprChrootsLogic::test_unclick_chroot_repeatedly
ERROR tests/test_logic/test_coprs_logic.py::TestCoprChrootsLogic::test_unclick_chroot_repeatedly
ERROR tests/test_logic/test_coprs_logic.py::TestPinnedCoprsLogic::test_pinned_projects
ERROR tests/test_logic/test_coprs_logic.py::TestPinnedCoprsLogic::test_pinned_projects
ERROR tests/test_logic/test_coprs_logic.py::TestPinnedCoprsLogic::test_delete_project_that_is_pinned
ERROR tests/test_logic/test_coprs_logic.py::TestPinnedCoprsLogic::test_delete_project_that_is_pinned
ERROR tests/test_logic/test_coprs_logic.py::TestCoprsLogicAdminFeatures::test_add
ERROR tests/test_logic/test_coprs_logic.py::TestCoprsLogicAdminFeatures::test_add
ERROR tests/test_logic/test_coprs_logic.py::TestCoprsLogicAdminFeatures::test_add_someone_else_project
ERROR tests/test_logic/test_coprs_logic.py::TestCoprsLogicAdminFeatures::test_add_someone_else_project
ERROR tests/test_logic/test_coprs_logic.py::TestCoprsLogicAdminFeatures::test_add_group_project
ERROR tests/test_logic/test_coprs_logic.py::TestCoprsLogicAdminFeatures::test_add_group_project
ERROR tests/test_logic/test_coprs_logic.py::TestChrootFormLogic::test_module_toggle_format
ERROR tests/test_logic/test_coprs_logic.py::TestCoprScoreLogic::test_score_math
ERROR tests/test_logic/test_coprs_logic.py::TestCoprScoreLogic::test_score_math
ERROR tests/test_logic/test_coprs_logic.py::TestCoprSearchLogic::test_search_by_attributes
ERROR tests/test_logic/test_coprs_logic.py::TestCoprSearchLogic::test_search_by_attributes
ERROR tests/test_logic/test_modules_logic.py::TestModulesLogic::test_state - ...
ERROR tests/test_logic/test_modules_logic.py::TestModulesLogic::test_state - ...
ERROR tests/test_logic/test_modules_logic.py::TestModulesLogic::test_get_by_nsv_str
ERROR tests/test_logic/test_modules_logic.py::TestModulesLogic::test_get_by_nsv_str
ERROR tests/test_logic/test_modules_logic.py::TestModulesLogic::test_yaml2modulemd
ERROR tests/test_logic/test_modules_logic.py::TestModulesLogic::test_from_modulemd
ERROR tests/test_logic/test_modules_logic.py::TestModuleBuildFacade::test_get_build_batches
ERROR tests/test_logic/test_modules_logic.py::TestModuleBuildFacade::test_buildorder_issue_599
ERROR tests/test_logic/test_modules_logic.py::TestModuleBuildFacade::test_add_builds_batches
ERROR tests/test_logic/test_modules_logic.py::TestModuleBuildFacade::test_add_builds_batches
ERROR tests/test_logic/test_modules_logic.py::TestModuleBuildFacade::test_platform_chroots
ERROR tests/test_logic/test_modules_logic.py::TestModuleBuildFacade::test_platform_chroots
ERROR tests/test_logic/test_modules_logic.py::TestModuleBuildFacade::test_distgit_option
ERROR tests/test_logic/test_modules_logic.py::TestModuleBuildFacade::test_distgit_option
ERROR tests/test_logic/test_modules_logic.py::TestModulemdGenerator::test_basic_mmd_attrs
ERROR tests/test_logic/test_modules_logic.py::TestModulemdGenerator::test_api
ERROR tests/test_logic/test_modules_logic.py::TestModulemdGenerator::test_filter
ERROR tests/test_logic/test_modules_logic.py::TestModulemdGenerator::test_profiles
ERROR tests/test_logic/test_modules_logic.py::TestModulemdGenerator::test_components
ERROR tests/test_logic/test_modules_logic.py::TestModulemdGenerator::test_components
ERROR tests/test_logic/test_modules_logic.py::TestModulemdGenerator::test_components_different_chroots
ERROR tests/test_logic/test_modules_logic.py::TestModulemdGenerator::test_components_different_chroots
ERROR tests/test_logic/test_modules_logic.py::TestModulemdGenerator::test_generate
ERROR tests/test_logic/test_outdated_chroots_logic.py::TestOutdatedChrootsLogic::test_delete_status_outdated
ERROR tests/test_logic/test_outdated_chroots_logic.py::TestOutdatedChrootsLogic::test_delete_status_outdated
ERROR tests/test_logic/test_outdated_chroots_logic.py::TestOutdatedChrootsLogic::test_delete_status_unclicked
ERROR tests/test_logic/test_outdated_chroots_logic.py::TestOutdatedChrootsLogic::test_delete_status_unclicked
ERROR tests/test_logic/test_outdated_chroots_logic.py::TestOutdatedChrootsLogic::test_outdated_chroots_simple
ERROR tests/test_logic/test_outdated_chroots_logic.py::TestOutdatedChrootsLogic::test_outdated_chroots_simple
ERROR tests/test_logic/test_outdated_chroots_logic.py::TestOutdatedChrootsLogic::test_outdated_chroots_group
ERROR tests/test_logic/test_outdated_chroots_logic.py::TestOutdatedChrootsLogic::test_outdated_chroots_group
ERROR tests/test_logic/test_outdated_chroots_logic.py::TestOutdatedChrootsLogic::test_outdated_chroots_flash_not_immediately
ERROR tests/test_logic/test_outdated_chroots_logic.py::TestOutdatedChrootsLogic::test_outdated_chroots_flash_not_immediately
ERROR tests/test_logic/test_outdated_chroots_logic.py::TestOutdatedChrootsLogic::test_outdated_chroots_flash_not_expired
ERROR tests/test_logic/test_outdated_chroots_logic.py::TestOutdatedChrootsLogic::test_outdated_chroots_flash_not_expired
ERROR tests/test_logic/test_outdated_chroots_logic.py::TestOutdatedChrootsLogic::test_outdated_chroots_review_only_after_some_time
ERROR tests/test_logic/test_outdated_chroots_logic.py::TestOutdatedChrootsLogic::test_outdated_chroots_review_only_after_some_time
ERROR tests/test_logic/test_outdated_chroots_logic.py::TestOutdatedChrootsLogic::test_outdated_chroots_extend_or_expire
ERROR tests/test_logic/test_outdated_chroots_logic.py::TestOutdatedChrootsLogic::test_outdated_chroots_extend_or_expire
ERROR tests/test_logic/test_outdated_chroots_logic.py::TestOutdatedChrootsLogic::test_outdated_chroots_humanized
ERROR tests/test_logic/test_outdated_chroots_logic.py::TestOutdatedChrootsLogic::test_outdated_chroots_humanized
ERROR tests/test_logic/test_outdated_chroots_logic.py::TestOutdatedChrootsLogic::test_outdated_chroots_expired
ERROR tests/test_logic/test_outdated_chroots_logic.py::TestOutdatedChrootsLogic::test_outdated_chroots_expired
ERROR tests/test_logic/test_outdated_chroots_logic.py::TestOutdatedChrootsLogic::test_expired_chroot_detection
ERROR tests/test_logic/test_outdated_chroots_logic.py::TestOutdatedChrootsLogic::test_expired_chroot_detection
ERROR tests/test_logic/test_outdated_chroots_logic.py::TestOutdatedChrootsLogic::test_delete_outdated_unclicked
ERROR tests/test_logic/test_outdated_chroots_logic.py::TestOutdatedChrootsLogic::test_delete_outdated_unclicked
ERROR tests/test_logic/test_outdated_chroots_logic.py::TestOutdatedChrootsLogic::test_outdated_unclicked_repeat
ERROR tests/test_logic/test_outdated_chroots_logic.py::TestOutdatedChrootsLogic::test_outdated_unclicked_repeat
ERROR tests/test_logic/test_packages_logic.py::TestPackagesLogic::test_last_successful_build_chroots
ERROR tests/test_logic/test_packages_logic.py::TestPackagesLogic::test_last_successful_build_chroots
ERROR tests/test_logic/test_packages_logic.py::TestPackagesLogic::test_ref_matches_copr_pkgname[copr-cli-1-1alpha-copr-cli-True]
ERROR tests/test_logic/test_packages_logic.py::TestPackagesLogic::test_ref_matches_copr_pkgname[copr-cli-1-copr-cli-True]
ERROR tests/test_logic/test_packages_logic.py::TestPackagesLogic::test_ref_matches_copr_pkgname[copr-cli-1-copr-False]
ERROR tests/test_logic/test_packages_logic.py::TestPackagesLogic::test_ref_matches_copr_pkgname[copr_cli-1.1-1-copr_cli-True]
ERROR tests/test_logic/test_packages_logic.py::TestPackagesLogic::test_ref_matches_copr_pkgname[copr_cli-1.1-copr_cli-True]
ERROR tests/test_logic/test_packages_logic.py::TestPackagesLogic::test_ref_matches_copr_pkgname[copr-frontend-a1-copr-False]
ERROR tests/test_logic/test_packages_logic.py::TestPackagesLogic::test_ref_matches_copr_pkgname[copr-frontend-a1-copr-frontend-True]
ERROR tests/test_logic/test_packages_logic.py::TestPackagesLogic::test_ref_matches_copr_pkgname[copr_frontend_a1-copr-frontend-True]
ERROR tests/test_logic/test_packages_logic.py::TestPackagesLogic::test_ref_matches_copr_pkgname[copr-frontend-a1-copr_frontend-True]
ERROR tests/test_logic/test_packages_logic.py::TestPackagesLogic::test_ref_matches_copr_pkgname[copr_frontend_a1-copr_frontend-True]
ERROR tests/test_logic/test_packages_logic.py::TestPackagesLogic::test_ref_matches_copr_pkgname[copr_frontend-a1-copr-frontend-False]
ERROR tests/test_logic/test_packages_logic.py::TestPackagesLogic::test_ref_matches_copr_pkgname[copr-1.1alpha-1-copr-True]
ERROR tests/test_logic/test_packages_logic.py::TestPackagesLogic::test_ref_matches_copr_pkgname[copr-1.1alpha-1beta-copr-True]
ERROR tests/test_logic/test_packages_logic.py::TestPackagesLogic::test_ref_matches_copr_pkgname[copr-1.1-1-copr-True]
ERROR tests/test_logic/test_packages_logic.py::TestPackagesLogic::test_ref_matches_copr_pkgname[copr-1-copr-True]
ERROR tests/test_logic/test_stat_logic.py::TestStatLogic::test_counter_basic
ERROR tests/test_logic/test_stat_logic.py::TestStatLogic::test_new_by_incr - ...
ERROR tests/test_logic/test_users_logic.py::TestUserDataDumper::test_user_information
ERROR tests/test_logic/test_users_logic.py::TestUserDataDumper::test_user_information
ERROR tests/test_logic/test_users_logic.py::TestUserDataDumper::test_projects
ERROR tests/test_logic/test_users_logic.py::TestUserDataDumper::test_projects
ERROR tests/test_logic/test_users_logic.py::TestUserDataDumper::test_builds
ERROR tests/test_logic/test_users_logic.py::TestUserDataDumper::test_builds
ERROR tests/test_logic/test_users_logic.py::TestUserDataDumper::test_data - s...
ERROR tests/test_logic/test_users_logic.py::TestUserDataDumper::test_data - A...
ERROR tests/test_logic/test_users_logic.py::TestUserDataDumper::test_dumps - ...
ERROR tests/test_logic/test_users_logic.py::TestUserDataDumper::test_dumps - ...
ERROR tests/test_logic/test_users_logic.py::TestUserDelete::test_delete_user_data
ERROR tests/test_logic/test_users_logic.py::TestUserDelete::test_delete_user_data
ERROR tests/test_logic/test_users_logic.py::TestUserDelete::test_delete_data_view
ERROR tests/test_logic/test_users_logic.py::TestUserDelete::test_delete_data_view
ERROR tests/test_views/test_misc.py::TestMisc::test_fed_raw_name - AttributeE...
ERROR tests/test_views/test_misc.py::TestMisc::test_fed_raw_name_scheme - Att...
ERROR tests/test_views/test_misc.py::TestMisc::test_fed_raw_name_without_oid_url
ERROR tests/test_views/test_admin/test_admin_general.py::TestAdminLogin::test_nonadmin_cant_login
ERROR tests/test_views/test_admin/test_admin_general.py::TestAdminLogin::test_nonadmin_cant_login
ERROR tests/test_views/test_admin/test_admin_general.py::TestAdminLogin::test_admin_can_login
ERROR tests/test_views/test_admin/test_admin_general.py::TestAdminLogin::test_admin_can_login
ERROR tests/test_views/test_backend_ns/test_backend_general.py::TestGetBuildTask::test_module_name_empty
ERROR tests/test_views/test_backend_ns/test_backend_general.py::TestGetBuildTask::test_module_name_empty
ERROR tests/test_views/test_backend_ns/test_backend_general.py::TestGetBuildTask::test_module_name_enable
ERROR tests/test_views/test_backend_ns/test_backend_general.py::TestGetBuildTask::test_module_name_enable
ERROR tests/test_views/test_backend_ns/test_backend_general.py::TestGetBuildTask::test_module_name_disable
ERROR tests/test_views/test_backend_ns/test_backend_general.py::TestGetBuildTask::test_module_name_disable
ERROR tests/test_views/test_backend_ns/test_backend_general.py::TestGetBuildTask::test_module_name_many_modules
ERROR tests/test_views/test_backend_ns/test_backend_general.py::TestGetBuildTask::test_module_name_many_modules
ERROR tests/test_views/test_backend_ns/test_backend_general.py::TestGetBuildTask::test_module_name_modules_with_spaces
ERROR tests/test_views/test_backend_ns/test_backend_general.py::TestGetBuildTask::test_module_name_modules_with_spaces
ERROR tests/test_views/test_backend_ns/test_backend_general.py::TestWaitingBuilds::test_no_pending_builds
ERROR tests/test_views/test_backend_ns/test_backend_general.py::TestWaitingBuilds::test_pending_build_only_lists_not_started_or_ended
ERROR tests/test_views/test_backend_ns/test_backend_general.py::TestWaitingBuilds::test_pending_build_only_lists_not_started_or_ended
ERROR tests/test_views/test_backend_ns/test_backend_general.py::TestWaitingBuilds::test_pending_bg_build
ERROR tests/test_views/test_backend_ns/test_backend_general.py::TestWaitingBuilds::test_pending_bg_build
ERROR tests/test_views/test_backend_ns/test_backend_general.py::TestWaitingBuilds::test_pending_blocked_builds
ERROR tests/test_views/test_backend_ns/test_backend_general.py::TestWaitingBuilds::test_pending_blocked_builds
ERROR tests/test_views/test_backend_ns/test_backend_general.py::TestWaitingBuilds::test_build_jobs_performance
ERROR tests/test_views/test_backend_ns/test_backend_general.py::TestWaitingBuilds::test_build_jobs_performance
ERROR tests/test_views/test_backend_ns/test_backend_general.py::TestUpdateBuilds::test_updating_requires_password
ERROR tests/test_views/test_backend_ns/test_backend_general.py::TestUpdateBuilds::test_updating_requires_password
ERROR tests/test_views/test_backend_ns/test_backend_general.py::TestUpdateBuilds::test_update_build_ended
ERROR tests/test_views/test_backend_ns/test_backend_general.py::TestUpdateBuilds::test_update_build_ended
ERROR tests/test_views/test_backend_ns/test_backend_general.py::TestUpdateBuilds::test_update_state_from_dict
ERROR tests/test_views/test_backend_ns/test_backend_general.py::TestUpdateBuilds::test_update_state_from_dict
ERROR tests/test_views/test_backend_ns/test_backend_general.py::TestUpdateBuilds::test_update_more_existent_and_non_existent_builds
ERROR tests/test_views/test_backend_ns/test_backend_general.py::TestUpdateBuilds::test_update_more_existent_and_non_existent_builds
ERROR tests/test_views/test_backend_ns/test_backend_general.py::TestUpdateBuilds::test_build_task_canceled_waiting_build
ERROR tests/test_views/test_backend_ns/test_backend_general.py::TestUpdateBuilds::test_build_task_canceled_waiting_build
ERROR tests/test_views/test_backend_ns/test_backend_general.py::TestUpdateBuilds::test_build_task_canceled_running_build
ERROR tests/test_views/test_backend_ns/test_backend_general.py::TestUpdateBuilds::test_build_task_canceled_running_build
ERROR tests/test_views/test_backend_ns/test_backend_general.py::TestUpdateBuilds::test_build_task_canceled_deleted_build
ERROR tests/test_views/test_backend_ns/test_backend_general.py::TestUpdateBuilds::test_build_task_canceled_deleted_build
ERROR tests/test_views/test_backend_ns/test_backend_general.py::TestWaitingActions::test_no_waiting_actions
ERROR tests/test_views/test_backend_ns/test_backend_general.py::TestWaitingActions::test_waiting_actions_only_lists_not_started_or_ended
ERROR tests/test_views/test_backend_ns/test_backend_general.py::TestWaitingActions::test_waiting_actions_only_lists_not_started_or_ended
ERROR tests/test_views/test_backend_ns/test_backend_general.py::TestWaitingActions::test_pending_actions_list
ERROR tests/test_views/test_backend_ns/test_backend_general.py::TestWaitingActions::test_pending_actions_list
ERROR tests/test_views/test_backend_ns/test_backend_general.py::TestWaitingActions::test_dont_send_pending_actions_whe_delete
ERROR tests/test_views/test_backend_ns/test_backend_general.py::TestWaitingActions::test_dont_send_pending_actions_whe_delete
ERROR tests/test_views/test_backend_ns/test_backend_general.py::TestWaitingActions::test_get_action_succeeded
ERROR tests/test_views/test_backend_ns/test_backend_general.py::TestWaitingActions::test_get_action_succeeded
ERROR tests/test_views/test_backend_ns/test_backend_general.py::TestUpdateActions::test_update_one_action
ERROR tests/test_views/test_backend_ns/test_backend_general.py::TestUpdateActions::test_update_one_action
ERROR tests/test_views/test_backend_ns/test_backend_general.py::TestUpdateActions::test_update_more_existent_and_non_existent_actions
ERROR tests/test_views/test_backend_ns/test_backend_general.py::TestUpdateActions::test_update_more_existent_and_non_existent_actions
ERROR tests/test_views/test_backend_ns/test_backend_general.py::TestImportingBuilds::test_bg_priority_in_queue
ERROR tests/test_views/test_backend_ns/test_backend_general.py::TestImportingBuilds::test_bg_priority_in_queue
ERROR tests/test_views/test_backend_ns/test_backend_general.py::TestImportingBuilds::test_importing_queue_multiple_bg
ERROR tests/test_views/test_backend_ns/test_backend_general.py::TestImportingBuilds::test_importing_queue_multiple_bg
ERROR tests/test_views/test_coprs_ns/test_coprs_builds.py::TestCoprShowBuilds::test_copr_show_builds
ERROR tests/test_views/test_coprs_ns/test_coprs_builds.py::TestCoprShowBuilds::test_copr_show_builds
ERROR tests/test_views/test_coprs_ns/test_coprs_builds.py::TestCoprAddBuild::test_copr_user_can_add_build
ERROR tests/test_views/test_coprs_ns/test_coprs_builds.py::TestCoprAddBuild::test_copr_user_can_add_build
ERROR tests/test_views/test_coprs_ns/test_coprs_builds.py::TestCoprAddBuild::test_copr_allowed_user_can_add_build
ERROR tests/test_views/test_coprs_ns/test_coprs_builds.py::TestCoprAddBuild::test_copr_allowed_user_can_add_build
ERROR tests/test_views/test_coprs_ns/test_coprs_builds.py::TestCoprAddBuild::test_copr_not_yet_allowed_user_cant_add_build
ERROR tests/test_views/test_coprs_ns/test_coprs_builds.py::TestCoprAddBuild::test_copr_not_yet_allowed_user_cant_add_build
ERROR tests/test_views/test_coprs_ns/test_coprs_builds.py::TestCoprAddBuild::test_copr_user_cant_add_build_to_admin_project
ERROR tests/test_views/test_coprs_ns/test_coprs_builds.py::TestCoprAddBuild::test_copr_user_cant_add_build_to_admin_project
ERROR tests/test_views/test_coprs_ns/test_coprs_builds.py::TestCoprAddBuild::test_copr_user_without_permission_cant_add_build
ERROR tests/test_views/test_coprs_ns/test_coprs_builds.py::TestCoprAddBuild::test_copr_user_without_permission_cant_add_build
ERROR tests/test_views/test_coprs_ns/test_coprs_builds.py::TestCoprAddBuild::test_copr_default_options
ERROR tests/test_views/test_coprs_ns/test_coprs_builds.py::TestCoprAddBuild::test_copr_default_options
ERROR tests/test_views/test_coprs_ns/test_coprs_builds.py::TestCoprCancelBuild::test_copr_build_submitter_can_cancel_build
ERROR tests/test_views/test_coprs_ns/test_coprs_builds.py::TestCoprCancelBuild::test_copr_build_submitter_can_cancel_build
ERROR tests/test_views/test_coprs_ns/test_coprs_builds.py::TestCoprCancelBuild::test_copr_build_non_submitter_cannot_cancel_build
ERROR tests/test_views/test_coprs_ns/test_coprs_builds.py::TestCoprCancelBuild::test_copr_build_non_submitter_cannot_cancel_build
ERROR tests/test_views/test_coprs_ns/test_coprs_builds.py::TestCoprDeleteBuild::test_copr_build_submitter_can_delete_build_old
ERROR tests/test_views/test_coprs_ns/test_coprs_builds.py::TestCoprDeleteBuild::test_copr_build_submitter_can_delete_build_old
ERROR tests/test_views/test_coprs_ns/test_coprs_builds.py::TestCoprDeleteBuild::test_copr_build_submitter_can_delete_build
ERROR tests/test_views/test_coprs_ns/test_coprs_builds.py::TestCoprDeleteBuild::test_copr_build_non_submitter_cannot_delete_build
ERROR tests/test_views/test_coprs_ns/test_coprs_builds.py::TestCoprDeleteBuild::test_copr_build_non_submitter_cannot_delete_build
ERROR tests/test_views/test_coprs_ns/test_coprs_builds.py::TestCoprDeleteBuild::test_copr_delete_multiple_builds_sends_single_action
ERROR tests/test_views/test_coprs_ns/test_coprs_builds.py::TestCoprDeleteBuild::test_copr_delete_package_sends_single_action
ERROR tests/test_views/test_coprs_ns/test_coprs_builds.py::TestCoprRepeatBuild::test_copr_build_basic_build_repeat
ERROR tests/test_views/test_coprs_ns/test_coprs_builds.py::TestCoprRepeatBuild::test_copr_build_basic_build_repeat
ERROR tests/test_views/test_coprs_ns/test_coprs_builds.py::TestCoprRepeatBuild::test_copr_build_submitter_can_repeat_build
ERROR tests/test_views/test_coprs_ns/test_coprs_builds.py::TestCoprRepeatBuild::test_copr_build_submitter_can_repeat_build
ERROR tests/test_views/test_coprs_ns/test_coprs_builds.py::TestCoprRepeatBuild::test_copr_build_non_submitter_cannot_repeat_build
ERROR tests/test_views/test_coprs_ns/test_coprs_builds.py::TestCoprRepeatBuild::test_copr_build_non_submitter_cannot_repeat_build
ERROR tests/test_views/test_coprs_ns/test_coprs_builds.py::TestCoprRepeatBuild::test_rebuild_srpm_upload_generates_chroots
ERROR tests/test_views/test_coprs_ns/test_coprs_builds.py::TestCoprRepeatBuild::test_rebuild_srpm_upload_generates_chroots
ERROR tests/test_views/test_coprs_ns/test_coprs_builds.py::TestCoprRepeatBuild::test_copr_build_package_urls
ERROR tests/test_views/test_coprs_ns/test_coprs_builds.py::TestCoprRepeatBuild::test_copr_build_package_urls
ERROR tests/test_views/test_coprs_ns/test_coprs_builds.py::TestCoprRepeatBuild::test_copr_repeat_build_available_chroots
ERROR tests/test_views/test_coprs_ns/test_coprs_builds.py::TestCoprRepeatBuild::test_copr_repeat_build_available_chroots
ERROR tests/test_views/test_coprs_ns/test_coprs_chroots.py::TestCoprsChroots::test_edit_own_copr_chroot
ERROR tests/test_views/test_coprs_ns/test_coprs_chroots.py::TestCoprsChroots::test_edit_own_copr_chroot
ERROR tests/test_views/test_coprs_ns/test_coprs_chroots.py::TestCoprsChroots::test_edit_someone_copr_chroot
ERROR tests/test_views/test_coprs_ns/test_coprs_chroots.py::TestCoprsChroots::test_edit_someone_copr_chroot
ERROR tests/test_views/test_coprs_ns/test_coprs_chroots.py::TestCoprsChroots::test_edit_someone_copr_chroot_being_admin
ERROR tests/test_views/test_coprs_ns/test_coprs_chroots.py::TestCoprsChroots::test_edit_someone_copr_chroot_being_admin
ERROR tests/test_views/test_coprs_ns/test_coprs_general.py::TestMonitor::test_regression_monitor_no_copr_returned
ERROR tests/test_views/test_coprs_ns/test_coprs_general.py::TestCoprsShow::test_show_no_entries
ERROR tests/test_views/test_coprs_ns/test_coprs_general.py::TestCoprsShow::test_show_more_entries
ERROR tests/test_views/test_coprs_ns/test_coprs_general.py::TestCoprsShow::test_show_more_entries
ERROR tests/test_views/test_coprs_ns/test_coprs_general.py::TestCoprsOwned::test_owned_none
ERROR tests/test_views/test_coprs_ns/test_coprs_general.py::TestCoprsOwned::test_owned_none
ERROR tests/test_views/test_coprs_ns/test_coprs_general.py::TestCoprsOwned::test_owned_one
ERROR tests/test_views/test_coprs_ns/test_coprs_general.py::TestCoprsOwned::test_owned_one
ERROR tests/test_views/test_coprs_ns/test_coprs_general.py::TestCoprNew::test_copr_new_normal
ERROR tests/test_views/test_coprs_ns/test_coprs_general.py::TestCoprNew::test_copr_new_normal
ERROR tests/test_views/test_coprs_ns/test_coprs_general.py::TestCoprNew::test_copr_new_ACR_OFF
ERROR tests/test_views/test_coprs_ns/test_coprs_general.py::TestCoprNew::test_copr_new_ACR_OFF
ERROR tests/test_views/test_coprs_ns/test_coprs_general.py::TestCoprNew::test_copr_new_exists_for_another_user
ERROR tests/test_views/test_coprs_ns/test_coprs_general.py::TestCoprNew::test_copr_new_exists_for_another_user
ERROR tests/test_views/test_coprs_ns/test_coprs_general.py::TestCoprNew::test_copr_new_exists_for_this_user
ERROR tests/test_views/test_coprs_ns/test_coprs_general.py::TestCoprNew::test_copr_new_exists_for_this_user
ERROR tests/test_views/test_coprs_ns/test_coprs_general.py::TestCoprNew::test_copr_new_with_initial_pkgs
ERROR tests/test_views/test_coprs_ns/test_coprs_general.py::TestCoprNew::test_copr_new_with_initial_pkgs
ERROR tests/test_views/test_coprs_ns/test_coprs_general.py::TestCoprNew::test_copr_new_with_initial_pkgs_disabled_net
ERROR tests/test_views/test_coprs_ns/test_coprs_general.py::TestCoprNew::test_copr_new_with_initial_pkgs_disabled_net
ERROR tests/test_views/test_coprs_ns/test_coprs_general.py::TestCoprNew::test_copr_new_is_allowed_even_if_deleted_has_same_name
ERROR tests/test_views/test_coprs_ns/test_coprs_general.py::TestCoprNew::test_copr_new_is_allowed_even_if_deleted_has_same_name
ERROR tests/test_views/test_coprs_ns/test_coprs_general.py::TestCoprNew::test_copr_new_contains_isolation
ERROR tests/test_views/test_coprs_ns/test_coprs_general.py::TestCoprNew::test_copr_new_contains_isolation
ERROR tests/test_views/test_coprs_ns/test_coprs_general.py::TestCoprDetail::test_copr_detail_not_found
ERROR tests/test_views/test_coprs_ns/test_coprs_general.py::TestCoprDetail::test_copr_detail_normal
ERROR tests/test_views/test_coprs_ns/test_coprs_general.py::TestCoprDetail::test_copr_detail_normal
ERROR tests/test_views/test_coprs_ns/test_coprs_general.py::TestCoprDetail::test_copr_detail_contains_builds
ERROR tests/test_views/test_coprs_ns/test_coprs_general.py::TestCoprDetail::test_copr_detail_contains_builds
ERROR tests/test_views/test_coprs_ns/test_coprs_general.py::TestCoprDetail::test_copr_detail_anonymous_doesnt_contain_permissions_table_when_no_permissions
ERROR tests/test_views/test_coprs_ns/test_coprs_general.py::TestCoprDetail::test_copr_detail_anonymous_doesnt_contain_permissions_table_when_no_permissions
ERROR tests/test_views/test_coprs_ns/test_coprs_general.py::TestCoprDetail::test_copr_detail_contains_permissions_table
ERROR tests/test_views/test_coprs_ns/test_coprs_general.py::TestCoprDetail::test_copr_detail_contains_permissions_table
ERROR tests/test_views/test_coprs_ns/test_coprs_general.py::TestCoprDetail::test_detail_has_correct_permissions_form
ERROR tests/test_views/test_coprs_ns/test_coprs_general.py::TestCoprDetail::test_detail_has_correct_permissions_form
ERROR tests/test_views/test_coprs_ns/test_coprs_general.py::TestCoprDetail::test_copr_detail_doesnt_show_cancel_build_for_anonymous
ERROR tests/test_views/test_coprs_ns/test_coprs_general.py::TestCoprDetail::test_copr_detail_doesnt_show_cancel_build_for_anonymous
ERROR tests/test_views/test_coprs_ns/test_coprs_general.py::TestCoprDetail::test_copr_detail_doesnt_allow_non_submitter_to_cancel_build
ERROR tests/test_views/test_coprs_ns/test_coprs_general.py::TestCoprDetail::test_copr_detail_doesnt_allow_non_submitter_to_cancel_build
ERROR tests/test_views/test_coprs_ns/test_coprs_general.py::TestCoprDetail::test_copr_detail_allows_submitter_to_cancel_build
ERROR tests/test_views/test_coprs_ns/test_coprs_general.py::TestCoprDetail::test_copr_detail_allows_submitter_to_cancel_build
ERROR tests/test_views/test_coprs_ns/test_coprs_general.py::TestCoprDetail::test_codeblock_html_in_project_description
ERROR tests/test_views/test_coprs_ns/test_coprs_general.py::TestCoprEdit::test_edit_prefills_id
ERROR tests/test_views/test_coprs_ns/test_coprs_general.py::TestCoprEdit::test_edit_prefills_id
ERROR tests/test_views/test_coprs_ns/test_coprs_general.py::TestCoprUpdate::test_update_no_changes
ERROR tests/test_views/test_coprs_ns/test_coprs_general.py::TestCoprUpdate::test_update_no_changes
ERROR tests/test_views/test_coprs_ns/test_coprs_general.py::TestCoprUpdate::test_copr_admin_can_update
ERROR tests/test_views/test_coprs_ns/test_coprs_general.py::TestCoprUpdate::test_copr_admin_can_update
ERROR tests/test_views/test_coprs_ns/test_coprs_general.py::TestCoprUpdate::test_update_multiple_chroots
ERROR tests/test_views/test_coprs_ns/test_coprs_general.py::TestCoprUpdate::test_update_multiple_chroots
ERROR tests/test_views/test_coprs_ns/test_coprs_general.py::TestCoprUpdate::test_update_deletes_multiple_chroots
ERROR tests/test_views/test_coprs_ns/test_coprs_general.py::TestCoprUpdate::test_update_deletes_multiple_chroots
ERROR tests/test_views/test_coprs_ns/test_coprs_general.py::TestCoprUpdate::test_changed_ACR_produces_action
ERROR tests/test_views/test_coprs_ns/test_coprs_general.py::TestCoprUpdate::test_changed_ACR_produces_action
ERROR tests/test_views/test_coprs_ns/test_coprs_general.py::TestCoprApplyForPermissions::test_apply
ERROR tests/test_views/test_coprs_ns/test_coprs_general.py::TestCoprApplyForPermissions::test_apply
ERROR tests/test_views/test_coprs_ns/test_coprs_general.py::TestCoprApplyForPermissions::test_apply_doesnt_lower_other_values_from_admin_to_request
ERROR tests/test_views/test_coprs_ns/test_coprs_general.py::TestCoprApplyForPermissions::test_apply_doesnt_lower_other_values_from_admin_to_request
ERROR tests/test_views/test_coprs_ns/test_coprs_general.py::TestCoprUpdatePermissions::test_cancel_permission
ERROR tests/test_views/test_coprs_ns/test_coprs_general.py::TestCoprUpdatePermissions::test_cancel_permission
ERROR tests/test_views/test_coprs_ns/test_coprs_general.py::TestCoprUpdatePermissions::test_update_more_permissions
ERROR tests/test_views/test_coprs_ns/test_coprs_general.py::TestCoprUpdatePermissions::test_update_more_permissions
ERROR tests/test_views/test_coprs_ns/test_coprs_general.py::TestCoprUpdatePermissions::test_copr_admin_can_update_permissions
ERROR tests/test_views/test_coprs_ns/test_coprs_general.py::TestCoprUpdatePermissions::test_copr_admin_can_update_permissions
ERROR tests/test_views/test_coprs_ns/test_coprs_general.py::TestCoprUpdatePermissions::test_copr_admin_can_give_up_his_permissions
ERROR tests/test_views/test_coprs_ns/test_coprs_general.py::TestCoprUpdatePermissions::test_copr_admin_can_give_up_his_permissions
ERROR tests/test_views/test_coprs_ns/test_coprs_general.py::TestCoprDelete::test_delete
ERROR tests/test_views/test_coprs_ns/test_coprs_general.py::TestCoprDelete::test_delete
ERROR tests/test_views/test_coprs_ns/test_coprs_general.py::TestCoprDelete::test_copr_delete_does_not_delete_if_verify_filled_wrongly
ERROR tests/test_views/test_coprs_ns/test_coprs_general.py::TestCoprDelete::test_copr_delete_does_not_delete_if_verify_filled_wrongly
ERROR tests/test_views/test_coprs_ns/test_coprs_general.py::TestCoprDelete::test_non_user_cant_delete
ERROR tests/test_views/test_coprs_ns/test_coprs_general.py::TestCoprDelete::test_non_user_cant_delete
ERROR tests/test_views/test_coprs_ns/test_coprs_general.py::TestCoprRepoGeneration::test_fail_on_nonexistent_copr
ERROR tests/test_views/test_coprs_ns/test_coprs_general.py::TestCoprRepoGeneration::test_works_on_older_builds
ERROR tests/test_views/test_coprs_ns/test_coprs_general.py::TestCoprRepoGeneration::test_works_on_older_builds
ERROR tests/test_views/test_coprs_ns/test_coprs_general.py::TestCoprRepoGeneration::test_repofile_multilib
ERROR tests/test_views/test_coprs_ns/test_coprs_general.py::TestCoprRepoGeneration::test_repofile_multilib
ERROR tests/test_views/test_coprs_ns/test_coprs_general.py::TestCoprRepoGeneration::test_repofile_copr_runtime_deps
ERROR tests/test_views/test_coprs_ns/test_coprs_general.py::TestCoprRepoGeneration::test_repofile_group_copr_runtime_deps
ERROR tests/test_views/test_coprs_ns/test_coprs_general.py::TestCoprRepoGeneration::test_repofile_transitive_runtime_deps
ERROR tests/test_views/test_coprs_ns/test_coprs_general.py::TestSearch::test_search_basic
ERROR tests/test_views/test_coprs_ns/test_coprs_general.py::TestSearch::test_search_basic
ERROR tests/test_views/test_coprs_ns/test_coprs_general.py::TestSearch::test_search_by_attributes
ERROR tests/test_views/test_coprs_ns/test_coprs_general.py::TestSearch::test_search_by_attributes
ERROR tests/test_views/test_coprs_ns/test_coprs_general.py::TestRepo::test_repo_renders_http
ERROR tests/test_views/test_coprs_ns/test_coprs_general.py::TestRepo::test_repo_renders_http
ERROR tests/test_views/test_coprs_ns/test_coprs_general.py::TestRepo::test_chroot_alias
ERROR tests/test_views/test_coprs_ns/test_coprs_general.py::TestRepo::test_chroot_alias
ERROR tests/test_views/test_coprs_ns/test_coprs_general.py::TestCoprActionsGeneration::test_createrepo_priority
ERROR tests/test_views/test_coprs_ns/test_coprs_general.py::TestCoprActionsGeneration::test_createrepo_priority
ERROR tests/test_views/test_coprs_ns/test_coprs_general.py::TestCoprActionsGeneration::test_createrepo_on_reenable
ERROR tests/test_views/test_coprs_ns/test_coprs_general.py::TestCoprActionsGeneration::test_createrepo_on_reenable
ERROR tests/test_views/test_coprs_ns/test_coprs_general.py::TestCoprActionsGeneration::test_fedora_review_project
ERROR tests/test_views/test_coprs_ns/test_coprs_general.py::TestCoprActionsGeneration::test_fedora_review_project
ERROR tests/test_views/test_coprs_ns/test_method_distgit.py::TestDistGitMethod::test_copr_user_can_add_distgit_build
ERROR tests/test_views/test_coprs_ns/test_method_distgit.py::TestDistGitMethod::test_copr_user_can_add_distgit_build
ERROR tests/test_views/test_coprs_ns/test_method_distgit.py::TestDistGitMethod::test_copr_user_can_add_distgit_package
ERROR tests/test_views/test_coprs_ns/test_method_distgit.py::TestDistGitMethod::test_copr_user_can_add_distgit_package
ERROR tests/test_views/test_groups_ns/test_groups_general.py::TestGroups::test_group_add
ERROR tests/test_views/test_groups_ns/test_groups_general.py::TestGroups::test_group_add
ERROR tests/test_views/test_groups_ns/test_groups_general.py::TestGroups::test_group_add_twice
ERROR tests/test_views/test_groups_ns/test_groups_general.py::TestGroups::test_group_add_twice
ERROR tests/test_views/test_groups_ns/test_groups_general.py::TestGroups::test_group_add_alias_with_space
ERROR tests/test_views/test_groups_ns/test_groups_general.py::TestGroups::test_group_add_alias_with_space
ERROR tests/test_views/test_groups_ns/test_groups_general.py::TestGroups::test_group_add_not_in_fas_group
ERROR tests/test_views/test_groups_ns/test_groups_general.py::TestGroups::test_group_add_not_in_fas_group
===== 26 failed, 69 passed, 208 warnings, 861 errors in 361.62s (0:06:01) ======
+ cleanup
+ redis-cli -p 7777 shutdown
+ wait
RPM build errors:
error: Bad exit status from /var/tmp/rpm-tmp.nph7dX (%check)
    Bad exit status from /var/tmp/rpm-tmp.nph7dX (%check)
Child return code was: 1
EXCEPTION: [Error('Command failed: \n # /usr/bin/systemd-nspawn -q -M 6c30a805385c4e6691c3c66242c0423e -D /var/lib/mock/f41-build-49469772-5882760/root -a -u mockbuild --capability=cap_ipc_lock --bind=/tmp/mock-resolv.duyh4tau:/etc/resolv.conf --bind=/dev/btrfs-control --bind=/dev/mapper/control --bind=/dev/fuse --bind=/dev/loop-control --bind=/dev/loop0 --bind=/dev/loop1 --bind=/dev/loop2 --bind=/dev/loop3 --bind=/dev/loop4 --bind=/dev/loop5 --bind=/dev/loop6 --bind=/dev/loop7 --bind=/dev/loop8 --bind=/dev/loop9 --bind=/dev/loop10 --bind=/dev/loop11 --console=pipe --setenv=TERM=vt100 --setenv=SHELL=/bin/bash --setenv=HOME=/builddir --setenv=HOSTNAME=mock --setenv=PATH=/usr/bin:/bin:/usr/sbin:/sbin \'--setenv=PROMPT_COMMAND=printf "\\033]0;<mock-chroot>\\007"\' \'--setenv=PS1=<mock-chroot> \\s-\\v\\$ \' --setenv=LANG=C.UTF-8 --resolv-conf=off bash --login -c \'/usr/bin/rpmbuild -bb --noclean --target noarch --nodeps /builddir/build/SPECS/copr-frontend.spec\'\n', 1)]
Traceback (most recent call last):
  File "/usr/lib/python3.12/site-packages/mockbuild/trace_decorator.py", line 93, in trace
    result = func(*args, **kw)
             ^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.12/site-packages/mockbuild/util.py", line 612, in do_with_status
    raise exception.Error("Command failed: \n # %s\n%s" % (cmd_pretty(command, env), output), child.returncode)
mockbuild.exception.Error: Command failed: 
 # /usr/bin/systemd-nspawn -q -M 6c30a805385c4e6691c3c66242c0423e -D /var/lib/mock/f41-build-49469772-5882760/root -a -u mockbuild --capability=cap_ipc_lock --bind=/tmp/mock-resolv.duyh4tau:/etc/resolv.conf --bind=/dev/btrfs-control --bind=/dev/mapper/control --bind=/dev/fuse --bind=/dev/loop-control --bind=/dev/loop0 --bind=/dev/loop1 --bind=/dev/loop2 --bind=/dev/loop3 --bind=/dev/loop4 --bind=/dev/loop5 --bind=/dev/loop6 --bind=/dev/loop7 --bind=/dev/loop8 --bind=/dev/loop9 --bind=/dev/loop10 --bind=/dev/loop11 --console=pipe --setenv=TERM=vt100 --setenv=SHELL=/bin/bash --setenv=HOME=/builddir --setenv=HOSTNAME=mock --setenv=PATH=/usr/bin:/bin:/usr/sbin:/sbin '--setenv=PROMPT_COMMAND=printf "\033]0;<mock-chroot>\007"' '--setenv=PS1=<mock-chroot> \s-\v\$ ' --setenv=LANG=C.UTF-8 --resolv-conf=off bash --login -c '/usr/bin/rpmbuild -bb --noclean --target noarch --nodeps /builddir/build/SPECS/copr-frontend.spec'



Extracted relevant lines:
test_helpers.py::TestHelpers::test_being_server_admin - Attribute...
ERROR tests/test_logging.py::TestLoggingRequestUser::test_anon - sqlalchemy.e...
ERROR tests/test_logging.py::TestLoggingRequestUser::test_anon - AttributeErr...
ERROR tests/test_logging.py::TestLoggingRequestUser::test_server - sqlalchemy...
ERROR tests/test_logging.py::TestLoggingRequestUser::test_server - AttributeE...
ERROR tests/test_logging.py::TestLoggingRequestUser::test_user - sqlalchemy.e...
ERROR tests/test_logging.py::TestLoggingRequestUser::test_user - AttributeErr...
ERROR tests/test_logging.py::TestLoggingUsersLogic::test_user_get - sqlalchem...
ERROR tests/test_logging.py::TestLoggingUsersLogic::test_user_get - Attribute...
ERROR tests/test_logging.py::TestLoggingUsersLogic::test_delete_user_data - s...
ERROR tests/test_logging.py::TestLoggingUsersLogic::test_delete_user_data - A...
ERROR tests/test_logging.py::TestLoggingUsersLogic::test_user_data_dumper - s...
ERROR tests/test_logging.py::TestLoggingUsersLogic::test_user_data_dumper - A...
ERROR tests/test_logging.py::TestLoggingAuth::test_create_or_login - sqlalche...
ERROR tests/test_logging.py::TestLoggingAuth::test_create_or_login - Attribut...
ERROR tests/test_logging.py::TestLoggingAuth::test_logout - sqlalchemy.exc.In...
ERROR tests/test_logging.py::TestLoggingAuth::test_logout - AttributeError: '...
ERROR tests/test_mail.py::TestMail::test_permissions_request_message - sqlalc...
ERROR tests/test_mail.py::TestMail::test_permissions_request_message - Attrib...
ERROR tests/test_mail.py::TestMail::test_permissions_change_message - sqlalch...
ERROR tests/test_mail.py::TestMail::test_permissions_change_message - Attribu...
ERROR tests/test_mail.py::TestMail::test_legal_flag_message - sqlalchemy.exc....
ERROR tests/test_mail.py::TestMail::test_legal_flag_message - AttributeError:...
ERROR tests/test_mail.py::TestMail::test_outdated_chroot_message - sqlalchemy...
ERROR tests/test_mail.py::TestMail::test_outdated_chroot_message - AttributeE...
ERROR tests/test_mail.py::TestMail::test_filter_recipients - AttributeError: ...
ERROR tests/test_models.py::TestBuildModel::test_get_chroots_by_status - sqla...
ERROR tests/test_models.py::TestBuildModel::test_get_chroots_by_status - Attr...
ERROR tests/test_models.py::TestBuildModel::test_chroot_denylist - sqlalchemy...
ERROR tests/test_models.py::TestBuildModel::test_chroot_denylist - AttributeE...
ERROR tests/test_models.py::TestBuildModel::test_chroot_denylist_all - sqlalc...
ERROR tests/test_models.py::TestBuildModel::test_chroot_denylist_all - Attrib...
ERROR tests/test_models.py::TestBuildModel::test_finished - sqlalchemy.exc.In...
ERROR tests/test_models.py::TestBuildModel::test_finished - AttributeError: '...
ERROR tests/test_models.py::TestBuildModel::test_finished_srpms - sqlalchemy....
ERROR tests/test_models.py::TestBuildModel::test_finished_srpms - AttributeEr...
ERROR tests/test_models.py::TestBuildModel::test_canceled - sqlalchemy.exc.In...
ERROR tests/test_models.py::TestBuildModel::test_canceled - AttributeError: '...
ERROR tests/test_models.py::TestBuildModel::test_build_logs - sqlalchemy.exc....
ERROR tests/test_models.py::TestBuildModel::test_build_logs - AttributeError:...
ERROR tests/test_models.py::TestBuildModel::test_buildchroot_logs - sqlalchem...
ERROR tests/test_models.py::TestBuildModel::test_buildchroot_logs - Attribute...
ERROR tests/test_models.py::TestBuildModel::test_source_state_translation - A...
ERROR tests/test_models.py::TestCoprModel::test_permissible_chroots - sqlalch...
ERROR tests/test_models.py::TestCoprModel::test_permissible_chroots - Attribu...
ERROR tests/test_webhooks.py::TestCustomWebhook::test_package_not_found - sql...
ERROR tests/test_webhooks.py::TestCustomWebhook::test_package_not_found - Att...
ERROR tests/test_webhooks.py::TestCustomWebhook::test_hook_data_stored - sqla...
ERROR tests/test_webhooks.py::TestCustomWebhook::test_hook_data_stored - Attr...
ERROR tests/test_webhooks.py::TestCustomWebhook::test_bad_uuid - sqlalchemy.e...
ERROR tests/test_webhooks.py::TestCustomWebhook::test_bad_uuid - AttributeErr...
ERROR tests/test_webhooks.py::TestGithubWebhook::test_package_bad_request - s...
ERROR tests/test_webhooks.py::TestGithubWebhook::test_package_bad_request - A...
ERROR tests/test_webhooks.py::TestGithubWebhook::test_hook_data_stored - sqla...
ERROR tests/test_webhooks.py::TestGithubWebhook::test_hook_data_stored - Attr...
ERROR tests/test_webhooks.py::TestGithubWebhook::test_bad_uuid - sqlalchemy.e...
ERROR tests/test_webhooks.py::TestGithubWebhook::test_bad_uuid - AttributeErr...
ERROR tests/test_webhooks.py::TestGitlabWebhook::test_package_bad_request - s...
ERROR tests/test_webhooks.py::TestGitlabWebhook::test_package_bad_request - A...
ERROR tests/test_webhooks.py::TestGitlabWebhook::test_hook_data_stored - sqla...
ERROR tests/test_webhooks.py::TestGitlabWebhook::test_hook_data_stored - Attr...
ERROR tests/test_webhooks.py::TestGitlabWebhook::test_bad_uuid - sqlalchemy.e...
ERROR tests/test_webhooks.py::TestGitlabWebhook::test_bad_uuid - AttributeErr...
ERROR tests/test_webhooks.py::TestBitbucketWebhook::test_hook_data_stored - s...
ERROR tests/test_webhooks.py::TestBitbucketWebhook::test_hook_data_stored - A...
ERROR tests/test_webhooks.py::TestBitbucketWebhook::test_bad_uuid - sqlalchem...
ERROR tests/test_webhooks.py::TestBitbucketWebhook::test_bad_uuid - Attribute...
ERROR tests/test_views/test_coprs_ns/test_coprs_general.py::TestCoprDetail::test_copr_detail_anonymous_doesnt_contain_permissions_table_when_no_permissions
ERROR tests/test_views/test_coprs_ns/test_coprs_general.py::TestCoprDetail::test_copr_detail_anonymous_doesnt_contain_permissions_table_when_no_permissions
EXCEPTION: [Error('Command failed: 
 # /usr/bin/systemd-nspawn -q -M 6c30a805385c4e6691c3c66242c0423e -D /var/lib/mock/f41-build-49469772-5882760/root -a -u mockbuild --capability=cap_ipc_lock --bind=/tmp/mock-resolv.duyh4tau:/etc/resolv.conf --bind=/dev/btrfs-control --bind=/dev/mapper/control --bind=/dev/fuse --bind=/dev/loop-control --bind=/dev/loop0 --bind=/dev/loop1 --bind=/dev/loop2 --bind=/dev/loop3 --bind=/dev/loop4 --bind=/dev/loop5 --bind=/dev/loop6 --bind=/dev/loop7 --bind=/dev/loop8 --bind=/dev/loop9 --bind=/dev/loop10 --bind=/dev/loop11 --console=pipe --setenv=TERM=vt100 --setenv=SHELL=/bin/bash --setenv=HOME=/builddir --setenv=HOSTNAME=mock --setenv=PATH=/usr/bin:/bin:/usr/sbin:/sbin \'--setenv=PROMPT_COMMAND=printf "\\033]0;<mock-chroot>\\007"\' \'--setenv=PS1=<mock-chroot> \\s-\\v\\$ \' --setenv=LANG=C.UTF-8 --resolv-conf=off bash --login -c \'/usr/bin/rpmbuild -bb --noclean --target noarch --nodeps /builddir/build/SPECS/copr-frontend.spec\'
', 1)]
Traceback (most recent call last):
  File "/usr/lib/python3.12/site-packages/mockbuild/trace_decorator.py", line 93, in trace
  File "/usr/lib/python3.12/site-packages/mockbuild/util.py", line 612, in do_with_status
    raise exception.Error("Command failed: 
 # %s
%s" % (cmd_pretty(command, env), output), child.returncode)
mockbuild.exception.Error: Command failed: 
 # /usr/bin/systemd-nspawn -q -M 6c30a805385c4e6691c3c66242c0423e -D /var/lib/mock/f41-build-49469772-5882760/root -a -u mockbuild --capability=cap_ipc_lock --bind=/tmp/mock-resolv.duyh4tau:/etc/resolv.conf --bind=/dev/btrfs-control --bind=/dev/mapper/control --bind=/dev/fuse --bind=/dev/loop-control --bind=/dev/loop0 --bind=/dev/loop1 --bind=/dev/loop2 --bind=/dev/loop3 --bind=/dev/loop4 --bind=/dev/loop5 --bind=/dev/loop6 --bind=/dev/loop7 --bind=/dev/loop8 --bind=/dev/loop9 --bind=/dev/loop10 --bind=/dev/loop11 --console=pipe --setenv=TERM=vt100 --setenv=SHELL=/bin/bash --setenv=HOME=/builddir --setenv=HOSTNAME=mock --setenv=PATH=/usr/bin:/bin:/usr/sbin:/sbin '--setenv=PROMPT_COMMAND=printf "\033]0;<mock-chroot>\007"' '--setenv=PS1=<mock-chroot> \s-\v\$ ' --setenv=LANG=C.UTF-8 --resolv-conf=off bash --login -c '/usr/bin/rpmbuild -bb --noclean --target noarch --nodeps /builddir/build/SPECS/copr-frontend.spec'