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/f40-build-49469776-5882459/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 0xffffb1d19790>timeout=201600uid=1000gid=425user='mockbuild'nspawn_args=['--capability=cap_ipc_lock', '--rlimit=RLIMIT_CORE=infinity', '--bind=/tmp/mock-resolv.fvzq9wmv:/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', '--rlimit=RLIMIT_CORE=infinity', '--bind=/tmp/mock-resolv.fvzq9wmv:/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', '2d186f8eca024a58865c0ade42ec59c9', '-D', '/var/lib/mock/f40-build-49469776-5882459/root', '-a', '-u', 'mockbuild', '--capability=cap_ipc_lock', '--rlimit=RLIMIT_CORE=infinity', '--bind=/tmp/mock-resolv.fvzq9wmv:/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.fc40.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/f40-build-49469776-5882459/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 0xffffb1d19790>timeout=201600uid=1000gid=425user='mockbuild'nspawn_args=['--capability=cap_ipc_lock', '--rlimit=RLIMIT_CORE=infinity', '--bind=/tmp/mock-resolv.fvzq9wmv:/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', '--rlimit=RLIMIT_CORE=infinity', '--bind=/tmp/mock-resolv.fvzq9wmv:/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', '8381192030a0479ab85fc7a3a9cdaaf1', '-D', '/var/lib/mock/f40-build-49469776-5882459/root', '-a', '-u', 'mockbuild', '--capability=cap_ipc_lock', '--rlimit=RLIMIT_CORE=infinity', '--bind=/tmp/mock-resolv.fvzq9wmv:/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.2QWVf8
+ 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.QaLOL7
+ 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  -mbranch-protection=standard -fasynchronous-unwind-tables -fstack-clash-protection -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer '
+ 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  -mbranch-protection=standard -fasynchronous-unwind-tables -fstack-clash-protection -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer '
+ 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  -mbranch-protection=standard -fasynchronous-unwind-tables -fstack-clash-protection -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer -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  -mbranch-protection=standard -fasynchronous-unwind-tables -fstack-clash-protection -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer -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.xoiaXe
+ umask 022
+ cd /builddir/build/BUILD
+ '[' /builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch '!=' / ']'
+ rm -rf /builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch
++ dirname /builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch
+ mkdir -p /builddir/build/BUILDROOT
+ mkdir /builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.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  -mbranch-protection=standard -fasynchronous-unwind-tables -fstack-clash-protection -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer '
+ 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  -mbranch-protection=standard -fasynchronous-unwind-tables -fstack-clash-protection -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer '
+ 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  -mbranch-protection=standard -fasynchronous-unwind-tables -fstack-clash-protection -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer -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  -mbranch-protection=standard -fasynchronous-unwind-tables -fstack-clash-protection -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer -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.fc40.noarch/etc/copr
+ install -d /builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend
+ install -d /builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/var/lib/copr/data/openid_store
+ install -d /builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/var/lib/copr/data/openid_store/associations
+ install -d /builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/var/lib/copr/data/openid_store/nonces
+ install -d /builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/var/lib/copr/data/openid_store/temp
+ install -d /builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/var/lib/copr/data/whooshee
+ install -d /builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/var/lib/copr/data/whooshee/copr_user_whoosheer
+ install -d /builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/var/lib/copr/data/srpm_storage
+ install -d /builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/etc/cron.hourly
+ install -d /builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/etc/cron.daily
+ install -d /builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch//usr/bin
+ install -d /builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/lib/systemd/system
+ install -d /builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.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.fc40.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.fc40.noarch/etc/cron.daily
+ install -p -m 755 coprs_frontend/run/copr_dump_db.sh /builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.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.fc40.noarch/usr/share/copr/coprs_frontend
+ rm -rf /builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/tests
+ sed -i s/__RPM_BUILD_VERSION/1.204-1.fc40/ /builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/coprs/templates/layout.html
+ mv /builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/coprs.conf.example ./
+ mv /builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/config/chroots.conf /builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/config/copr.conf /builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/config/copr_devel.conf /builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/config/copr_unit_test.conf /builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/etc/copr
+ rm /builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/CONTRIBUTION_GUIDELINES
+ touch /builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/var/lib/copr/data/copr.db
+ install -d /builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/var/log/copr-frontend
+ install -d /builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/etc/logrotate.d
+ cp -a conf/logrotate /builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/etc/logrotate.d/copr-frontend
+ touch /builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/var/log/copr-frontend/frontend.log
+ ln -fs /usr/share/copr/coprs_frontend/manage.py /builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch//usr/bin/copr-frontend
++ dirname /usr/share/copr/copr-flavor-filelist
+ mkdir -p /builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch//usr/share/copr
+ cat
+ mkdir -p /builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/lib/rpm/macros.d
+ cat
+ [[ /usr/bin/python3 =~  - ]]
+ clamp_source_mtime /usr/bin/python3 /builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/coprs
+ python_binary='env /usr/bin/python3'
+ bytecode_compilation_path=/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.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.fc40.noarch/usr/share/copr/coprs_frontend/coprs
Listing '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/coprs'...
Clamping mtime of '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/coprs/__init__.py'
Clamping mtime of '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/coprs/auth.py'
Clamping mtime of '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/coprs/config.py'
Clamping mtime of '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/coprs/constants.py'
Clamping mtime of '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/coprs/context_processors.py'
Clamping mtime of '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/coprs/error_handlers.py'
Clamping mtime of '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/coprs/exceptions.py'
Clamping mtime of '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/coprs/filters.py'
Clamping mtime of '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/coprs/forms.py'
Clamping mtime of '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/coprs/helpers.py'
Clamping mtime of '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/coprs/log.py'
Listing '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/coprs/logic'...
Clamping mtime of '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/coprs/logic/__init__.py'
Clamping mtime of '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/coprs/logic/actions_logic.py'
Clamping mtime of '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/coprs/logic/api_logic.py'
Clamping mtime of '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/coprs/logic/backend_logic.py'
Clamping mtime of '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/coprs/logic/batches_logic.py'
Clamping mtime of '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/coprs/logic/builds_logic.py'
Clamping mtime of '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/coprs/logic/complex_logic.py'
Clamping mtime of '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/coprs/logic/coprs_logic.py'
Clamping mtime of '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/coprs/logic/dist_git_logic.py'
Clamping mtime of '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/coprs/logic/helpers.py'
Clamping mtime of '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/coprs/logic/modules_logic.py'
Clamping mtime of '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/coprs/logic/outdated_chroots_logic.py'
Clamping mtime of '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/coprs/logic/packages_logic.py'
Clamping mtime of '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/coprs/logic/stat_logic.py'
Clamping mtime of '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/coprs/logic/users_logic.py'
Clamping mtime of '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/coprs/mail.py'
Clamping mtime of '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/coprs/measure.py'
Clamping mtime of '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/coprs/models.py'
Clamping mtime of '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/coprs/oidc.py'
Clamping mtime of '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/coprs/redis_session.py'
Clamping mtime of '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/coprs/request.py'
Listing '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/coprs/static'...
Listing '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/coprs/static/chroot_logodir'...
Listing '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/coprs/static/components'...
Listing '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/coprs/static/components/c3'...
Listing '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/coprs/static/components/c3/extensions'...
Listing '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/coprs/static/components/c3/extensions/exporter'...
Listing '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/coprs/static/components/c3/extensions/js'...
Listing '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/coprs/static/components/d3'...
Listing '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/coprs/static/css'...
Listing '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/coprs/static/fonts'...
Listing '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/coprs/static/img'...
Listing '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/coprs/static/js'...
Listing '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/coprs/static/status_images'...
Listing '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/coprs/templates'...
Listing '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/coprs/templates/admin'...
Listing '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/coprs/templates/batches'...
Listing '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/coprs/templates/coprs'...
Listing '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/coprs/templates/coprs/detail'...
Listing '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/coprs/templates/coprs/detail/add_build'...
Listing '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/coprs/templates/coprs/detail/monitor'...
Listing '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/coprs/templates/coprs/detail/settings'...
Listing '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/coprs/templates/coprs/show'...
Listing '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/coprs/templates/groups'...
Listing '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/coprs/templates/recent'...
Listing '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/coprs/templates/rss'...
Listing '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/coprs/templates/status'...
Listing '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/coprs/views'...
Clamping mtime of '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/coprs/views/__init__.py'
Listing '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/coprs/views/admin_ns'...
Clamping mtime of '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/coprs/views/admin_ns/__init__.py'
Clamping mtime of '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/coprs/views/admin_ns/admin_general.py'
Listing '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/coprs/views/api_ns'...
Clamping mtime of '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/coprs/views/api_ns/__init__.py'
Clamping mtime of '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/coprs/views/api_ns/api_general.py'
Listing '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/coprs/views/apiv3_ns'...
Clamping mtime of '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/coprs/views/apiv3_ns/__init__.py'
Clamping mtime of '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.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.fc40.noarch/usr/share/copr/coprs_frontend/coprs/views/apiv3_ns/apiv3_builds.py'
Clamping mtime of '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/coprs/views/apiv3_ns/apiv3_general.py'
Clamping mtime of '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.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.fc40.noarch/usr/share/copr/coprs_frontend/coprs/views/apiv3_ns/apiv3_modules.py'
Clamping mtime of '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/coprs/views/apiv3_ns/apiv3_monitor.py'
Clamping mtime of '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/coprs/views/apiv3_ns/apiv3_packages.py'
Clamping mtime of '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/coprs/views/apiv3_ns/apiv3_permissions.py'
Clamping mtime of '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.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.fc40.noarch/usr/share/copr/coprs_frontend/coprs/views/apiv3_ns/apiv3_projects.py'
Clamping mtime of '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/coprs/views/apiv3_ns/apiv3_rpmrepo.py'
Clamping mtime of '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/coprs/views/apiv3_ns/apiv3_webhooks.py'
Clamping mtime of '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/coprs/views/apiv3_ns/json2form.py'
Listing '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/coprs/views/apiv3_ns/schema'...
Clamping mtime of '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/coprs/views/apiv3_ns/schema/__init__.py'
Clamping mtime of '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/coprs/views/apiv3_ns/schema/docs.py'
Clamping mtime of '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/coprs/views/apiv3_ns/schema/fields.py'
Clamping mtime of '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/coprs/views/apiv3_ns/schema/schemas.py'
Listing '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/coprs/views/backend_ns'...
Clamping mtime of '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/coprs/views/backend_ns/__init__.py'
Clamping mtime of '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/coprs/views/backend_ns/backend_general.py'
Listing '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/coprs/views/batches_ns'...
Clamping mtime of '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/coprs/views/batches_ns/__init__.py'
Clamping mtime of '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/coprs/views/batches_ns/coprs_batches.py'
Listing '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/coprs/views/coprs_ns'...
Clamping mtime of '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/coprs/views/coprs_ns/__init__.py'
Clamping mtime of '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/coprs/views/coprs_ns/coprs_builds.py'
Clamping mtime of '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/coprs/views/coprs_ns/coprs_chroots.py'
Clamping mtime of '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/coprs/views/coprs_ns/coprs_general.py'
Clamping mtime of '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/coprs/views/coprs_ns/coprs_packages.py'
Clamping mtime of '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/coprs/views/coprs_ns/pagination_redirect.py'
Clamping mtime of '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/coprs/views/explore_ns.py'
Listing '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/coprs/views/groups_ns'...
Clamping mtime of '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/coprs/views/groups_ns/__init__.py'
Clamping mtime of '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/coprs/views/groups_ns/groups_general.py'
Clamping mtime of '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/coprs/views/memory_analyzer.py'
Clamping mtime of '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/coprs/views/misc.py'
Listing '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/coprs/views/recent_ns'...
Clamping mtime of '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/coprs/views/recent_ns/__init__.py'
Clamping mtime of '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/coprs/views/recent_ns/recent_general.py'
Listing '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/coprs/views/rss_ns'...
Clamping mtime of '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/coprs/views/rss_ns/__init__.py'
Clamping mtime of '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/coprs/views/rss_ns/rss_general.py'
Listing '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/coprs/views/stats_ns'...
Clamping mtime of '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/coprs/views/stats_ns/__init__.py'
Clamping mtime of '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/coprs/views/stats_ns/stats_receiver.py'
Listing '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/coprs/views/status_ns'...
Clamping mtime of '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/coprs/views/status_ns/__init__.py'
Clamping mtime of '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/coprs/views/status_ns/status_general.py'
Listing '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/coprs/views/tmp_ns'...
Clamping mtime of '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/coprs/views/tmp_ns/__init__.py'
Clamping mtime of '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/coprs/views/tmp_ns/tmp_general.py'
Listing '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/coprs/views/user_ns'...
Clamping mtime of '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/coprs/views/user_ns/__init__.py'
Clamping mtime of '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/coprs/views/user_ns/user_general.py'
Listing '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/coprs/views/webhooks_ns'...
Clamping mtime of '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/coprs/views/webhooks_ns/__init__.py'
Clamping mtime of '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/coprs/views/webhooks_ns/webhooks_general.py'
Clamping mtime of '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.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.fc40.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.fc40.noarch/usr/share/copr/coprs_frontend/coprs
+ env PYTHONHASHSEED=0 /usr/bin/python3 -s -B -m compileall -j224 -o 0 -o 1 -s /builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch -p / --hardlink-dupes --invalidation-mode=timestamp /builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/coprs
Listing '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/coprs'...
Listing '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/coprs/logic'...
Listing '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/coprs/static'...
Listing '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/coprs/static/chroot_logodir'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/coprs/views/apiv3_ns/schema/fields.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/coprs/views/apiv3_ns/apiv3_build_chroots.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/coprs/views/recent_ns/__init__.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/coprs/views/apiv3_ns/apiv3_general.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/coprs/views/recent_ns/recent_general.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/coprs/helpers.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/coprs/views/batches_ns/__init__.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/coprs/views/coprs_ns/coprs_chroots.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/coprs/config.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/coprs/log.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/coprs/logic/builds_logic.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/coprs/views/apiv3_ns/json2form.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/coprs/views/memory_analyzer.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/coprs/views/apiv3_ns/apiv3_monitor.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/coprs/views/stats_ns/__init__.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/coprs/logic/packages_logic.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/coprs/views/apiv3_ns/schema/schemas.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/coprs/views/batches_ns/coprs_batches.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/coprs/views/rss_ns/rss_general.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/coprs/views/coprs_ns/pagination_redirect.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/coprs/logic/actions_logic.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/coprs/views/admin_ns/admin_general.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/coprs/views/apiv3_ns/apiv3_project_chroots.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/coprs/views/status_ns/__init__.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/coprs/views/rss_ns/__init__.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/coprs/context_processors.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/coprs/logic/__init__.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/coprs/logic/backend_logic.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/coprs/logic/dist_git_logic.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/coprs/logic/outdated_chroots_logic.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/coprs/oidc.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/coprs/views/apiv3_ns/schema/__init__.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/coprs/views/groups_ns/groups_general.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/coprs/views/apiv3_ns/schema/docs.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/coprs/views/stats_ns/stats_receiver.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/coprs/views/apiv3_ns/apiv3_permissions.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/coprs/views/tmp_ns/tmp_general.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/coprs/models.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/coprs/views/apiv3_ns/apiv3_builds.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/coprs/views/user_ns/__init__.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/coprs/views/apiv3_ns/__init__.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/coprs/views/backend_ns/backend_general.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/coprs/__init__.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/coprs/exceptions.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/coprs/logic/api_logic.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/coprs/logic/modules_logic.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/coprs/views/backend_ns/__init__.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/coprs/views/misc.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/coprs/logic/helpers.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/coprs/measure.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/coprs/request.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/coprs/views/api_ns/api_general.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/coprs/views/coprs_ns/coprs_packages.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/coprs/constants.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/coprs/filters.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/coprs/logic/stat_logic.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/coprs/redis_session.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/coprs/views/coprs_ns/__init__.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/coprs/views/tmp_ns/__init__.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/coprs/views/apiv3_ns/apiv3_projects.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/coprs/forms.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/coprs/views/admin_ns/__init__.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/coprs/views/coprs_ns/coprs_builds.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/coprs/error_handlers.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/coprs/logic/coprs_logic.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/coprs/views/apiv3_ns/apiv3_packages.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/coprs/views/user_ns/user_general.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/coprs/auth.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/coprs/logic/batches_logic.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/coprs/logic/users_logic.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/coprs/views/api_ns/__init__.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/coprs/views/apiv3_ns/apiv3_mock_chroots.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/coprs/views/explore_ns.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/coprs/whoosheers.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/coprs/views/apiv3_ns/apiv3_webhooks.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/coprs/views/webhooks_ns/__init__.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/coprs/logic/complex_logic.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/coprs/views/apiv3_ns/apiv3_rpmrepo.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/coprs/views/status_ns/status_general.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/coprs/views/__init__.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/coprs/views/coprs_ns/coprs_general.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/coprs/mail.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/coprs/views/apiv3_ns/apiv3_modules.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/coprs/views/groups_ns/__init__.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/coprs/views/webhooks_ns/webhooks_general.py'...
Listing '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/coprs/static/components'...
Listing '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/coprs/static/components/c3'...
Listing '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/coprs/static/components/c3/extensions'...
Listing '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/coprs/static/components/c3/extensions/exporter'...
Listing '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/coprs/static/components/c3/extensions/js'...
Listing '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/coprs/static/components/d3'...
Listing '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/coprs/static/css'...
Listing '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/coprs/static/fonts'...
Listing '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/coprs/static/img'...
Listing '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/coprs/static/js'...
Listing '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/coprs/static/status_images'...
Listing '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/coprs/templates'...
Listing '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/coprs/templates/admin'...
Listing '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/coprs/templates/batches'...
Listing '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/coprs/templates/coprs'...
Listing '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/coprs/templates/coprs/detail'...
Listing '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/coprs/templates/coprs/detail/add_build'...
Listing '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/coprs/templates/coprs/detail/monitor'...
Listing '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/coprs/templates/coprs/detail/settings'...
Listing '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/coprs/templates/coprs/show'...
Listing '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/coprs/templates/groups'...
Listing '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/coprs/templates/recent'...
Listing '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/coprs/templates/rss'...
Listing '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/coprs/templates/status'...
Listing '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/coprs/views'...
Listing '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/coprs/views/admin_ns'...
Listing '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/coprs/views/api_ns'...
Listing '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/coprs/views/apiv3_ns'...
Listing '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/coprs/views/apiv3_ns/schema'...
Listing '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/coprs/views/backend_ns'...
Listing '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/coprs/views/batches_ns'...
Listing '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/coprs/views/coprs_ns'...
Listing '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/coprs/views/groups_ns'...
Listing '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/coprs/views/recent_ns'...
Listing '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/coprs/views/rss_ns'...
Listing '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/coprs/views/stats_ns'...
Listing '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/coprs/views/status_ns'...
Listing '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/coprs/views/tmp_ns'...
Listing '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/coprs/views/user_ns'...
Listing '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.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.fc40.noarch/usr/share/copr/coprs_frontend/alembic
+ python_binary='env /usr/bin/python3'
+ bytecode_compilation_path=/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.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.fc40.noarch/usr/share/copr/coprs_frontend/alembic
Listing '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/alembic'...
Clamping mtime of '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/alembic/env.py'
Listing '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/alembic/versions'...
Clamping mtime of '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.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.fc40.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.fc40.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.fc40.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.fc40.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.fc40.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.fc40.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.fc40.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.fc40.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.fc40.noarch/usr/share/copr/coprs_frontend/alembic/versions/2318cc31444e_add_column_appstream.py'
Clamping mtime of '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/alembic/versions/24e9054d4155_fix_results_paths.py'
Clamping mtime of '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.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.fc40.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.fc40.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.fc40.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.fc40.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.fc40.noarch/usr/share/copr/coprs_frontend/alembic/versions/33a73ed44f83_blacklist_denylist.py'
Clamping mtime of '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.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.fc40.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.fc40.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.fc40.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.fc40.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.fc40.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.fc40.noarch/usr/share/copr/coprs_frontend/alembic/versions/3d89a66848c5_follow_fedora_branching.py'
Clamping mtime of '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.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.fc40.noarch/usr/share/copr/coprs_frontend/alembic/versions/45d0515bdc3f_drop_proxy_column.py'
Clamping mtime of '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/alembic/versions/465202bfb9ce_update_db_functions.py'
Clamping mtime of '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.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.fc40.noarch/usr/share/copr/coprs_frontend/alembic/versions/484e28958b27_deduplicate_packages.py'
Clamping mtime of '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.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.fc40.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.fc40.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.fc40.noarch/usr/share/copr/coprs_frontend/alembic/versions/4edb1ca2a13f_remove_priority_columns.py'
Clamping mtime of '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.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.fc40.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.fc40.noarch/usr/share/copr/coprs_frontend/alembic/versions/51716ab39d37_package_chroot_blacklist.py'
Clamping mtime of '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.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.fc40.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.fc40.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.fc40.noarch/usr/share/copr/coprs_frontend/alembic/versions/58f7510f0fae_mockchroot_tags_property.py'
Clamping mtime of '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.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.fc40.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.fc40.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.fc40.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.fc40.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.fc40.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.fc40.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.fc40.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.fc40.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.fc40.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.fc40.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.fc40.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.fc40.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.fc40.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.fc40.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.fc40.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.fc40.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.fc40.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.fc40.noarch/usr/share/copr/coprs_frontend/alembic/versions/887cbbd6575e_scm_integration.py'
Clamping mtime of '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.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.fc40.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.fc40.noarch/usr/share/copr/coprs_frontend/alembic/versions/8ea94673d6ee_index_coprchroot_deleted.py'
Clamping mtime of '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.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.fc40.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.fc40.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.fc40.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.fc40.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.fc40.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.fc40.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.fc40.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.fc40.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.fc40.noarch/usr/share/copr/coprs_frontend/alembic/versions/b14b27e4a795_adding_isolation_option.py'
Clamping mtime of '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.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.fc40.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.fc40.noarch/usr/share/copr/coprs_frontend/alembic/versions/b828274ddebf_temporary_project.py'
Clamping mtime of '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.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.fc40.noarch/usr/share/copr/coprs_frontend/alembic/versions/ba6ac0936bfb_rawhide_to_release.py'
Clamping mtime of '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/alembic/versions/bc29f080b915_drop_krb5_table.py'
Clamping mtime of '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.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.fc40.noarch/usr/share/copr/coprs_frontend/alembic/versions/c28451aaed50_fix_defaults.py'
Clamping mtime of '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/alembic/versions/c6dd61c09256_buildchroot_tags.py'
Clamping mtime of '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.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.fc40.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.fc40.noarch/usr/share/copr/coprs_frontend/alembic/versions/cb928c34d36c_add_actionsstatistics_table.py'
Clamping mtime of '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/alembic/versions/code4beaf000_add_indexes3.py'
Clamping mtime of '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.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.fc40.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.fc40.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.fc40.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.fc40.noarch/usr/share/copr/coprs_frontend/alembic/versions/d8a1062ee4cf_fixup_source_state.py'
Clamping mtime of '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.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.fc40.noarch/usr/share/copr/coprs_frontend/alembic/versions/dabab11132c1_initial_db_setup.py'
Clamping mtime of '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.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.fc40.noarch/usr/share/copr/coprs_frontend/alembic/versions/deadbeafc0de_add_indexes2.py'
Clamping mtime of '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/alembic/versions/deaddeadc0de_add_indexes.py'
Clamping mtime of '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.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.fc40.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.fc40.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.fc40.noarch/usr/share/copr/coprs_frontend/alembic/versions/efec6b1aa9a2_add_buildchrootresults.py'
Clamping mtime of '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.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.fc40.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.fc40.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.fc40.noarch/usr/share/copr/coprs_frontend/alembic
+ env PYTHONHASHSEED=0 /usr/bin/python3 -s -B -m compileall -j224 -o 0 -o 1 -s /builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch -p / --hardlink-dupes --invalidation-mode=timestamp /builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/alembic
Listing '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/alembic'...
Listing '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.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.fc40.noarch/usr/share/copr/coprs_frontend/alembic/versions/3637b9daf7e4_generate_main_copr_dirs.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/alembic/versions/51716ab39d37_package_chroot_blacklist.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/alembic/versions/6866cd91c3c6_add_deleted_column_for_coprchroot.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/alembic/versions/8ea94673d6ee_index_coprchroot_deleted.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.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.fc40.noarch/usr/share/copr/coprs_frontend/alembic/versions/3d89a66848c5_follow_fedora_branching.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/alembic/versions/63db6872060f_add_bootstrap_config_columns.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.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.fc40.noarch/usr/share/copr/coprs_frontend/alembic/versions/c6dd61c09256_buildchroot_tags.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.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.fc40.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.fc40.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.fc40.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.fc40.noarch/usr/share/copr/coprs_frontend/alembic/versions/58eab04e5afc_add_priority_column_for_actions.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.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.fc40.noarch/usr/share/copr/coprs_frontend/alembic/versions/7d9f6f921fa0_add_repo_priority_field.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.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.fc40.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.fc40.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.fc40.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.fc40.noarch/usr/share/copr/coprs_frontend/alembic/versions/6d0a02dc7de4_sync_desynced_migrations_with_models.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/alembic/versions/8fd7c4714189_isolation_option_for_chroot.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/alembic/versions/cab566cc7dfb_add_batch_build_table.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/alembic/versions/745250baedaf_new_column_resubmitted_from_id.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/alembic/versions/a8654abcec65_unify_scm_source_types.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/alembic/versions/d5990bd4aa46_index_build_id_per_dir.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/alembic/versions/465202bfb9ce_update_db_functions.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.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.fc40.noarch/usr/share/copr/coprs_frontend/alembic/versions/b14b27e4a795_adding_isolation_option.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.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.fc40.noarch/usr/share/copr/coprs_frontend/alembic/versions/ca76b7902c2f_remove_old_status_column.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/alembic/versions/cb928c34d36c_add_actionsstatistics_table.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.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.fc40.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.fc40.noarch/usr/share/copr/coprs_frontend/alembic/versions/2318cc31444e_add_column_appstream.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/alembic/versions/3576fc77fb31_added_source_status_to_build.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/alembic/versions/45d0515bdc3f_drop_proxy_column.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.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.fc40.noarch/usr/share/copr/coprs_frontend/alembic/versions/7bb0c7762df0_make_new_prio_columns.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/alembic/versions/b0fd99505e37_fixup_unassigned_copr_chroots.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/alembic/versions/d8a1062ee4cf_fixup_source_state.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.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.fc40.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.fc40.noarch/usr/share/copr/coprs_frontend/alembic/versions/d2fbc2ab630d_drop_fedora_alembic_config.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.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.fc40.noarch/usr/share/copr/coprs_frontend/alembic/versions/29c352bde564_separate_private_stuff_into_private_.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.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.fc40.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.fc40.noarch/usr/share/copr/coprs_frontend/alembic/versions/58f7510f0fae_mockchroot_tags_property.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/alembic/versions/6f83ea2ba416_add_runtime_dependencies_to_copr.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.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.fc40.noarch/usr/share/copr/coprs_frontend/alembic/versions/de903581465c_create_table_for_upvoting_and_.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/alembic/versions/55a07cb7bd68_add_table_for_pinnedcoprs.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/alembic/versions/808912fe46d3_unique_name_in_copr.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/alembic/versions/ba6ac0936bfb_rawhide_to_release.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/alembic/versions/deadbeafc0de_add_indexes2.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.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.fc40.noarch/usr/share/copr/coprs_frontend/alembic/versions/33a73ed44f83_blacklist_denylist.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/alembic/versions/41763f7a5185_add_ssh_public_keys_column.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/alembic/versions/50e68db97d0a_adjust_counterstat_name_length.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/alembic/versions/65a172e3f102_unquote_counter_stat_urls.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.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.fc40.noarch/usr/share/copr/coprs_frontend/alembic/versions/bc29f080b915_drop_krb5_table.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/alembic/versions/ec3528516b0c_add_status_reason_column.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/alembic/versions/6b48324e9264_disallow_dash_in_os_release.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/alembic/versions/a8ef299dcac8_add_indexes_to_actions.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.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.fc40.noarch/usr/share/copr/coprs_frontend/alembic/versions/deaddeadc0de_add_indexes.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/alembic/versions/b828274ddebf_temporary_project.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.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.fc40.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.fc40.noarch/usr/share/copr/coprs_frontend/alembic/versions/9409fc1d5895_build_batch_id_indexed.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/alembic/versions/c28451aaed50_fix_defaults.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/alembic/versions/f61a5c930abf_unique_constraint_on_modules.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/alembic/versions/acac8d3ae868_add_table_for_graph_statistics.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/alembic/versions/efec6b1aa9a2_add_buildchrootresults.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/alembic/versions/26bf5b9a4dd0_indeces_for_faster_build_selection.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/alembic/versions/4edb1ca2a13f_remove_priority_columns.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.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.fc40.noarch/usr/share/copr/coprs_frontend/alembic/versions/887cbbd6575e_scm_integration.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/alembic/versions/e183e12563ee_add_index_to_module_id.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/alembic/versions/e2b1cb42e6b7_add_namespace_for_fedora_distgit.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/alembic/env.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/alembic/versions/0dbdd06fb850_multilib_knob_on_copr_public.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/alembic/versions/1f4e04bb3618_add_build_submitted_by_field.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/alembic/versions/24e9054d4155_fix_results_paths.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/alembic/versions/3b0851cb25fc_add_build_to_module_relation.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/alembic/versions/484e28958b27_deduplicate_packages.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.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.fc40.noarch/usr/share/copr/coprs_frontend/alembic/versions/6fed8655d074_remove_build_results_column.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/alembic/versions/9b7211be5017_add_reviewed_outdated_chroot_table.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.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.fc40.noarch/usr/share/copr/coprs_frontend/alembic/versions/dabab11132c1_initial_db_setup.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/alembic/versions/08dd42f4c304_connect_copr_to_actions.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/alembic/versions/1f94b22f70a1_change_module_version_to_bigint.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/alembic/versions/2561c13a3556_add_dist_git_instance_table.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/alembic/versions/3b67c52f5277_add_repos_to_copr_chroot.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/alembic/versions/484a1d4dd424_add_cancel_requests_table.py'...
Compiling '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.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.fc40.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.fc40.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.fc40.noarch/usr/share/copr/coprs_frontend/alembic/versions/code4beaf000_add_indexes3.py'...
+ [[ /usr/bin/python3 =~  - ]]
+ clamp_source_mtime /usr/bin/python3 /builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/tests
+ python_binary='env /usr/bin/python3'
+ bytecode_compilation_path=/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.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.fc40.noarch/usr/share/copr/coprs_frontend/tests
Listing '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/tests'...
Can't list '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.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.fc40.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.fc40.noarch/usr/share/copr/coprs_frontend/tests
+ env PYTHONHASHSEED=0 /usr/bin/python3 -s -B -m compileall -j224 -o 0 -o 1 -s /builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch -p / --hardlink-dupes --invalidation-mode=timestamp /builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/tests
Listing '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/tests'...
Can't list '/builddir/build/BUILDROOT/copr-frontend-1.204-1.fc40.noarch/usr/share/copr/coprs_frontend/tests'
+ /usr/bin/find-debuginfo -j224 --strict-build-id -m -i --build-id-seed 1.204-1.fc40 --unique-debug-suffix -1.204-1.fc40.noarch --unique-debug-src-base copr-frontend-1.204-1.fc40.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 -j224
+ /usr/lib/rpm/redhat/brp-python-hardlink
Executing(%check): /bin/sh -e /var/tmp/rpm-tmp.VjeMTE
+ 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  -mbranch-protection=standard -fasynchronous-unwind-tables -fstack-clash-protection -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer '
+ 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  -mbranch-protection=standard -fasynchronous-unwind-tables -fstack-clash-protection -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer '
+ 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  -mbranch-protection=standard -fasynchronous-unwind-tables -fstack-clash-protection -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer -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  -mbranch-protection=standard -fasynchronous-unwind-tables -fstack-clash-protection -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer -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
+ redis-server --port 7777
+ ./build_aux/check-alembic-revisions
/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
WARNING:root:no boto3 module found
INFO:coprs: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 0xffff8a4efc50>
method = <bound method TestAnitya.test_pypi of <tests.test_anitya.TestAnitya object at 0xffff8a4efc50>>
    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 0xffff89621a50>
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 0xffff8a114170>
method = <bound method TestGroupAuth.test_group_names_ldap of <tests.test_auth.TestGroupAuth object at 0xffff8a114170>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.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 0xffff897f5730>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff897f56d0>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff89917ec0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff899cf540>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff897f56d0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/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 0xffff8a114ec0>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff899cf540>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff897f56d0>
    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 0xffff8a114ec0>
method = <bound method TestComps.test_edit_project_chroot_comps of <tests.test_comps.TestComps object at 0xffff8a114ec0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff88b182c0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff88b18320>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff89917ec0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff88441dc0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff88b18320>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/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 0xffff8a1151f0>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff88441dc0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff88b18320>
    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 0xffff8a1151f0>
method = <bound method TestComps.test_edit_project_chroot_comps of <tests.test_comps.TestComps object at 0xffff8a1151f0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff88b1b4a0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff88b1b500>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff89917ec0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff89391b40>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff88b1b500>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/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 0xffff8a116690>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff89391b40>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff88b1b500>
    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 0xffff8a116690>
method = <bound method TestConfigOverrides.test_valid_configuration_cases of <tests.test_config_overrides.TestConfigOverrides object at 0xffff8a116690>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff88b39d90>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff88b39df0>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff89917ec0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff883baf40>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff88b39df0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/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 0xffff8a116750>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff883baf40>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff88b39df0>
    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 0xffff8a116750>
method = <bound method TestConfigOverrides.test_valid_configuration_cases of <tests.test_config_overrides.TestConfigOverrides object at 0xffff8a116750>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff88a74a70>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff88a74ad0>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff89917ec0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff893b78c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff88a74ad0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/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 0xffff8a115a00>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff893b78c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff88a74ad0>
    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 0xffff8a115a00>
method = <bound method TestConfigOverrides.test_valid_configuration_cases of <tests.test_config_overrides.TestConfigOverrides object at 0xffff8a115a00>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff88a77e30>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff88a77e90>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff89917ec0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff88d35ec0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff88a77e90>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/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 0xffff8a114e90>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff88d35ec0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff88a77e90>
    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 0xffff8a114e90>
method = <bound method TestConfigOverrides.test_valid_configuration_cases of <tests.test_config_overrides.TestConfigOverrides object at 0xffff8a114e90>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff88b0a8a0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff88b0a900>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff89917ec0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff899cda40>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff88b0a900>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/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 0xffff8a115bb0>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff899cda40>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff88b0a900>
    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 0xffff8a115bb0>
method = <bound method TestConfigOverrides.test_valid_configuration_cases of <tests.test_config_overrides.TestConfigOverrides object at 0xffff8a115bb0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff88a50ad0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff88a50b60>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff89917ec0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff88d36e40>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff88a50b60>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/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 0xffff8a115580>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff88d36e40>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff88a50b60>
    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 0xffff8a115580>
method = <bound method TestConfigOverrides.test_valid_configuration_cases of <tests.test_config_overrides.TestConfigOverrides object at 0xffff8a115580>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff8879c950>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff8879c9e0>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff89917ec0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff88799840>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff8879c9e0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/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 0xffff8a115940>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff88799840>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff8879c9e0>
    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 0xffff8a115940>
method = <bound method TestConfigOverrides.test_valid_configuration_cases of <tests.test_config_overrides.TestConfigOverrides object at 0xffff8a115940>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff88a74c20>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff88a74cb0>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff89917ec0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff88cffa40>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff88a74cb0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/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 0xffff8a115520>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff88cffa40>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff88a74cb0>
    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 0xffff8a115520>
method = <bound method TestConfigOverrides.test_valid_configuration_cases of <tests.test_config_overrides.TestConfigOverrides object at 0xffff8a115520>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff88b18500>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff88b18590>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff89917ec0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff893b6740>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff88b18590>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/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 0xffff8a115610>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff893b6740>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff88b18590>
    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 0xffff8a115610>
method = <bound method TestConfigOverrides.test_valid_configuration_cases of <tests.test_config_overrides.TestConfigOverrides object at 0xffff8a115610>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff89747b00>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff89747bf0>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff89917ec0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff88d352c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff89747bf0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/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 0xffff8a1152e0>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff88d352c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff89747bf0>
    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 0xffff8a1152e0>
method = <bound method TestConfigOverrides.test_valid_configuration_cases of <tests.test_config_overrides.TestConfigOverrides object at 0xffff8a1152e0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff8879ecf0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff8879c350>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff89917ec0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff882239c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff8879c350>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/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 0xffff8a117da0>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff882239c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff8879c350>
    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 0xffff8a117da0>
method = <bound method TestConfigOverrides.test_isolation_override of <tests.test_config_overrides.TestConfigOverrides object at 0xffff8a117da0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff896c1250>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff896c12b0>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff89917ec0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff899cf640>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff896c12b0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/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 0xffff8a117b30>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff899cf640>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff896c12b0>
    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 0xffff8a117b30>
method = <bound method TestConfigOverrides.test_isolation_override of <tests.test_config_overrides.TestConfigOverrides object at 0xffff8a117b30>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff89708aa0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff89708b00>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff89917ec0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff89439fc0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff89708b00>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/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 0xffff8a108410>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff89439fc0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff89708b00>
    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 0xffff8a108410>
method = <bound method TestConfigOverrides.test_isolation_override of <tests.test_config_overrides.TestConfigOverrides object at 0xffff8a108410>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff8970b9b0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff8970ba10>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff89917ec0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff88b57640>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff8970ba10>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/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 0xffff8a1087a0>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff88b57640>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff8970ba10>
    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 0xffff8a1087a0>
method = <bound method TestConfigOverrides.test_isolation_override of <tests.test_config_overrides.TestConfigOverrides object at 0xffff8a1087a0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff897125a0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff89712600>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff89917ec0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff88f7e640>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff89712600>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/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 0xffff8a108c50>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff88f7e640>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff89712600>
    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 0xffff8a108c50>
method = <bound method TestConfigOverrides.test_isolation_override of <tests.test_config_overrides.TestConfigOverrides object at 0xffff8a108c50>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff887b0e60>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff887b1040>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff89917ec0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff8825c0c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff887b1040>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/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 0xffff8a108e30>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff8825c0c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff887b1040>
    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 0xffff8a108e30>
method = <bound method TestConfigOverrides.test_isolation_override of <tests.test_config_overrides.TestConfigOverrides object at 0xffff8a108e30>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff887a40b0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff887a4110>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff89917ec0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff89836640>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff887a4110>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/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 0xffff8a1095e0>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff89836640>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff887a4110>
    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 0xffff8a1095e0>
method = <bound method TestConfigOverrides.test_isolation_override of <tests.test_config_overrides.TestConfigOverrides object at 0xffff8a1095e0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff887a7590>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff887a75f0>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff89917ec0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff8825e5c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff887a75f0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/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 0xffff8a10a720>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff8825e5c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff887a75f0>
    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 0xffff8a10a720>
method = <bound method TestConfigOverrides.test_isolation_override of <tests.test_config_overrides.TestConfigOverrides object at 0xffff8a10a720>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff887b2a80>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff887b1430>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff89917ec0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff87e5de40>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff887b1430>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/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 0xffff8a108110>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff87e5de40>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff887b1430>
    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 0xffff8a108110>
method = <bound method TestConfigOverrides.test_isolation_override_by_chroot of <tests.test_config_overrides.TestConfigOverrides object at 0xffff8a108110>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff896c1430>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff896c1880>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff89917ec0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff886336c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff896c1880>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/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 0xffff8a108050>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff886336c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff896c1880>
    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 0xffff8a108050>
method = <bound method TestConfigOverrides.test_isolation_override_by_chroot of <tests.test_config_overrides.TestConfigOverrides object at 0xffff8a108050>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff88a74950>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff88a74bc0>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff89917ec0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff882232c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff88a74bc0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/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 0xffff8a108440>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff882232c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff88a74bc0>
    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 0xffff8a108440>
method = <bound method TestConfigOverrides.test_isolation_override_by_chroot of <tests.test_config_overrides.TestConfigOverrides object at 0xffff8a108440>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff8879d0a0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff8879d100>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff89917ec0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff89834140>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff8879d100>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/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 0xffff8a108500>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff89834140>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff8879d100>
    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 0xffff8a108500>
method = <bound method TestConfigOverrides.test_isolation_override_by_chroot of <tests.test_config_overrides.TestConfigOverrides object at 0xffff8a108500>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff887e7530>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff887e7710>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff89917ec0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff89393840>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff887e7710>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/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 0xffff8a1085c0>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff89393840>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff887e7710>
    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 0xffff8a1085c0>
method = <bound method TestConfigOverrides.test_isolation_override_by_chroot of <tests.test_config_overrides.TestConfigOverrides object at 0xffff8a1085c0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff887fa930>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff887fa990>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff89917ec0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff87e5e1c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff887fa990>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/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 0xffff8a108650>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff87e5e1c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff887fa990>
    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 0xffff8a108650>
method = <bound method TestConfigOverrides.test_isolation_override_by_chroot of <tests.test_config_overrides.TestConfigOverrides object at 0xffff8a108650>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff888259a0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff88825a00>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff89917ec0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff88f36ec0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff88825a00>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/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 0xffff8a108710>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff88f36ec0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff88825a00>
    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 0xffff8a108710>
method = <bound method TestConfigOverrides.test_isolation_override_by_chroot of <tests.test_config_overrides.TestConfigOverrides object at 0xffff8a108710>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff88750a70>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff88750ad0>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff89917ec0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff88c39740>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff88750ad0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/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 0xffff8a108800>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff88c39740>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff88750ad0>
    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 0xffff8a108800>
method = <bound method TestConfigOverrides.test_isolation_override_by_chroot of <tests.test_config_overrides.TestConfigOverrides object at 0xffff8a108800>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff887510d0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff88751130>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff89917ec0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff89392d40>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff88751130>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/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 0xffff8a109910>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff89392d40>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff88751130>
    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 0xffff8a109910>
method = <bound method TestProjectCreate.test_invalid_contact of <tests.test_copr_create.TestProjectCreate object at 0xffff8a109910>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff88777740>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff88777f50>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff89917ec0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff883b86c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff88777f50>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/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 0xffff8a109bb0>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff883b86c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff88777f50>
    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 0xffff8a109bb0>
method = <bound method TestProjectCreate.test_invalid_contact of <tests.test_copr_create.TestProjectCreate object at 0xffff8a109bb0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff887b8290>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff887b82f0>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff89917ec0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff88c38540>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff887b82f0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/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 0xffff8a109c40>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff88c38540>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff887b82f0>
    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 0xffff8a109c40>
method = <bound method TestProjectCreate.test_invalid_contact of <tests.test_copr_create.TestProjectCreate object at 0xffff8a109c40>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff887bae70>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff887baed0>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff89917ec0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff881821c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff887baed0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/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 0xffff8a109d00>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff881821c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff887baed0>
    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 0xffff8a109d00>
method = <bound method TestProjectCreate.test_invalid_contact of <tests.test_copr_create.TestProjectCreate object at 0xffff8a109d00>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff88827bf0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff88824fb0>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff89917ec0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff88f7cd40>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff88824fb0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/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 0xffff8a10a030>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff88f7cd40>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff88824fb0>
    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 0xffff8a10a030>
method = <bound method TestProjectCreate.test_valid_contact of <tests.test_copr_create.TestProjectCreate object at 0xffff8a10a030>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff887e71d0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff887e69f0>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff89917ec0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff8810fd40>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff887e69f0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/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 0xffff8a10a300>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff8810fd40>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff887e69f0>
    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 0xffff8a10a300>
method = <bound method TestProjectCreate.test_valid_contact of <tests.test_copr_create.TestProjectCreate object at 0xffff8a10a300>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff896c1010>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff896c0cb0>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff89917ec0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff886bafc0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff896c0cb0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/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 0xffff8a10a3c0>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff886bafc0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff896c0cb0>
    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 0xffff8a10a3c0>
method = <bound method TestProjectCreate.test_valid_contact of <tests.test_copr_create.TestProjectCreate object at 0xffff8a10a3c0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff887b83b0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff887bbad0>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff89917ec0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff89836cc0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff887bbad0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/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 0xffff8a10a450>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff89836cc0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff887bbad0>
    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 0xffff8a10a450>
method = <bound method TestProjectCreate.test_valid_contact of <tests.test_copr_create.TestProjectCreate object at 0xffff8a10a450>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_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 0xffff8a10ad50>
method = <bound method TestExceptionHandling.test_json_only_for_api of <tests.test_exceptions.TestExceptionHandling object at 0xffff8a10ad50>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.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 0xffff8a10af60>
method = <bound method TestExceptionHandling.test_both_nonexisting_page_and_object of <tests.test_exceptions.TestExceptionHandling object at 0xffff8a10af60>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.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 0xffff8a10ae70>
method = <bound method TestExceptionHandling.test_both_nonexisting_page_and_object_api of <tests.test_exceptions.TestExceptionHandling object at 0xffff8a10ae70>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.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 0xffff8a10abd0>
method = <bound method TestExceptionHandling.test_api_401 of <tests.test_exceptions.TestExceptionHandling object at 0xffff8a10abd0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.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 0xffff89ece660>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff896693d0>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff89917ec0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff88632040>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff896693d0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/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 0xffff8a1096a0>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff88632040>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff896693d0>
    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 0xffff8a1096a0>
method = <bound method TestExceptionHandling.test_api_403 of <tests.test_exceptions.TestExceptionHandling object at 0xffff8a1096a0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff8a520200>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff8975d700>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff89917ec0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff88cdb6c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff8975d700>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/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 0xffff8a10a750>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff88cdb6c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff8975d700>
    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 0xffff8a10a750>
method = <bound method TestExceptionHandling.test_api_409 of <tests.test_exceptions.TestExceptionHandling object at 0xffff8a10a750>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff897d9c70>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff897db260>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff89917ec0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff87f173c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff897db260>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/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 0xffff8a13cb30>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff87f173c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff897db260>
    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 0xffff8a13cb30>
method = <bound method TestExceptionHandling.test_api_400 of <tests.test_exceptions.TestExceptionHandling object at 0xffff8a13cb30>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_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 0xffff8a13ef00>
method = <bound method TestExceptionHandling.test_api_504 of <tests.test_exceptions.TestExceptionHandling object at 0xffff8a13ef00>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.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 0xffff8a13c2c0>
method = <bound method TestExceptionHandling.test_api_500 of <tests.test_exceptions.TestExceptionHandling object at 0xffff8a13c2c0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.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 0xffff8a13d8e0>
method = <bound method TestExceptionHandling.test_api_500_default_message of <tests.test_exceptions.TestExceptionHandling object at 0xffff8a13d8e0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.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 0xffff8a13da60>
method = <bound method TestExceptionHandling.test_api_500_runtime_error of <tests.test_exceptions.TestExceptionHandling object at 0xffff8a13da60>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.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 0xffff8a13dbe0>
method = <bound method TestExceptionHandling.test_api_500_storage of <tests.test_exceptions.TestExceptionHandling object at 0xffff8a13dbe0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.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 0xffff8a13dd90>
method = <bound method TestExceptionHandling.test_api_500_in_progress of <tests.test_exceptions.TestExceptionHandling object at 0xffff8a13dd90>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.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 0xffff897b2930>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff897b1d90>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff898d4320>
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 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff891ebd40>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff897b1d90>
    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 0xffff8a13e660>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.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 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff891ebd40>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff897b1d90>
    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 0xffff8a13e660>
method = <bound method TestCoprsFormFactory.test_empty_chroots of <tests.test_forms.TestCoprsFormFactory object at 0xffff8a13e660>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff897d9e80>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff897b1880>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff898d4320>
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 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff88cbc440>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff897b1880>
    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 0xffff8a13f320>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.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 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff88cbc440>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff897b1880>
    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 0xffff8a13f320>
method = <bound method TestPinnedCoprsForm.test_limit of <tests.test_forms.TestPinnedCoprsForm object at 0xffff8a13f320>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff8975cfb0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff8975f830>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff898d4320>
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 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff87e67040>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff8975f830>
    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 0xffff8a13f5f0>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.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 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff87e67040>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff8975f830>
    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 0xffff8a13f5f0>
method = <bound method TestPinnedCoprsForm.test_unique_coprs of <tests.test_forms.TestPinnedCoprsForm object at 0xffff8a13f5f0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff887e7bc0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff887e7380>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff898d4320>
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 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff88cbd440>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff887e7380>
    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 0xffff8a13f830>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.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 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff88cbd440>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff887e7380>
    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 0xffff8a13f830>
method = <bound method TestPinnedCoprsForm.test_invalid_choice of <tests.test_forms.TestPinnedCoprsForm object at 0xffff8a13f830>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_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 0xffff89fd0110>
method = <bound method TestCreateModuleForm.test_successful_validate of <tests.test_forms.TestCreateModuleForm object at 0xffff89fd0110>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_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 0xffff89fd0290>
method = <bound method TestCreateModuleForm.test_unique_names of <tests.test_forms.TestCreateModuleForm object at 0xffff89fd0290>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_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 0xffff8a13faa0>
method = <function TestCreateModuleForm.test_profile_name_required at 0xffff8a0ffba0>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_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 0xffff89fd3680>
method = <bound method TestHelpers.test_guess_package_name of <tests.test_helpers.TestHelpers object at 0xffff89fd3680>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_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 0xffff89fd3830>
method = <bound method TestHelpers.test_generate_repo_url of <tests.test_helpers.TestHelpers object at 0xffff89fd3830>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_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 0xffff89fd39b0>
method = <bound method TestHelpers.test_fix_protocol_for_backend of <tests.test_helpers.TestHelpers object at 0xffff89fd39b0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_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 0xffff89fd3aa0>
method = <bound method TestHelpers.test_fix_protocol_for_frontend of <tests.test_helpers.TestHelpers object at 0xffff89fd3aa0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_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 0xffff89fd3bf0>
method = <bound method TestHelpers.test_pre_process_repo_url of <tests.test_helpers.TestHelpers object at 0xffff89fd3bf0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_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 0xffff89fd3d70>
method = <bound method TestHelpers.test_parse_repo_params of <tests.test_helpers.TestHelpers object at 0xffff89fd3d70>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_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 0xffff89fd2d80>
method = <bound method TestHelpers.test_parse_repo_params_pass_keys of <tests.test_helpers.TestHelpers object at 0xffff89fd2d80>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_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 0xffff89fd2c60>
method = <bound method TestHelpers.test_subdir_match of <tests.test_helpers.TestHelpers object at 0xffff89fd2c60>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_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 0xffff89fd1a60>
method = <bound method TestHelpers.test_raw_patch_parse of <tests.test_helpers.TestHelpers object at 0xffff89fd1a60>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.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/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/alembic/schema/versions/code4beaf000_add_indexes3.py'}
{'frontend/coprs_frontend/coprs/models.py', 'frontend/coprs_frontend/alembic/schema/versions/code4beaf000_add_indexes3.py'}
________ ERROR at teardown of TestHelpers.test_pagure_html_diff_parser _________
self = <tests.test_helpers.TestHelpers object at 0xffff89fd1d00>
method = <bound method TestHelpers.test_pagure_html_diff_parser of <tests.test_helpers.TestHelpers object at 0xffff89fd1d00>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff89782ea0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff898307a0>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff89917ec0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff88cbee40>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff898307a0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/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 0xffff89fd1940>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff88cbee40>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff898307a0>
    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 0xffff89fd1940>
method = <bound method TestHelpers.test_orm_object_clone of <tests.test_helpers.TestHelpers object at 0xffff89fd1940>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff89831190>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff89833c80>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff89917ec0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff8866a2c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff89833c80>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/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 0xffff89fd2360>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff8866a2c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff89833c80>
    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 0xffff89fd2360>
method = <bound method TestHelpers.test_being_server_admin of <tests.test_helpers.TestHelpers object at 0xffff89fd2360>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff89833a10>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff898335c0>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff898d4320>
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 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff88cbecc0>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff898335c0>
    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 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff88cbecc0>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff898335c0>
    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 0xffff897e2540>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff897e37a0>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff898d4320>
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 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff88cd9740>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff897e37a0>
    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 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff88cd9740>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff897e37a0>
    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 0xffff89762390>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff89760aa0>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff898d4320>
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 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff87b83a40>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff89760aa0>
    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 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff87b83a40>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff89760aa0>
    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 0xffff897627b0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff89763c80>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff898d4320>
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 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff88cdb2c0>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff89763c80>
    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 0xffff89f73d40>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.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 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff88cdb2c0>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff89763c80>
    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 0xffff89f73d40>
method = <bound method TestLoggingUsersLogic.test_user_get of <tests.test_logging.TestLoggingUsersLogic object at 0xffff89f73d40>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff897969c0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff897948c0>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff898d4320>
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 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff88e834c0>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff897948c0>
    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 0xffff89f73ef0>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.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 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff88e834c0>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff897948c0>
    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 0xffff89f73ef0>
method = <bound method TestLoggingUsersLogic.test_raise_if_cant_update_copr of <tests.test_logging.TestLoggingUsersLogic object at 0xffff89f73ef0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff89752e10>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff89753200>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff898d4320>
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 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff88f1d740>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff89753200>
    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 0xffff89fe4110>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.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 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff88f1d740>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff89753200>
    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 0xffff89fe4110>
method = <bound method TestLoggingUsersLogic.test_raise_if_cant_build_in_copr of <tests.test_logging.TestLoggingUsersLogic object at 0xffff89fe4110>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff89767200>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff897e5c40>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff898d4320>
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 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff8941b6c0>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff897e5c40>
    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 0xffff89fe42f0>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.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 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff8941b6c0>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff897e5c40>
    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 0xffff89fe42f0>
method = <bound method TestLoggingUsersLogic.test_raise_if_not_in_group of <tests.test_logging.TestLoggingUsersLogic object at 0xffff89fe42f0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff89760ad0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff89760440>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff898d4320>
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 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff87e56940>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff89760440>
    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 0xffff89fe4500>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.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 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff87e56940>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff89760440>
    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 0xffff89fe4500>
method = <bound method TestLoggingUsersLogic.test_delete_user_data of <tests.test_logging.TestLoggingUsersLogic object at 0xffff89fe4500>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff89833650>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff89830260>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff898d4320>
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 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff88cbe640>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff89830260>
    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 0xffff89fe46b0>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.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 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff88cbe640>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff89830260>
    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 0xffff89fe46b0>
method = <bound method TestLoggingUsersLogic.test_create_user_wrapper of <tests.test_logging.TestLoggingUsersLogic object at 0xffff89fe46b0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff897b2480>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff897b12b0>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff898d4320>
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 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff88cd82c0>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff897b12b0>
    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 0xffff89fe4860>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.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 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff88cd82c0>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff897b12b0>
    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 0xffff89fe4860>
method = <bound method TestLoggingUsersLogic.test_user_data_dumper of <tests.test_logging.TestLoggingUsersLogic object at 0xffff89fe4860>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff89750c20>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff89750b90>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff898d4320>
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 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff87e575c0>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff89750b90>
    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 0xffff89fe5280>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.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 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff87e575c0>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff89750b90>
    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 0xffff89fe5280>
method = <bound method TestLoggingUserGeneral.test_delete_user_data of <tests.test_logging.TestLoggingUserGeneral object at 0xffff89fe5280>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff8975ae10>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff89758b00>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff898d4320>
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 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff89025e40>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff89758b00>
    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 0xffff89fe5bb0>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.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 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff89025e40>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff89758b00>
    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 0xffff89fe5bb0>
method = <bound method TestLoggingCoprPermissionsLogic.test_update_permissions of <tests.test_logging.TestLoggingCoprPermissionsLogic object at 0xffff89fe5bb0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff8981abd0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff89818bc0>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff898d4320>
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 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff87d047c0>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff89818bc0>
    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 0xffff89fe5dc0>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.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 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff87d047c0>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff89818bc0>
    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 0xffff89fe5dc0>
method = <bound method TestLoggingCoprPermissionsLogic.test_update_permissions_by_applier of <tests.test_logging.TestLoggingCoprPermissionsLogic object at 0xffff89fe5dc0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff897a5400>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff897a64e0>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff898d4320>
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 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff89024540>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff897a64e0>
    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 0xffff89fe5fd0>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.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 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff89024540>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff897a64e0>
    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 0xffff89fe5fd0>
method = <bound method TestLoggingCoprPermissionsLogic.test_set_permissions of <tests.test_logging.TestLoggingCoprPermissionsLogic object at 0xffff89fe5fd0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff897a7dd0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff897a75c0>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff898d4320>
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 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff87d062c0>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff897a75c0>
    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 0xffff89fe61e0>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.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 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff87d062c0>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff897a75c0>
    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 0xffff89fe61e0>
method = <bound method TestLoggingCoprPermissionsLogic.test_request_permission of <tests.test_logging.TestLoggingCoprPermissionsLogic object at 0xffff89fe61e0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff897558b0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff897572c0>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff898d4320>
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 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff88e80fc0>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff897572c0>
    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 0xffff89fe6db0>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.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 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff88e80fc0>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff897572c0>
    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 0xffff89fe6db0>
method = <bound method TestLoggingAuth.test_create_or_login of <tests.test_logging.TestLoggingAuth object at 0xffff89fe6db0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff89817c20>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff89815130>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff898d4320>
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 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff87e55340>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff89815130>
    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 0xffff89fe6f60>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.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 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff87e55340>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff89815130>
    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 0xffff89fe6f60>
method = <bound method TestLoggingAuth.test_logout of <tests.test_logging.TestLoggingAuth object at 0xffff89fe6f60>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff886ec410>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff886ec470>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff89917ec0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff88f1fdc0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff886ec470>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/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 0xffff89fe7110>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff88f1fdc0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff886ec470>
    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 0xffff89fe7110>
method = <bound method TestLoggingAuth.test_api_login_required_invalid of <tests.test_logging.TestLoggingAuth object at 0xffff89fe7110>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff89669a90>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff887b3e60>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff898d4320>
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 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff8866b9c0>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff887b3e60>
    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 0xffff89fe7bf0>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.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 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff8866b9c0>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff887b3e60>
    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 0xffff89fe7bf0>
method = <bound method TestLoggingUsingAdminPermissions.test_update_copr of <tests.test_logging.TestLoggingUsingAdminPermissions object at 0xffff89fe7bf0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff89794860>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff89fe7080>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff89917ec0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff88cd82c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff89fe7080>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/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 0xffff89fe6d50>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff88cd82c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff89fe7080>
    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 0xffff89fe6d50>
method = <bound method TestLoggingUsingAdminPermissions.test_update_copr_chroot of <tests.test_logging.TestLoggingUsingAdminPermissions object at 0xffff89fe6d50>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff89833d70>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff89832c60>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff898d4320>
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 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff884aae40>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff89832c60>
    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 0xffff89fe7d40>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.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 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff884aae40>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff89832c60>
    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 0xffff89fe7d40>
method = <bound method TestLoggingUsingAdminPermissions.test_update_package_webui of <tests.test_logging.TestLoggingUsingAdminPermissions object at 0xffff89fe7d40>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff89750f50>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff89753cb0>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff898d4320>
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 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff88669bc0>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff89753cb0>
    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 0xffff89fe7fb0>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.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 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff88669bc0>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff89753cb0>
    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 0xffff89fe7fb0>
method = <bound method TestLoggingUsingAdminPermissions.test_update_package_apiv3 of <tests.test_logging.TestLoggingUsingAdminPermissions object at 0xffff89fe7fb0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff886ec440>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff886ee990>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff898d4320>
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 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff87d8abc0>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff886ee990>
    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 0xffff8a03c5f0>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.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 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff87d8abc0>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff886ee990>
    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 0xffff8a03c5f0>
method = <bound method TestMail.test_permissions_request_message of <tests.test_mail.TestMail object at 0xffff8a03c5f0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff8868d940>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff8868e240>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff898d4320>
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 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff8941b5c0>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff8868e240>
    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 0xffff8a03c320>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.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 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff8941b5c0>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff8868e240>
    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 0xffff8a03c320>
method = <bound method TestMail.test_permissions_change_message of <tests.test_mail.TestMail object at 0xffff8a03c320>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff886fb560>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff886f8470>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff898d4320>
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 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff87e938c0>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff886f8470>
    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 0xffff8a03cef0>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.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 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff87e938c0>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff886f8470>
    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 0xffff8a03cef0>
method = <bound method TestMail.test_legal_flag_message of <tests.test_mail.TestMail object at 0xffff8a03cef0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff88704410>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff88704470>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff89917ec0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff88e80bc0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff88704470>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/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 0xffff8a03d0d0>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff88e80bc0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff88704470>
    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 0xffff8a03d0d0>
method = <bound method TestMail.test_outdated_chroot_message of <tests.test_mail.TestMail object at 0xffff8a03d0d0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_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 0xffff8a03d2e0>
method = <bound method TestMail.test_outdated_chroot_message_empty_chroots of <tests.test_mail.TestMail object at 0xffff8a03d2e0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_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 0xffff8a03d460>
method = <bound method TestMail.test_filter_recipients of <tests.test_mail.TestMail object at 0xffff8a03d460>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff886ed130>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff8a03d3d0>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff89917ec0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff87e90ac0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff8a03d3d0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/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 0xffff8a03f200>
    @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 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff87e90ac0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff8a03d3d0>
    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 0xffff8a03f200>
method = <bound method TestBuildModel.test_get_chroots_by_status of <tests.test_models.TestBuildModel object at 0xffff8a03f200>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff88fb7b30>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff88fb7c20>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff898d4320>
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 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff880cec40>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff88fb7c20>
    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 0xffff8a03f5f0>
    @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 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff880cec40>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff88fb7c20>
    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 0xffff8a03f5f0>
method = <bound method TestBuildModel.test_chroot_denylist of <tests.test_models.TestBuildModel object at 0xffff8a03f5f0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff897582c0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff897595e0>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff898d4320>
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 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff8860e240>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff897595e0>
    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 0xffff8a03fa70>
    @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 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff8860e240>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff897595e0>
    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 0xffff8a03fa70>
method = <bound method TestBuildModel.test_chroot_denylist_all of <tests.test_models.TestBuildModel object at 0xffff8a03fa70>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff886f8410>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff886f84d0>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff89917ec0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff88f1dac0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff886f84d0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/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 0xffff8a03f8c0>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff88f1dac0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff886f84d0>
    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 0xffff8a03f8c0>
method = <bound method TestBuildModel.test_finished of <tests.test_models.TestBuildModel object at 0xffff8a03f8c0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff886ec7a0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff886ec920>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff898d4320>
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 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff880cc4c0>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff886ec920>
    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 0xffff8a03e270>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.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 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff880cc4c0>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff886ec920>
    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 0xffff8a03e270>
method = <bound method TestBuildModel.test_finished_srpms of <tests.test_models.TestBuildModel object at 0xffff8a03e270>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff8903fe90>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff8903db20>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff89917ec0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff87e928c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff8903db20>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/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 0xffff8a03e480>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff87e928c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff8903db20>
    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 0xffff8a03e480>
method = <bound method TestBuildModel.test_canceled of <tests.test_models.TestBuildModel object at 0xffff8a03e480>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff88f90f80>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff88f91010>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff89917ec0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff880cedc0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff88f91010>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/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 0xffff8a03ea20>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff880cedc0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff88f91010>
    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 0xffff8a03ea20>
method = <bound method TestBuildModel.test_build_logs of <tests.test_models.TestBuildModel object at 0xffff8a03ea20>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff88fbe8a0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff88fbc050>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff89917ec0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff87e90ec0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff88fbc050>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/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 0xffff8a03e720>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff87e90ec0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff88fbc050>
    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 0xffff8a03e720>
method = <bound method TestBuildModel.test_buildchroot_logs of <tests.test_models.TestBuildModel object at 0xffff8a03e720>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_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 0xffff8a03d2b0>
method = <bound method TestBuildModel.test_source_state_translation of <tests.test_models.TestBuildModel object at 0xffff8a03d2b0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff887068d0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff8a03c4a0>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff89917ec0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff88543540>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff8a03c4a0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/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 0xffff8a015010>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff88543540>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff8a03c4a0>
    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 0xffff8a015010>
method = <bound method TestCoprModel.test_permissible_chroots of <tests.test_models.TestCoprModel object at 0xffff8a015010>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_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 0xffff8a014530>
method = <bound method TestPagureEvents.test_negative_event_info_from_pr_comment of <tests.test_pagure_events.TestPagureEvents object at 0xffff8a014530>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.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 0xffff8a014d40>
method = <bound method TestPagureEvents.test_negative_is_dir_in_commit of <tests.test_pagure_events.TestPagureEvents object at 0xffff8a014d40>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_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 0xffff8a014a40>
method = <bound method TestPagureEvents.test_positive_is_dir_in_commit of <tests.test_pagure_events.TestPagureEvents object at 0xffff8a014a40>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_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 0xffff8a015d90>
method = <bound method TestPagureEvents.test_positive_build_from_pr_update of <tests.test_pagure_events.TestPagureEvents object at 0xffff8a015d90>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.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 0xffff8a015f70>
method = <bound method TestPagureEvents.test_negative_event_info_from_pr_comment_random_comment of <tests.test_pagure_events.TestPagureEvents object at 0xffff8a015f70>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.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 0xffff8a0160f0>
method = <bound method TestPagureEvents.test_positive_event_info_from_pr_comment of <tests.test_pagure_events.TestPagureEvents object at 0xffff8a0160f0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_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 0xffff8a016270>
method = <bound method TestPagureEvents.test_negative_build_from_pr_comment of <tests.test_pagure_events.TestPagureEvents object at 0xffff8a016270>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.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 0xffff8a016450>
method = <bound method TestPagureEvents.test_negative_event_info of <tests.test_pagure_events.TestPagureEvents object at 0xffff8a016450>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.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 0xffff8a016600>
method = <bound method TestPagureEvents.test_negative_event_info_from_pr_comment_closed_pr of <tests.test_pagure_events.TestPagureEvents object at 0xffff8a016600>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.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 0xffff8a016780>
method = <bound method TestPagureEvents.test_positive_event_info_from_pr of <tests.test_pagure_events.TestPagureEvents object at 0xffff8a016780>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_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 0xffff8a016990>
method = <bound method TestPagureEvents.test_positive_event_info_from_push of <tests.test_pagure_events.TestPagureEvents object at 0xffff8a016990>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_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 0xffff8a016b10>
method = <bound method TestPagureEvents.test_positive_build_from_push of <tests.test_pagure_events.TestPagureEvents object at 0xffff8a016b10>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.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 0xffff8a016d20>
method = <bound method TestPagureEvents.test_negative_build_from_push of <tests.test_pagure_events.TestPagureEvents object at 0xffff8a016d20>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.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 0xffff8a016f90>
method = <bound method TestPagureEvents.test_negative_unknown_topic of <tests.test_pagure_events.TestPagureEvents object at 0xffff8a016f90>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.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 0xffff8a016ae0>
method = <bound method TestPagureEvents.test_positive_build_from_pr_fork of <tests.test_pagure_events.TestPagureEvents object at 0xffff8a016ae0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.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 0xffff889f37d0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff889f3860>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff89917ec0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff87262fc0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff889f3860>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/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 0xffff8a017cb0>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff87262fc0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff889f3860>
    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 0xffff8a017cb0>
method = <bound method TestCoprResubmitBuild.test_copr_repeat_build_attributes_upload of <tests.test_resubmit.TestCoprResubmitBuild object at 0xffff8a017cb0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff892990d0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff89299160>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff89917ec0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff873459c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff89299160>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/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 0xffff89e31910>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff873459c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff89299160>
    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 0xffff89e31910>
method = <bound method TestCustomWebhook.test_package_not_found of <tests.test_webhooks.TestCustomWebhook object at 0xffff89e31910>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff89310a10>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff89310aa0>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff89917ec0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff875e3140>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff89310aa0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/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 0xffff89e30b30>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff875e3140>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff89310aa0>
    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 0xffff89e30b30>
method = <bound method TestCustomWebhook.test_hook_data_stored of <tests.test_webhooks.TestCustomWebhook object at 0xffff89e30b30>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff8929b830>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff8929bd10>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff89917ec0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff877f7ec0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff8929bd10>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/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 0xffff89e30890>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff877f7ec0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff8929bd10>
    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 0xffff89e30890>
method = <bound method TestCustomWebhook.test_bad_uuid of <tests.test_webhooks.TestCustomWebhook object at 0xffff89e30890>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff89293470>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff89293500>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff89917ec0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff875e62c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff89293500>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/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 0xffff89e310d0>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff875e62c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff89293500>
    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 0xffff89e310d0>
method = <bound method TestGithubWebhook.test_package_bad_request of <tests.test_webhooks.TestGithubWebhook object at 0xffff89e310d0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff889f1a30>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff889f1970>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff89917ec0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff88bcfac0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff889f1970>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/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 0xffff89e302f0>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff88bcfac0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff889f1970>
    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 0xffff89e302f0>
method = <bound method TestGithubWebhook.test_hook_status_ping_event of <tests.test_webhooks.TestGithubWebhook object at 0xffff89e302f0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff889ec2c0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff889ec230>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff89917ec0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff87b1e3c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff889ec230>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/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 0xffff89e31af0>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff87b1e3c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff889ec230>
    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 0xffff89e31af0>
method = <bound method TestGithubWebhook.test_hook_data_stored of <tests.test_webhooks.TestGithubWebhook object at 0xffff89e31af0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff886eccb0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff886efbc0>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff89917ec0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff879afbc0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff886efbc0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/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 0xffff89e32570>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff879afbc0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff886efbc0>
    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 0xffff89e32570>
method = <bound method TestGithubWebhook.test_bad_uuid of <tests.test_webhooks.TestGithubWebhook object at 0xffff89e32570>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff889d3230>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff889d3170>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff89917ec0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff875e1940>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff889d3170>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/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 0xffff89e33560>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff875e1940>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff889d3170>
    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 0xffff89e33560>
method = <bound method TestGitlabWebhook.test_package_bad_request of <tests.test_webhooks.TestGitlabWebhook object at 0xffff89e33560>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff892ffaa0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff892fe6f0>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff89917ec0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff88bce0c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff892fe6f0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/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 0xffff8a0153a0>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff88bce0c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff892fe6f0>
    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 0xffff8a0153a0>
method = <bound method TestGitlabWebhook.test_hook_data_stored of <tests.test_webhooks.TestGitlabWebhook object at 0xffff8a0153a0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff8868e7e0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff889b8410>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff89917ec0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff875e37c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff889b8410>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/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 0xffff8a0151c0>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff875e37c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff889b8410>
    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 0xffff8a0151c0>
method = <bound method TestGitlabWebhook.test_bad_uuid of <tests.test_webhooks.TestGitlabWebhook object at 0xffff8a0151c0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff8828f590>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff8828f620>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff89917ec0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff872d84c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff8828f620>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/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 0xffff89e32090>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff872d84c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff8828f620>
    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 0xffff89e32090>
method = <bound method TestBitbucketWebhook.test_package_bad_request of <tests.test_webhooks.TestBitbucketWebhook object at 0xffff89e32090>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff88336e40>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff88336ed0>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff89917ec0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff87260940>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff88336ed0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/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 0xffff89e323c0>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff87260940>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff88336ed0>
    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 0xffff89e323c0>
method = <bound method TestBitbucketWebhook.test_hook_data_stored of <tests.test_webhooks.TestBitbucketWebhook object at 0xffff89e323c0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff88349fa0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff8834a030>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff89917ec0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff875f7d40>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff8834a030>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/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 0xffff89e33800>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff875f7d40>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff8834a030>
    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 0xffff89e33800>
method = <bound method TestBitbucketWebhook.test_bad_uuid of <tests.test_webhooks.TestBitbucketWebhook object at 0xffff89e33800>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff88dd99d0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff88dd9a60>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff89917ec0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff8759a9c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff88dd9a60>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/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 0xffff89e0c740>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff8759a9c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff88dd9a60>
    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 0xffff89e0c740>
method = <bound method TestAPIv3BuildChrootsResults.test_build_chroot_built_packages of <test_build_chroots.TestAPIv3BuildChrootsResults object at 0xffff89e0c740>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff8828fe60>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff8828fef0>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff89917ec0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff875f4bc0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff8828fef0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/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 0xffff89e0c950>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff875f4bc0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff8828fef0>
    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 0xffff89e0c950>
method = <bound method TestAPIv3BuildChrootsResults.test_build_chroot_built_packages of <test_build_chroots.TestAPIv3BuildChrootsResults object at 0xffff89e0c950>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff889d7dd0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff889d4c20>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff89917ec0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff87629340>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff889d4c20>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/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 0xffff89e0c9e0>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff87629340>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff889d4c20>
    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 0xffff89e0c9e0>
method = <bound method TestAPIv3BuildChrootsResults.test_build_chroot_built_packages of <test_build_chroots.TestAPIv3BuildChrootsResults object at 0xffff89e0c9e0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff89818ce0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff889d3530>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff89917ec0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff872da440>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff889d3530>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/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 0xffff89e0cda0>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff872da440>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff889d3530>
    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 0xffff89e0cda0>
method = <bound method TestAPIv3BuildChrootsResults.test_build_chroot_list of <test_build_chroots.TestAPIv3BuildChrootsResults object at 0xffff89e0cda0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff892f09b0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff892f0a40>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff89917ec0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff87406240>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff892f0a40>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/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 0xffff89e0cfb0>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff87406240>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff892f0a40>
    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 0xffff89e0cfb0>
method = <bound method TestAPIv3BuildChrootsResults.test_build_chroot_list of <test_build_chroots.TestAPIv3BuildChrootsResults object at 0xffff89e0cfb0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff88d590d0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff88d59190>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff89917ec0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff87769940>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff88d59190>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/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 0xffff89e0d070>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff87769940>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff88d59190>
    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 0xffff89e0d070>
method = <bound method TestAPIv3BuildChrootsResults.test_build_chroot_list_no_id of <test_build_chroots.TestAPIv3BuildChrootsResults object at 0xffff89e0d070>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff88d5b4a0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff88d5b500>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff89917ec0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff874044c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff88d5b500>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/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 0xffff89e0d670>
    @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 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff874044c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff88d5b500>
    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 0xffff89e0d670>
method = <bound method TestAPIv3Builds.test_v3_builds of <test_builds.TestAPIv3Builds object at 0xffff89e0d670>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff88d62300>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff88d62360>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff89917ec0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff8790c340>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff88d62360>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/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 0xffff89e0d820>
    @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 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff8790c340>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff88d62360>
    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 0xffff89e0d820>
method = <bound method TestAPIv3Builds.test_v3_builds of <test_builds.TestAPIv3Builds object at 0xffff89e0d820>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff88e3d700>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff88e3d760>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff89917ec0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff87c38340>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff88e3d760>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/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 0xffff89e0c4d0>
    @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 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff87c38340>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff88e3d760>
    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 0xffff89e0c4d0>
method = <bound method TestAPIv3Builds.test_v3_builds of <test_builds.TestAPIv3Builds object at 0xffff89e0c4d0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff88e4d0d0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff88e4d130>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff89917ec0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff87c392c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff88e4d130>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/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 0xffff89e0f8f0>
    @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 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff87c392c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff88e4d130>
    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 0xffff89e0f8f0>
method = <bound method TestAPIv3Builds.test_v3_builds of <test_builds.TestAPIv3Builds object at 0xffff89e0f8f0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff88dc84a0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff88dc8500>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff89917ec0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff87a3d140>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff88dc8500>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/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 0xffff89e0f860>
    @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 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff87a3d140>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff88dc8500>
    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 0xffff89e0f860>
method = <bound method TestAPIv3Builds.test_v3_builds of <test_builds.TestAPIv3Builds object at 0xffff89e0f860>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff88d619d0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff88d62300>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff89917ec0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff875e7d40>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff88d62300>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/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 0xffff89d596a0>
    @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 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff875e7d40>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff88d62300>
    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 0xffff89d596a0>
method = <bound method TestAPIv3Builds.test_v3_builds of <test_builds.TestAPIv3Builds object at 0xffff89d596a0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff892f1160>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff892f11c0>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff89917ec0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff8750fcc0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff892f11c0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/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 0xffff89d586e0>
    @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 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff8750fcc0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff892f11c0>
    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 0xffff89d586e0>
method = <bound method TestAPIv3Builds.test_v3_builds of <test_builds.TestAPIv3Builds object at 0xffff89d586e0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff889bbd10>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff8834a0f0>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff89917ec0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff875e0740>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff8834a0f0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/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 0xffff89d588c0>
    @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 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff875e0740>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff8834a0f0>
    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 0xffff89d588c0>
method = <bound method TestAPIv3Builds.test_v3_builds of <test_builds.TestAPIv3Builds object at 0xffff89d588c0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff88dc9190>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff88dc91f0>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff89917ec0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff87a3c7c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff88dc91f0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/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 0xffff89d59580>
    @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 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff87a3c7c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff88dc91f0>
    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 0xffff89d59580>
method = <bound method TestAPIv3Builds.test_v3_builds of <test_builds.TestAPIv3Builds object at 0xffff89d59580>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff8828d9a0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff88dc9100>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff89917ec0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff871c8b40>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff88dc9100>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/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 0xffff89d59820>
    @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 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff871c8b40>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff88dc9100>
    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 0xffff89d59820>
method = <bound method TestAPIv3Builds.test_v3_builds of <test_builds.TestAPIv3Builds object at 0xffff89d59820>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff88dca1b0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff88c30e90>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff89917ec0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff878a4540>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff88c30e90>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/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 0xffff89d59d30>
    @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 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff878a4540>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff88c30e90>
    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 0xffff89d59d30>
method = <bound method TestAPIv3Builds.test_v3_builds of <test_builds.TestAPIv3Builds object at 0xffff89d59d30>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff88bd42f0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff88bd4350>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff89917ec0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff8785bc40>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff88bd4350>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/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 0xffff89d5ac30>
    @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 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff8785bc40>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff88bd4350>
    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 0xffff89d5ac30>
method = <bound method TestAPIv3Builds.test_v3_builds of <test_builds.TestAPIv3Builds object at 0xffff89d5ac30>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff88bd7c20>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff88bd7c80>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff89917ec0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff873ba340>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff88bd7c80>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/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 0xffff89d5af00>
    @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 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff873ba340>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff88bd7c80>
    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 0xffff89d5af00>
method = <bound method TestAPIv3Builds.test_v3_builds of <test_builds.TestAPIv3Builds object at 0xffff89d5af00>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff88b86ea0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff88b86f00>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff89917ec0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff8785be40>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff88b86f00>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/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 0xffff89d5b590>
    @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 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff8785be40>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff88b86f00>
    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 0xffff89d5b590>
method = <bound method TestAPIv3Builds.test_v3_builds of <test_builds.TestAPIv3Builds object at 0xffff89d5b590>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff88bd2060>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff88bd20c0>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff89917ec0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff877c72c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff88bd20c0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/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 0xffff89d591f0>
    @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 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff877c72c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff88bd20c0>
    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 0xffff89d591f0>
method = <bound method TestAPIv3Builds.test_v3_builds of <test_builds.TestAPIv3Builds object at 0xffff89d591f0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff88c30e30>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff88c32960>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff89917ec0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff8750e1c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff88c32960>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/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 0xffff89d59ee0>
    @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 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff8750e1c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff88c32960>
    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 0xffff89d59ee0>
method = <bound method TestAPIv3Builds.test_v3_builds of <test_builds.TestAPIv3Builds object at 0xffff89d59ee0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff88e3d880>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff88e3d610>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff89917ec0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff8785b040>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff88e3d610>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/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 0xffff89d58170>
    @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 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff8785b040>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff88e3d610>
    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 0xffff89d58170>
method = <bound method TestAPIv3Builds.test_v3_build_failure of <test_builds.TestAPIv3Builds object at 0xffff89d58170>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff88dca2d0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff88dca450>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff89917ec0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff871ac7c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff88dca450>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/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 0xffff89d582c0>
    @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 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff871ac7c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff88dca450>
    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 0xffff89d582c0>
method = <bound method TestAPIv3Builds.test_v3_build_failure of <test_builds.TestAPIv3Builds object at 0xffff89d582c0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff88bc0140>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff88bc01a0>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff89917ec0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff878a5940>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff88bc01a0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/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 0xffff89d58410>
    @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 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff878a5940>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff88bc01a0>
    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 0xffff89d58410>
method = <bound method TestAPIv3Builds.test_v3_get_build of <test_builds.TestAPIv3Builds object at 0xffff89d58410>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff88bc33b0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff88bc3410>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff89917ec0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff87d72b40>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff88bc3410>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/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 0xffff89d587a0>
    @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 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff87d72b40>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff88bc3410>
    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 0xffff89d587a0>
method = <bound method TestAPIv3Builds.test_v3_builds_exclude_chroots of <test_builds.TestAPIv3Builds object at 0xffff89d587a0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff88b705c0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff88b70830>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff89917ec0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff873bb740>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff88b70830>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/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 0xffff89d58c50>
    @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 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff873bb740>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff88b70830>
    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 0xffff89d58c50>
method = <bound method TestAPIv3Builds.test_v3_builds_exclude_chroots of <test_builds.TestAPIv3Builds object at 0xffff89d58c50>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff8840d550>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff8840d5b0>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff89917ec0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff87d736c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff8840d5b0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/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 0xffff89d58d40>
    @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 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff87d736c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff8840d5b0>
    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 0xffff89d58d40>
method = <bound method TestAPIv3Builds.test_v3_builds_exclude_chroots of <test_builds.TestAPIv3Builds object at 0xffff89d58d40>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff883b0980>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff883b09e0>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff89917ec0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff87620a40>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff883b09e0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/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 0xffff89d58e60>
    @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 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff87620a40>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff883b09e0>
    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 0xffff89d58e60>
method = <bound method TestAPIv3Builds.test_v3_builds_exclude_chroots of <test_builds.TestAPIv3Builds object at 0xffff89d58e60>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff88444f80>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff88444fb0>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff89917ec0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff86fb5cc0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff88444fb0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/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 0xffff89d58f80>
    @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 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff86fb5cc0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff88444fb0>
    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 0xffff89d58f80>
method = <bound method TestAPIv3Builds.test_v3_builds_exclude_chroots of <test_builds.TestAPIv3Builds object at 0xffff89d58f80>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff8840ff20>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff883b2ea0>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff89917ec0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff87212940>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff883b2ea0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/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 0xffff89d590a0>
    @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 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff87212940>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff883b2ea0>
    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 0xffff89d590a0>
method = <bound method TestAPIv3Builds.test_v3_builds_exclude_chroots of <test_builds.TestAPIv3Builds object at 0xffff89d590a0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff8840ebd0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff883b3b60>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff89917ec0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff87514b40>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff883b3b60>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/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 0xffff89d59280>
    @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 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff87514b40>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff883b3b60>
    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 0xffff89d59280>
method = <bound method TestAPIv3Builds.test_v3_builds_exclude_chroots of <test_builds.TestAPIv3Builds object at 0xffff89d59280>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff884477a0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff88447620>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff89917ec0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff87859740>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff88447620>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/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 0xffff89d59340>
    @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 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff87859740>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff88447620>
    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 0xffff89d59340>
method = <bound method TestAPIv3Builds.test_v3_builds_exclude_chroots of <test_builds.TestAPIv3Builds object at 0xffff89d59340>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff88bc3770>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff88bc3b00>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff89917ec0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff871ac0c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff88bc3b00>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/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 0xffff89d5a180>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff871ac0c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff88bc3b00>
    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 0xffff89d5a180>
method = <bound method TestWebUIBuilds.test_isolation_option_set of <test_builds.TestWebUIBuilds object at 0xffff89d5a180>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff88b87bf0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff88b84a10>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff89917ec0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff87654ec0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff88b84a10>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/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 0xffff89d5b290>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff87654ec0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff88b84a10>
    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 0xffff89d5b290>
method = <bound method TestAPIv3BuildsResults.test_build_built_packages of <test_builds.TestAPIv3BuildsResults object at 0xffff89d5b290>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff88bd2a80>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff88bd1820>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff89917ec0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff872116c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff88bd1820>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/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 0xffff89fa6690>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff872116c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff88bd1820>
    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 0xffff89fa6690>
method = <bound method TestCoprChroots.test_edit_chroot_form of <test_copr_chroot.TestCoprChroots object at 0xffff89fa6690>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff8843cd10>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff8843cd70>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff89917ec0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff87656040>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff8843cd70>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/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 0xffff89fa4620>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff87656040>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff8843cd70>
    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 0xffff89fa4620>
method = <bound method TestCoprChroots.test_v3_edit_chroot of <test_copr_chroot.TestCoprChroots object at 0xffff89fa4620>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff8843fcb0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff8843fd10>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff89917ec0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff87516d40>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff8843fd10>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/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 0xffff89fa4920>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff87516d40>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff8843fd10>
    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 0xffff89fa4920>
method = <bound method TestCoprChroots.test_v3_edit_chroot_reset of <test_copr_chroot.TestCoprChroots object at 0xffff89fa4920>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff883f69c0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff883f6a20>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff89917ec0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff87656bc0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff883f6a20>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/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 0xffff89fa4c80>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff87656bc0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff883f6a20>
    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 0xffff89fa4c80>
method = <bound method TestCoprChroots.test_edit_chroot_permission of <test_copr_chroot.TestCoprChroots object at 0xffff89fa4c80>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff87fcd340>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff87fcd3a0>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff89917ec0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff87019140>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff87fcd3a0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/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 0xffff89fa4fe0>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff87019140>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff87fcd3a0>
    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 0xffff89fa4fe0>
method = <bound method TestCoprChroots.test_edit_chroot_form_error of <test_copr_chroot.TestCoprChroots object at 0xffff89fa4fe0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff883ac680>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff883ac710>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff89917ec0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff87195640>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff883ac710>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/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 0xffff89fa5070>
    @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 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff87195640>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff883ac710>
    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 0xffff89fa5070>
method = <bound method TestCoprDir.test_custom_copr_dir of <test_coprdirs.TestCoprDir object at 0xffff89fa5070>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff87f80230>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff87f802c0>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff89917ec0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff86fad8c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff87f802c0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/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 0xffff89fa5610>
    @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 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff86fad8c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff87f802c0>
    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 0xffff89fa5610>
method = <bound method TestCoprDir.test_custom_dir_validation of <test_coprdirs.TestCoprDir object at 0xffff89fa5610>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_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 0xffff89fa7080>
method = <bound method TestMockChroot.test_list_available_chroots of <test_mock_chroot.TestMockChroot object at 0xffff89fa7080>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.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 0xffff8843d610>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff8843d760>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff89917ec0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff88094140>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff8843d760>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/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 0xffff89e48a40>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff88094140>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff8843d760>
    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 0xffff89e48a40>
method = <bound method TestAPIv3Monitor.test_v3_monitor of <test_monitor.TestAPIv3Monitor object at 0xffff89e48a40>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff889d53d0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff89d591c0>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff89917ec0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff878a4b40>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff89d591c0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/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 0xffff89e48c50>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff878a4b40>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff89d591c0>
    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 0xffff89e48c50>
method = <bound method TestAPIv3Monitor.test_v3_monitor of <test_monitor.TestAPIv3Monitor object at 0xffff89e48c50>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff87f810a0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff87f83ce0>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff89917ec0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff880957c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff87f83ce0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/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 0xffff89e48ce0>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff880957c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff87f83ce0>
    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 0xffff89e48ce0>
method = <bound method TestAPIv3Monitor.test_v3_monitor of <test_monitor.TestAPIv3Monitor object at 0xffff89e48ce0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff87fb4950>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff87fb4a10>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff89917ec0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff87656bc0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff87fb4a10>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/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 0xffff89e48d70>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff87656bc0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff87fb4a10>
    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 0xffff89e48d70>
method = <bound method TestAPIv3Monitor.test_v3_monitor of <test_monitor.TestAPIv3Monitor object at 0xffff89e48d70>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff87fb7e60>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff87fb7ec0>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff89917ec0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff875176c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff87fb7ec0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/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 0xffff89e48e30>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff875176c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff87fb7ec0>
    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 0xffff89e48e30>
method = <bound method TestAPIv3Monitor.test_v3_monitor_empty_project of <test_monitor.TestAPIv3Monitor object at 0xffff89e48e30>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff87f6eb70>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff87f6ebd0>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff89917ec0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff86f18ec0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff87f6ebd0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/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 0xffff89e49070>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff86f18ec0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff87f6ebd0>
    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 0xffff89e49070>
method = <bound method TestAPIv3Monitor.test_v3_monitor_multi_chroot of <test_monitor.TestAPIv3Monitor object at 0xffff89e49070>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff87f944d0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff87f96bd0>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff89917ec0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff88094ec0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff87f96bd0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/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 0xffff89e492b0>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff88094ec0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff87f96bd0>
    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 0xffff89e492b0>
method = <bound method TestAPIv3Monitor.test_v3_monitor_source_build of <test_monitor.TestAPIv3Monitor object at 0xffff89e492b0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff87fae270>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff87fae2d0>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff89917ec0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff876c3f40>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff87fae2d0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/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 0xffff89e4aa80>
    @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 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff876c3f40>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff87fae2d0>
    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 0xffff89e4aa80>
method = <bound method TestAPIv3Packages.test_v3_packages of <test_packages.TestAPIv3Packages object at 0xffff89e4aa80>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff87c70050>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff87c70110>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff89917ec0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff872c4440>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff87c70110>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/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 0xffff89e4ade0>
    @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 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff872c4440>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff87c70110>
    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 0xffff89e4ade0>
method = <bound method TestAPIv3Packages.test_v3_packages of <test_packages.TestAPIv3Packages object at 0xffff89e4ade0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff87fadc10>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff87fae210>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff89917ec0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff870f02c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff87fae210>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/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 0xffff89e4ae70>
    @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 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff870f02c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff87fae210>
    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 0xffff89e4ae70>
method = <bound method TestAPIv3Packages.test_v3_packages of <test_packages.TestAPIv3Packages object at 0xffff89e4ae70>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff889ee900>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff89751160>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff89917ec0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff876c2dc0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff89751160>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/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 0xffff89e4af00>
    @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 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff876c2dc0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff89751160>
    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 0xffff89e4af00>
method = <bound method TestAPIv3Packages.test_v3_packages of <test_packages.TestAPIv3Packages object at 0xffff89e4af00>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff87fce960>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff889eddf0>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff89917ec0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff872c5b40>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff889eddf0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/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 0xffff89e4af90>
    @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 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff872c5b40>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff889eddf0>
    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 0xffff89e4af90>
method = <bound method TestAPIv3Packages.test_v3_packages of <test_packages.TestAPIv3Packages object at 0xffff89e4af90>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff87fb5100>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff87fb5190>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff89917ec0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff87655040>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff87fb5190>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/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 0xffff89e4b020>
    @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 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff87655040>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff87fb5190>
    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 0xffff89e4b020>
method = <bound method TestAPIv3Packages.test_v3_packages of <test_packages.TestAPIv3Packages object at 0xffff89e4b020>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff87f82a50>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff87f80440>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff89917ec0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff874ec140>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff87f80440>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/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 0xffff89e4b0b0>
    @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 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff874ec140>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff87f80440>
    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 0xffff89e4b0b0>
method = <bound method TestAPIv3Packages.test_v3_packages of <test_packages.TestAPIv3Packages object at 0xffff89e4b0b0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff87c83e90>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff87c837d0>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff89917ec0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff8720b4c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff87c837d0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/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 0xffff89e4b140>
    @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 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff8720b4c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff87c837d0>
    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 0xffff89e4b140>
method = <bound method TestAPIv3Packages.test_v3_packages of <test_packages.TestAPIv3Packages object at 0xffff89e4b140>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff87c50350>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff87c50440>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff89917ec0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff878e40c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff87c50440>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/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 0xffff89e4bec0>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff878e40c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff87c50440>
    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 0xffff89e4bec0>
method = <bound method TestApiv3ProjectChroots.test_edit_project_chroot_api of <test_project_chroots.TestApiv3ProjectChroots object at 0xffff89e4bec0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff87c74d70>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff87c75040>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff89917ec0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff86d50e40>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff87c75040>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/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 0xffff89e343e0>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff86d50e40>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff87c75040>
    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 0xffff89e343e0>
method = <bound method TestApiv3Projects.test_get_project_list_order of <test_projects.TestApiv3Projects object at 0xffff89e343e0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff87c77e30>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff87c77e90>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff89917ec0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff872080c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff87c77e90>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/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 0xffff89e44110>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff872080c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff87c77e90>
    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 0xffff89e44110>
method = <bound method TestApiv3Projects.test_compat_bootstrap_config of <test_projects.TestApiv3Projects object at 0xffff89e44110>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff87d4aba0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff87d4ac00>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff89917ec0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff87103040>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff87d4ac00>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/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 0xffff89e44830>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff87103040>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff87d4ac00>
    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 0xffff89e44830>
method = <bound method TestApiv3Projects.test_compat_bootstrap_config of <test_projects.TestApiv3Projects object at 0xffff89e44830>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff89218ef0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff89218f20>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff89917ec0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff878e5d40>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff89218f20>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/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 0xffff89e44380>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff878e5d40>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff89218f20>
    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 0xffff89e44380>
method = <bound method TestApiv3Projects.test_isolation_config of <test_projects.TestApiv3Projects object at 0xffff89e44380>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff89164ce0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff89164d40>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff89917ec0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff87101ac0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff89164d40>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/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 0xffff89e44500>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff87101ac0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff89164d40>
    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 0xffff89e44500>
method = <bound method TestApiv3Projects.test_isolation_config of <test_projects.TestApiv3Projects object at 0xffff89e44500>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff87c75430>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff87c75460>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff89917ec0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff874efac0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff87c75460>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/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 0xffff89e44590>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff874efac0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff87c75460>
    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 0xffff89e44590>
method = <bound method TestApiv3Projects.test_isolation_config of <test_projects.TestApiv3Projects object at 0xffff89e44590>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff87fb4e60>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff87fb7f80>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff898d4320>
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 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff878f5140>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff87fb7f80>
    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 0xffff89e44620>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.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 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff878f5140>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff87fb7f80>
    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 0xffff89e44620>
method = <bound method TestApiv3Projects.test_update_copr_api3 of <test_projects.TestApiv3Projects object at 0xffff89e44620>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff87c70080>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff89e4b1d0>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff89917ec0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff8755cec0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff89e4b1d0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/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 0xffff89e45730>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff8755cec0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff89e4b1d0>
    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 0xffff89e45730>
method = <bound method TestApiv3Projects.test_fedora_review_setting of <test_projects.TestApiv3Projects object at 0xffff89e45730>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff89165a60>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff89166960>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff89917ec0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff8710b940>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff89166960>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/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 0xffff89e46090>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff8710b940>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff89166960>
    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 0xffff89e46090>
method = <bound method TestApiv3Projects.test_regenerate_repos of <test_projects.TestApiv3Projects object at 0xffff89e46090>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff89234f80>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff89235010>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff89917ec0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff87a046c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff89235010>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/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 0xffff89e4c8f0>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff87a046c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff89235010>
    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 0xffff89e4c8f0>
method = <bound method TestApiV3Permissions.test_perms_get_require_admin of <test_projects.TestApiV3Permissions object at 0xffff89e4c8f0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff89168230>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff89168320>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff89917ec0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff884925c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff89168320>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/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 0xffff89e4e450>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff884925c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff89168320>
    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 0xffff89e4e450>
method = <bound method TestApiV3Permissions.test_no_permission_set of <test_projects.TestApiV3Permissions object at 0xffff89e4e450>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff8916b440>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff8916b530>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff89917ec0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff87a5cf40>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff8916b530>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/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 0xffff89e4f7a0>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff87a5cf40>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff8916b530>
    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 0xffff89e4f7a0>
method = <bound method TestApiV3Permissions.test_perms_accessible_by_user of <test_projects.TestApiV3Permissions object at 0xffff89e4f7a0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff89202600>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff89202690>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff89917ec0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff87602540>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff89202690>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/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 0xffff89e4c260>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff87602540>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff89202690>
    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 0xffff89e4c260>
method = <bound method TestApiV3Permissions.test_perms_set_require_admin of <test_projects.TestApiV3Permissions object at 0xffff89e4c260>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff8922d0a0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff8922d2e0>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff89917ec0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff87a5f440>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff8922d2e0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/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 0xffff89e4c530>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff87a5f440>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff8922d2e0>
    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 0xffff89e4c530>
method = <bound method TestApiV3Permissions.test_set_bad_data of <test_projects.TestApiV3Permissions object at 0xffff89e4c530>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff891b1160>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff891b11f0>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff89917ec0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff8755e1c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff891b11f0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/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 0xffff89e4c860>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff8755e1c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff891b11f0>
    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 0xffff89e4c860>
method = <bound method TestApiV3Permissions.test_settable of <test_projects.TestApiV3Permissions object at 0xffff89e4c860>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff87ef5010>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff87ef51f0>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff89917ec0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff86d502c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff87ef51f0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/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 0xffff89e4cb30>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff86d502c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff87ef51f0>
    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 0xffff89e4cb30>
method = <bound method TestApiV3Permissions.test_cant_readd_owner of <test_projects.TestApiV3Permissions object at 0xffff89e4cb30>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff8916bf50>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff89168080>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff89917ec0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff86d53ec0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff89168080>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/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 0xffff89e4ce00>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff86d53ec0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff89168080>
    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 0xffff89e4ce00>
method = <bound method TestApiV3Permissions.test_request_invalid of <test_projects.TestApiV3Permissions object at 0xffff89e4ce00>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff892f0ad0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff892015b0>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff89917ec0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff876ad4c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff892015b0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/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 0xffff89e4d0a0>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff876ad4c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff892015b0>
    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 0xffff89e4d0a0>
method = <bound method TestApiV3Permissions.test_request_valid of <test_projects.TestApiV3Permissions object at 0xffff89e4d0a0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff87f81fd0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff87f94320>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff898d4320>
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 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff876c7c40>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff87f94320>
    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 0xffff89e4d370>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.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 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff876c7c40>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff87f94320>
    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 0xffff89e4d370>
method = <bound method TestApiV3Permissions.test_perms_set_sends_emails of <test_projects.TestApiV3Permissions object at 0xffff89e4d370>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff87d4b5f0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff892197f0>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff898d4320>
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 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff87602140>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff892197f0>
    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 0xffff89e4d610>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.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 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff87602140>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff892197f0>
    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 0xffff89e4d610>
method = <bound method TestApiV3Permissions.test_perms_set_sends_emails_2 of <test_projects.TestApiV3Permissions object at 0xffff89e4d610>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff87ed0b00>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff87ed0b60>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff89917ec0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff87a5f8c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff87ed0b60>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/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 0xffff89e4d850>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff87a5f8c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff87ed0b60>
    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 0xffff89e4d850>
method = <bound method TestApiV3Permissions.test_add_exist_ok of <test_projects.TestApiV3Permissions object at 0xffff89e4d850>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff891b05f0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff87ef66f0>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff89917ec0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff87600240>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff87ef66f0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/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 0xffff89e4cdd0>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff87600240>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff87ef66f0>
    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 0xffff89e4cdd0>
method = <bound method TestApiRPMRepo.test_apiv3_rpmrepo_external_deps of <test_rpmrepo.TestApiRPMRepo object at 0xffff89e4cdd0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff891b35c0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff87ed2c30>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff89917ec0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff8755ff40>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff87ed2c30>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/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 0xffff89e4daf0>
    @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 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff8755ff40>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff87ed2c30>
    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 0xffff89e4daf0>
method = <bound method TestApiRPMRepo.test_apiv3_rpmrepo_multilib of <test_rpmrepo.TestApiRPMRepo object at 0xffff89e4daf0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff87f2d520>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff87f2d580>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff89917ec0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff86ff2a40>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff87f2d580>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/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 0xffff89e4df10>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff86ff2a40>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff87f2d580>
    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 0xffff89e4df10>
method = <bound method TestApiRPMRepo.test_apiv3_rpmrepo_dirs of <test_rpmrepo.TestApiRPMRepo object at 0xffff89e4df10>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff87e683e0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff87e68440>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff89917ec0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff86e8b4c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff87e68440>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/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 0xffff89d9d5b0>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff86e8b4c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff87e68440>
    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 0xffff89d9d5b0>
method = <bound method TestCreateChrootCommand.test_create_chroot_with_comments of <test_create_chroots.TestCreateChrootCommand object at 0xffff89d9d5b0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff87e6b230>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff87e6b290>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff89917ec0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff878545c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff87e6b290>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/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 0xffff89d9c890>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff878545c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff87e6b290>
    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 0xffff89d9c890>
method = <bound method TestDeleteOutdatedChroots.test_delete_outdated of <test_delete_outdated_chroots.TestDeleteOutdatedChroots object at 0xffff89d9c890>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff87f2dc40>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff87f2dca0>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff89917ec0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff87e008c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff87f2dca0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/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 0xffff89d9cb00>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff87e008c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff87f2dca0>
    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 0xffff89d9cb00>
method = <bound method TestDeleteOutdatedChroots.test_delete_outdated_yesterday of <test_delete_outdated_chroots.TestDeleteOutdatedChroots object at 0xffff89d9cb00>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff89167680>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff89166960>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff89917ec0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff86d50b40>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff89166960>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/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 0xffff89d9ce60>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff86d50b40>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff89166960>
    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 0xffff89d9ce60>
method = <bound method TestDeleteOutdatedChroots.test_delete_outdated_not_yet of <test_delete_outdated_chroots.TestDeleteOutdatedChroots object at 0xffff89d9ce60>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff891b1310>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff891b29c0>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff89917ec0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff86fa08c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff891b29c0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/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 0xffff89d9d130>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff86fa08c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff891b29c0>
    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 0xffff89d9d130>
method = <bound method TestDeleteOutdatedChroots.test_delete_outdated_handle_none_notify of <test_delete_outdated_chroots.TestDeleteOutdatedChroots object at 0xffff89d9d130>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff88e8a5d0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff88e8a7b0>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff89917ec0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff8793d8c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff88e8a7b0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/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 0xffff89d9d3a0>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff8793d8c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff88e8a7b0>
    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 0xffff89d9d3a0>
method = <bound method TestDeleteOutdatedChroots.test_delete_unclicked of <test_delete_outdated_chroots.TestDeleteOutdatedChroots object at 0xffff89d9d3a0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff88e8bd70>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff88e8be90>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff89917ec0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff87e01140>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff88e8be90>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/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 0xffff89d9d310>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff87e01140>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff88e8be90>
    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 0xffff89d9d310>
method = <bound method TestNotifyOutdatedChroots.test_user_chroots_map of <test_notify_outdated_chroots.TestNotifyOutdatedChroots object at 0xffff89d9d310>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff88ec2f00>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff88ec2ff0>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff89917ec0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff87ad4ac0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff88ec2ff0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/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 0xffff89d9ec00>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff87ad4ac0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff88ec2ff0>
    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 0xffff89d9ec00>
method = <bound method TestNotifyOutdatedChroots.test_user_chroots_map_permissions of <test_notify_outdated_chroots.TestNotifyOutdatedChroots object at 0xffff89d9ec00>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff88f0dbe0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff88f0dc40>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff89917ec0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff86ff2340>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff88f0dc40>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/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 0xffff89d9eea0>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff86ff2340>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff88f0dc40>
    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 0xffff89d9eea0>
method = <bound method TestNotifyOutdatedChroots.test_user_chroots_map_email of <test_notify_outdated_chroots.TestNotifyOutdatedChroots object at 0xffff89d9eea0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff88f3d220>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff88f3d280>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff89917ec0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff87058bc0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff88f3d280>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/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 0xffff89d9f0e0>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff87058bc0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff88f3d280>
    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 0xffff89d9f0e0>
method = <bound method TestNotifyOutdatedChroots.test_filter_chroots of <test_notify_outdated_chroots.TestNotifyOutdatedChroots object at 0xffff89d9f0e0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff88eb0260>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff88eb02c0>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff89917ec0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff86e8b340>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff88eb02c0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/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 0xffff89d9f380>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff86e8b340>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff88eb02c0>
    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 0xffff89d9f380>
method = <bound method TestNotifyOutdatedChroots.test_notify_outdated_chroots of <test_notify_outdated_chroots.TestNotifyOutdatedChroots object at 0xffff89d9f380>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff88eb3110>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff88eb3170>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff89917ec0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff876ad2c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff88eb3170>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/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 0xffff89d9f650>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff876ad2c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff88eb3170>
    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 0xffff89d9f650>
method = <bound method TestNotifyOutdatedChroots.test_notify_outdated_chroots_email_filter of <test_notify_outdated_chroots.TestNotifyOutdatedChroots object at 0xffff89d9f650>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff87b01730>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff87b01820>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff898d4320>
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 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff872ee540>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff87b01820>
    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 0xffff89d2deb0>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.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 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff872ee540>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff87b01820>
    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 0xffff89d2deb0>
method = <function TestRawhideToRelease.test_rawhide_to_release_action at 0xffff89cbcea0>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff88f3f0e0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff88f3f650>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff89917ec0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff8793ff40>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff88f3f650>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/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 0xffff89d2f5c0>
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 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff8793ff40>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff88f3f650>
    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 0xffff89d2f5c0>
method = <bound method TestBranchFedora.test_branch_fedora of <test_rawhide_to_release.TestBranchFedora object at 0xffff89d2f5c0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff88ec03e0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff88ec04a0>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff898d4320>
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 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff87dcaf40>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff88ec04a0>
    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 0xffff89c90f80>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.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 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff87dcaf40>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff88ec04a0>
    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 0xffff89c90f80>
method = <bound method TestBatchesLogic.test_normal_batch_operation_failures of <test_batch_logic.TestBatchesLogic object at 0xffff89c90f80>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff89166330>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff89165760>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff898d4320>
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 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff86e88f40>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff89165760>
    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 0xffff89c90dd0>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.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 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff86e88f40>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff89165760>
    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 0xffff89c90dd0>
method = <bound method TestBatchesLogic.test_less_likely_batch_problems of <test_batch_logic.TestBatchesLogic object at 0xffff89c90dd0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff87e6ba10>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff87e6bb00>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff898d4320>
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 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff86f477c0>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff87e6bb00>
    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 0xffff89c905c0>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.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 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff86f477c0>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff87e6bb00>
    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 0xffff89c905c0>
method = <bound method TestBatchesLogic.test_cant_group_others_build of <test_batch_logic.TestBatchesLogic object at 0xffff89c905c0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff87af4410>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff87af44d0>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff898d4320>
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 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff86ff36c0>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff87af44d0>
    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 0xffff89c90860>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.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 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff86ff36c0>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff87af44d0>
    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 0xffff89c90860>
method = <bound method TestBatchesLogic.test_batched_build_queue_sql_performance of <test_batch_logic.TestBatchesLogic object at 0xffff89c90860>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff87af68a0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff87af6090>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff898d4320>
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 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff87257ec0>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff87af6090>
    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 0xffff89c90350>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.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 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff87257ec0>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff87af6090>
    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 0xffff89c90350>
method = <bound method TestBatchesLogic.test_large_batch_build_queue of <test_batch_logic.TestBatchesLogic object at 0xffff89c90350>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff87b42090>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff87b42120>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff89917ec0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff87ad7340>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff87b42120>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/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 0xffff89c929c0>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff87ad7340>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff87b42120>
    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 0xffff89c929c0>
method = <bound method TestBuildsLogic.test_add_only_adds_active_chroots of <test_builds_logic.TestBuildsLogic object at 0xffff89c929c0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff88ec1a60>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff87b41fa0>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff89917ec0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff875b6340>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff87b41fa0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/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 0xffff89c92030>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff875b6340>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff87b41fa0>
    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 0xffff89c92030>
method = <bound method TestBuildsLogic.test_build_still_active_chroots of <test_builds_logic.TestBuildsLogic object at 0xffff89c92030>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff87b286b0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff87b28770>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff898d4320>
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 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff87312ec0>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff87b28770>
    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 0xffff89c91ee0>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.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 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff87312ec0>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff87b28770>
    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 0xffff89c91ee0>
method = <bound method TestBuildsLogic.test_add_raises_if_copr_has_unfinished_actions of <test_builds_logic.TestBuildsLogic object at 0xffff89c91ee0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff87b2bd70>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff87b2bdd0>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff89917ec0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff86e7abc0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff87b2bdd0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/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 0xffff89c90e00>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff86e7abc0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff87b2bdd0>
    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 0xffff89c90e00>
method = <bound method TestBuildsLogic.test_add_assigns_params_correctly of <test_builds_logic.TestBuildsLogic object at 0xffff89c90e00>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff87acf110>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff87acf170>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff89917ec0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff87b7e440>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff87acf170>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/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 0xffff89c91af0>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff87b7e440>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff87acf170>
    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 0xffff89c91af0>
method = <bound method TestBuildsLogic.test_add_error_on_multiply_src of <test_builds_logic.TestBuildsLogic object at 0xffff89c91af0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff892368a0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff87acd880>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff89917ec0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff86dfa6c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff87acd880>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/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 0xffff89c91d00>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff86dfa6c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff87acd880>
    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 0xffff89c91d00>
method = <bound method TestBuildsLogic.test_build_queue_1 of <test_builds_logic.TestBuildsLogic object at 0xffff89c91d00>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff87b41a00>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff87b41bb0>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff89917ec0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff87ad6240>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff87b41bb0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/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 0xffff89cc75c0>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff87ad6240>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff87b41bb0>
    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 0xffff89cc75c0>
method = <bound method TestBuildsLogic.test_build_queue_2 of <test_builds_logic.TestBuildsLogic object at 0xffff89cc75c0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff88f3d550>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff88f3d640>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff89917ec0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff86d81ac0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff88f3d640>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/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 0xffff89cc70b0>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff86d81ac0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff88f3d640>
    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 0xffff89cc70b0>
method = <bound method TestBuildsLogic.test_build_queue_3 of <test_builds_logic.TestBuildsLogic object at 0xffff89cc70b0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff87af6a20>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff87af6bd0>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff89917ec0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff872ecac0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff87af6bd0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/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 0xffff89cc71a0>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff872ecac0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff87af6bd0>
    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 0xffff89cc71a0>
method = <bound method TestBuildsLogic.test_build_queue_4 of <test_builds_logic.TestBuildsLogic object at 0xffff89cc71a0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff87b4ad20>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff87b4adb0>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff89917ec0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff86f44fc0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff87b4adb0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/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 0xffff89cc6d80>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff86f44fc0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff87b4adb0>
    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 0xffff89cc6d80>
method = <bound method TestBuildsLogic.test_build_queue_5 of <test_builds_logic.TestBuildsLogic object at 0xffff89cc6d80>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff879be390>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff879be3f0>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff89917ec0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff8785e1c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff879be3f0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/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 0xffff89cc6c60>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff8785e1c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff879be3f0>
    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 0xffff89cc6c60>
method = <bound method TestBuildsLogic.test_build_queue_6 of <test_builds_logic.TestBuildsLogic object at 0xffff89cc6c60>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff879a8f20>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff879a8f80>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff89917ec0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff872ed1c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff879a8f80>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/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 0xffff89c92c00>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff872ed1c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff879a8f80>
    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 0xffff89c92c00>
method = <function TestBuildsLogic.test_build_queue_7 at 0xffff89ca7240>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff879bf9e0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff879aae70>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff89917ec0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff8785f0c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff879aae70>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/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 0xffff89e46b70>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff8785f0c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff879aae70>
    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 0xffff89e46b70>
method = <bound method TestBuildsLogic.test_delete_build_exceptions of <test_builds_logic.TestBuildsLogic object at 0xffff89e46b70>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff87a4f710>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff87a4fdd0>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff89917ec0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff86db2f40>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff87a4fdd0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/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 0xffff89c92a20>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff86db2f40>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff87a4fdd0>
    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 0xffff89c92a20>
method = <bound method TestBuildsLogic.test_delete_build_as_admin of <test_builds_logic.TestBuildsLogic object at 0xffff89c92a20>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff87a4fc20>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff87a4fcb0>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff89917ec0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff8726e340>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff87a4fcb0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/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 0xffff89c913a0>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff8726e340>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff87a4fcb0>
    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 0xffff89c913a0>
method = <bound method TestBuildsLogic.test_delete_build_no_resultdir of <test_builds_logic.TestBuildsLogic object at 0xffff89c913a0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff879bc3e0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff879bf080>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff89917ec0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff86d82840>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff879bf080>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/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 0xffff89c917f0>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff86d82840>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff879bf080>
    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 0xffff89c917f0>
method = <bound method TestBuildsLogic.test_delete_mulitple_builds_no_resultdir of <test_builds_logic.TestBuildsLogic object at 0xffff89c917f0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff87a88c50>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff87a8b3e0>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff89917ec0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff87dc8740>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff87a8b3e0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/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 0xffff89c901d0>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff87dc8740>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff87a8b3e0>
    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 0xffff89c901d0>
method = <bound method TestBuildsLogic.test_delete_build_basic of <test_builds_logic.TestBuildsLogic object at 0xffff89c901d0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff87a4f8f0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff87a4e270>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff89917ec0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff86d411c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff87a4e270>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/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 0xffff89cc6c00>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff86d411c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff87a4e270>
    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 0xffff89cc6c00>
method = <bound method TestBuildsLogic.test_delete_multiple_builds of <test_builds_logic.TestBuildsLogic object at 0xffff89cc6c00>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_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 0xffff89cc7b30>
method = <bound method TestBuildsLogic.test_resubmit_build_inherit_git_hash of <test_builds_logic.TestBuildsLogic object at 0xffff89cc7b30>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_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 0xffff89cc7830>
method = <bound method TestBuildsLogic.test_mark_as_failed of <test_builds_logic.TestBuildsLogic object at 0xffff89cc7830>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff87bd2960>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff87bd29f0>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff89917ec0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff863c02c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff87bd29f0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/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 0xffff89cc7170>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff863c02c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff87bd29f0>
    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 0xffff89cc7170>
method = <bound method TestBuildsLogic.test_build_garbage_collector_works of <test_builds_logic.TestBuildsLogic object at 0xffff89cc7170>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff87dcd460>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff87dcd490>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff89917ec0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff868af240>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff87dcd490>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/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 0xffff89cc68a0>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff868af240>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff87dcd490>
    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 0xffff89cc68a0>
method = <bound method TestBuildsLogic.test_no_active_chroot of <test_builds_logic.TestBuildsLogic object at 0xffff89cc68a0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff87e30da0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff87e30e00>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff89917ec0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff86d388c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff87e30e00>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/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 0xffff89cc6420>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff86d388c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff87e30e00>
    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 0xffff89cc6420>
method = <bound method TestBuildsLogic.test_create_new_from_upload_no_space_left of <test_builds_logic.TestBuildsLogic object at 0xffff89cc6420>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff87e33ce0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff87e33d40>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff89917ec0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff863c39c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff87e33d40>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/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 0xffff89cc5fa0>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff863c39c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff87e33d40>
    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 0xffff89cc5fa0>
method = <bound method TestBuildsLogic.test_package_assigned_to_build_initially of <test_builds_logic.TestBuildsLogic object at 0xffff89cc5fa0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff87d5e8d0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff87d5e9f0>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff89917ec0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff86c8e540>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff87d5e9f0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/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 0xffff89cc61e0>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff86c8e540>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff87d5e9f0>
    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 0xffff89cc61e0>
method = <bound method TestBuildsLogic.test_rebuild_all_packages of <test_builds_logic.TestBuildsLogic object at 0xffff89cc61e0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff87bd2ab0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff87bd2a20>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff89917ec0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff86d81f40>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff87bd2a20>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/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 0xffff89cc6480>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff86d81f40>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff87bd2a20>
    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 0xffff89cc6480>
method = <bound method TestBuildsLogic.test_package_rebuild_permission_error of <test_builds_logic.TestBuildsLogic object at 0xffff89cc6480>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff879be360>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff879bf980>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff89917ec0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff863ca0c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff879bf980>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/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 0xffff89c91820>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff863ca0c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff879bf980>
    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 0xffff89c91820>
method = <bound method TestBuildsLogic.test_package_not_updated_after_source_ready of <test_builds_logic.TestBuildsLogic object at 0xffff89c91820>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff87c4ba10>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff87c48fe0>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff89917ec0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff868ae4c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff87c48fe0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/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 0xffff89e46540>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff868ae4c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff87c48fe0>
    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 0xffff89e46540>
method = <bound method TestBuildsLogic.test_package_set_when_source_ready of <test_builds_logic.TestBuildsLogic object at 0xffff89e46540>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff87da3920>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff87da3290>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff89917ec0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff86c83640>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff87da3290>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/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 0xffff89cc7860>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff86c83640>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff87da3290>
    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 0xffff89cc7860>
method = <bound method TestBuildsLogic.test_srpm_upload of <test_builds_logic.TestBuildsLogic object at 0xffff89cc7860>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff87de4b90>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff87de5730>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff89917ec0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff868acac0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff87de5730>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/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 0xffff89cc57f0>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff868acac0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff87de5730>
    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 0xffff89cc57f0>
method = <bound method TestBuildsLogic.test_srpm_upload of <test_builds_logic.TestBuildsLogic object at 0xffff89cc57f0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff87de6510>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff87de5fd0>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff89917ec0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff86e53e40>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff87de5fd0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/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 0xffff89cc5910>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff86e53e40>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff87de5fd0>
    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 0xffff89cc5910>
method = <bound method TestBuildsLogic.test_srpm_upload of <test_builds_logic.TestBuildsLogic object at 0xffff89cc5910>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff87da8890>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff87da8980>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff89917ec0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff86c8f340>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff87da8980>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/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 0xffff89cc53d0>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff86c8f340>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff87da8980>
    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 0xffff89cc53d0>
method = <bound method TestBuildsLogic.test_temporary_data_removed of <test_builds_logic.TestBuildsLogic object at 0xffff89cc53d0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff87d94f80>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff87d94fe0>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff89917ec0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff86c83c40>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff87d94fe0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/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 0xffff89cc5400>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff86c83c40>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff87d94fe0>
    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 0xffff89cc5400>
method = <bound method TestBuildsLogic.test_temporary_data_removed of <test_builds_logic.TestBuildsLogic object at 0xffff89cc5400>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff87d96060>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff87d96930>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff89917ec0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff863c20c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff87d96930>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/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 0xffff89c6ebd0>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff863c20c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff87d96930>
    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 0xffff89c6ebd0>
method = <bound method TestComplexLogic.test_fork_copr_sends_actions of <test_complex_logic.TestComplexLogic object at 0xffff89c6ebd0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff884b5820>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff884b5910>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff89917ec0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff8640a5c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff884b5910>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/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 0xffff89c6edb0>
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 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff8640a5c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff884b5910>
    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 0xffff89c6edb0>
method = <bound method TestComplexLogic.test_fork_copr_projects_with_more_builds of <test_complex_logic.TestComplexLogic object at 0xffff89c6edb0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff885114f0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff885115e0>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff89917ec0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff86c107c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff885115e0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/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 0xffff89c6e2a0>
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 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff86c107c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff885115e0>
    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 0xffff89c6e2a0>
method = <bound method TestComplexLogic.test_fork_copr_with_eoled_chroots of <test_complex_logic.TestComplexLogic object at 0xffff89c6e2a0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff87dab860>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff87daa420>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff89917ec0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff86f38f40>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff87daa420>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/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 0xffff89c6e4e0>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff86f38f40>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff87daa420>
    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 0xffff89c6e4e0>
method = <bound method TestComplexLogic.test_delete_expired_coprs of <test_complex_logic.TestComplexLogic object at 0xffff89c6e4e0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff87da3e60>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff87da1a00>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff89917ec0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff86c82740>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff87da1a00>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/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 0xffff89c6d160>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff86c82740>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff87da1a00>
    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 0xffff89c6d160>
method = <bound method TestProjectForking.test_create_object of <test_complex_logic.TestProjectForking object at 0xffff89c6d160>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff87e305c0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff87e30e00>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff89917ec0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff868c1340>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff87e30e00>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/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 0xffff89c6d250>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff868c1340>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff87e30e00>
    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 0xffff89c6d250>
method = <bound method TestProjectForking.test_fork_build of <test_complex_logic.TestProjectForking object at 0xffff89c6d250>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff879bea80>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff879ab950>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff89917ec0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff86c13740>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff879ab950>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/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 0xffff89c6d640>
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 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff86c13740>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff879ab950>
    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 0xffff89c6d640>
method = <bound method TestProjectForking.test_fork_check_assigned_copr_chroot of <test_complex_logic.TestProjectForking object at 0xffff89c6d640>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff885491c0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff88549280>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff89917ec0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff86ba26c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff88549280>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/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 0xffff89c6c560>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff86ba26c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff88549280>
    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 0xffff89c6c560>
method = <bound method TestProjectForking.test_fork_package of <test_complex_logic.TestProjectForking object at 0xffff89c6c560>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff880a09b0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff880a0ef0>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff89917ec0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff86c11e40>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff880a0ef0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/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 0xffff89c6c6b0>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff86c11e40>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff880a0ef0>
    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 0xffff89c6c6b0>
method = <bound method TestProjectForking.test_fork_copr of <test_complex_logic.TestProjectForking object at 0xffff89c6c6b0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff8806cd70>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff8806ce00>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff89917ec0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff86904a40>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff8806ce00>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/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 0xffff89c6cc20>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff86904a40>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff8806ce00>
    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 0xffff89c6cc20>
method = <bound method TestProjectForking.test_forking_into_existing_project of <test_complex_logic.TestProjectForking object at 0xffff89c6cc20>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff88124170>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff88124200>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff89917ec0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff86921ec0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff88124200>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/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 0xffff89c6dd00>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff86921ec0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff88124200>
    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 0xffff89c6dd00>
method = <bound method TestProjectForking.test_copr_by_repo_safe of <test_complex_logic.TestProjectForking object at 0xffff89c6dd00>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff881272f0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff88127380>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff89917ec0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff868cff40>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff88127380>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/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 0xffff89c6c9e0>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff868cff40>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff88127380>
    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 0xffff89c6c9e0>
method = <bound method TestProjectForking.test_generate_build_config_with_dep_mistake of <test_complex_logic.TestProjectForking object at 0xffff89c6c9e0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff87de4b30>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff8854b980>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff89917ec0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff863c06c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff8854b980>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/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 0xffff89cc5dc0>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff863c06c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff8854b980>
    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 0xffff89cc5dc0>
method = <bound method TestReposLogic.test_delete_reasons of <test_complex_logic.TestReposLogic object at 0xffff89cc5dc0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff880a3dd0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff880a0d70>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff89917ec0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff86c51640>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff880a0d70>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/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 0xffff89c837d0>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff86c51640>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff880a0d70>
    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 0xffff89c837d0>
method = <bound method TestCoprDirsLogic.test_coprdir_cleanup_no_removal of <test_copr_dirs_logic.TestCoprDirsLogic object at 0xffff89c837d0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff87bd3230>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff87bd1fd0>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff89917ec0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff863cb540>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff87bd1fd0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/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 0xffff89c83b00>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff863cb540>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff87bd1fd0>
    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 0xffff89c83b00>
method = <bound method TestCoprDirsLogic.test_coprdir_cleanup_no_build of <test_copr_dirs_logic.TestCoprDirsLogic object at 0xffff89c83b00>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff88511b80>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff88511760>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff89917ec0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff8686b740>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff88511760>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/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 0xffff89c82a20>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff8686b740>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff88511760>
    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 0xffff89c82a20>
method = <bound method TestCoprDirsLogic.test_coprdir_cleanup_old_pr of <test_copr_dirs_logic.TestCoprDirsLogic object at 0xffff89c82a20>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff8887c2f0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff8887c350>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff89917ec0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff868b4040>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff8887c350>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/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 0xffff89c82c00>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff868b4040>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff8887c350>
    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 0xffff89c82c00>
method = <bound method TestCoprDirsLogic.test_coprdir_cleanup_one_prs of <test_copr_dirs_logic.TestCoprDirsLogic object at 0xffff89c82c00>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff88885e80>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff88885ee0>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff89917ec0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff868690c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff88885ee0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/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 0xffff89c82ed0>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff868690c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff88885ee0>
    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 0xffff89c82ed0>
method = <bound method TestCoprDirsLogic.test_coprdir_build_normal_then_pr of <test_copr_dirs_logic.TestCoprDirsLogic object at 0xffff89c82ed0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff8887f6e0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff8887d070>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff898d4320>
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 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff86c81840>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff8887d070>
    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 0xffff89c57230>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.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 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff86c81840>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff8887d070>
    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 0xffff89c57230>
method = <bound method TestCoprsLogic.test_legal_flag_doesnt_block_copr_functionality of <test_coprs_logic.TestCoprsLogic object at 0xffff89c57230>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff88914740>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff88914800>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff898d4320>
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 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff86352bc0>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff88914800>
    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 0xffff89c56bd0>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.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 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff86352bc0>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff88914800>
    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 0xffff89c56bd0>
method = <bound method TestCoprsLogic.test_fulltext_whooshee_return_all_hits of <test_coprs_logic.TestCoprsLogic object at 0xffff89c56bd0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_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 0xffff89c56060>
method = <bound method TestCoprsLogic.test_raise_if_cant_delete of <test_coprs_logic.TestCoprsLogic object at 0xffff89c56060>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_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 0xffff89c566f0>
method = <bound method TestCoprsLogic.test_raise_if_packit_forge_project_cant_build_in_copr of <test_coprs_logic.TestCoprsLogic object at 0xffff89c566f0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff888c76e0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff888c7740>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff89917ec0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff86ba23c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff888c7740>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/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 0xffff89c56630>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff86ba23c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff888c7740>
    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 0xffff89c56630>
method = <bound method TestCoprsLogic.test_copr_logic_add_sends_create_gpg_key_action of <test_coprs_logic.TestCoprsLogic object at 0xffff89c56630>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff88899640>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff888996a0>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff89917ec0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff86ae4740>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff888996a0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/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 0xffff89c556d0>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff86ae4740>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff888996a0>
    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 0xffff89c556d0>
method = <bound method TestCoprChrootsLogic.test_update_from_names of <test_coprs_logic.TestCoprChrootsLogic object at 0xffff89c556d0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff88874e90>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff88874ef0>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff89917ec0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff868c2cc0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff88874ef0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/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 0xffff89c54e90>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff868c2cc0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff88874ef0>
    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 0xffff89c54e90>
method = <bound method TestCoprChrootsLogic.test_update_from_names_delete_after of <test_coprs_logic.TestCoprChrootsLogic object at 0xffff89c54e90>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff88512930>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff885113d0>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff89917ec0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff86409640>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff885113d0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/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 0xffff89c55340>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff86409640>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff885113d0>
    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 0xffff89c55340>
method = <bound method TestCoprChrootsLogic.test_update_from_names_disabled of <test_coprs_logic.TestCoprChrootsLogic object at 0xffff89c55340>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff88061fa0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff880632c0>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff89917ec0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff863f7940>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff880632c0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/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 0xffff89c555b0>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff863f7940>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff880632c0>
    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 0xffff89c555b0>
method = <bound method TestCoprChrootsLogic.test_filter_outdated of <test_coprs_logic.TestCoprChrootsLogic object at 0xffff89c555b0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff88914f20>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff88914f80>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff89917ec0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff86351a40>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff88914f80>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/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 0xffff89c54b90>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff86351a40>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff88914f80>
    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 0xffff89c54b90>
method = <bound method TestCoprChrootsLogic.test_filter_outdated_to_be_deleted of <test_coprs_logic.TestCoprChrootsLogic object at 0xffff89c54b90>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff8806e870>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff88916d80>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff89917ec0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff868ac3c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff88916d80>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/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 0xffff89c54d70>
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 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff868ac3c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff88916d80>
    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 0xffff89c54d70>
method = <bound method TestCoprChrootsLogic.test_disabling_disallowed_when_build_runs of <test_coprs_logic.TestCoprChrootsLogic object at 0xffff89c54d70>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff88904bf0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff88904c80>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff89917ec0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff86a6d240>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff88904c80>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/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 0xffff89c56c30>
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 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff86a6d240>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff88904c80>
    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 0xffff89c56c30>
method = <bound method TestCoprChrootsLogic.test_chroot_reenable of <test_coprs_logic.TestCoprChrootsLogic object at 0xffff89c56c30>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff88864800>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff88864890>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff89917ec0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff86c8ddc0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff88864890>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/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 0xffff89c54530>
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 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff86c8ddc0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff88864890>
    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 0xffff89c54530>
method = <bound method TestCoprChrootsLogic.test_unclick_chroot_repeatedly of <test_coprs_logic.TestCoprChrootsLogic object at 0xffff89c54530>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff888665d0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff88867200>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff898d4320>
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 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff86c3d440>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff88867200>
    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 0xffff89c55520>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.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 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff86c3d440>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff88867200>
    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 0xffff89c55520>
method = <bound method TestPinnedCoprsLogic.test_pinned_projects of <test_coprs_logic.TestPinnedCoprsLogic object at 0xffff89c55520>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff881a10d0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff881a1910>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff898d4320>
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 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff86c03a40>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff881a1910>
    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 0xffff89c55190>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.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 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff86c03a40>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff881a1910>
    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 0xffff89c55190>
method = <bound method TestPinnedCoprsLogic.test_delete_project_that_is_pinned of <test_coprs_logic.TestPinnedCoprsLogic object at 0xffff89c55190>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff88200980>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff88200a40>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff898d4320>
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 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff86761fc0>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff88200a40>
    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 0xffff89c50fb0>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.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 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff86761fc0>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff88200a40>
    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 0xffff89c50fb0>
method = <bound method TestCoprsLogicAdminFeatures.test_add of <test_coprs_logic.TestCoprsLogicAdminFeatures object at 0xffff89c50fb0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff882035c0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff88202e40>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff898d4320>
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 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff86b7ea40>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff88202e40>
    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 0xffff89c51190>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.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 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff86b7ea40>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff88202e40>
    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 0xffff89c51190>
method = <bound method TestCoprsLogicAdminFeatures.test_add_someone_else_project of <test_coprs_logic.TestCoprsLogicAdminFeatures object at 0xffff89c51190>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff88917710>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff88914710>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff898d4320>
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 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff86868e40>
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 0xffff88914710>
    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 0xffff89c51370>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.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 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff86868e40>
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 0xffff88914710>
    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 0xffff89c51370>
method = <bound method TestCoprsLogicAdminFeatures.test_add_group_project of <test_coprs_logic.TestCoprsLogicAdminFeatures object at 0xffff89c51370>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_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 0xffff89c550d0>
method = <bound method TestChrootFormLogic.test_module_toggle_format of <test_coprs_logic.TestChrootFormLogic object at 0xffff89c550d0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff8887dca0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff8887cc20>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff898d4320>
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 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff8762f9c0>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff8887cc20>
    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 0xffff89c52ba0>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.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 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff8762f9c0>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff8887cc20>
    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 0xffff89c52ba0>
method = <bound method TestCoprScoreLogic.test_score_math of <test_coprs_logic.TestCoprScoreLogic object at 0xffff89c52ba0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff888751f0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff88917680>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff89917ec0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff86c016c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff88917680>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/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 0xffff89c537a0>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff86c016c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff88917680>
    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 0xffff89c537a0>
method = <bound method TestCoprSearchLogic.test_search_by_attributes of <test_coprs_logic.TestCoprSearchLogic object at 0xffff89c537a0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff88864ad0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff88867bf0>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff89917ec0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff863529c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff88867bf0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/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 0xffff89c5cf80>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff863529c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff88867bf0>
    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 0xffff89c5cf80>
method = <bound method TestModulesLogic.test_state of <test_modules_logic.TestModulesLogic object at 0xffff89c5cf80>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff8817fb60>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff8817fc20>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff89917ec0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff863f7dc0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff8817fc20>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/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 0xffff89c5f5c0>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff863f7dc0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff8817fc20>
    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 0xffff89c5f5c0>
method = <bound method TestModulesLogic.test_get_by_nsv_str of <test_modules_logic.TestModulesLogic object at 0xffff89c5f5c0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_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 0xffff89c5ee70>
method = <bound method TestModulesLogic.test_yaml2modulemd of <test_modules_logic.TestModulesLogic object at 0xffff89c5ee70>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_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 0xffff89c5ea80>
method = <bound method TestModulesLogic.test_from_modulemd of <test_modules_logic.TestModulesLogic object at 0xffff89c5ea80>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_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 0xffff89c5df40>
method = <bound method TestModuleBuildFacade.test_get_build_batches of <test_modules_logic.TestModuleBuildFacade object at 0xffff89c5df40>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_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 0xffff89c5d160>
method = <bound method TestModuleBuildFacade.test_buildorder_issue_599 of <test_modules_logic.TestModuleBuildFacade object at 0xffff89c5d160>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff881bf8c0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff881bf950>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff89917ec0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff863575c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff881bf950>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/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 0xffff89c5d820>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff863575c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff881bf950>
    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 0xffff89c5d820>
method = <bound method TestModuleBuildFacade.test_add_builds_batches of <test_modules_logic.TestModuleBuildFacade object at 0xffff89c5d820>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff881e5640>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff881e7b90>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff898d4320>
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 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff8762c540>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff881e7b90>
    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 0xffff89c5d490>
    @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 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff8762c540>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff881e7b90>
    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 0xffff89c5d490>
method = <bound method TestModuleBuildFacade.test_platform_chroots of <test_modules_logic.TestModuleBuildFacade object at 0xffff89c5d490>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff881e6f00>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff881be270>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff898d4320>
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 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff86267b40>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff881be270>
    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 0xffff89c5ca40>
    @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 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff86267b40>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff881be270>
    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 0xffff89c5ca40>
method = <bound method TestModuleBuildFacade.test_distgit_option of <test_modules_logic.TestModuleBuildFacade object at 0xffff89c5ca40>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_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 0xffff89c5d7c0>
method = <bound method TestModulemdGenerator.test_basic_mmd_attrs of <test_modules_logic.TestModulemdGenerator object at 0xffff89c5d7c0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_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 0xffff89c5ede0>
method = <bound method TestModulemdGenerator.test_api of <test_modules_logic.TestModulemdGenerator object at 0xffff89c5ede0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_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 0xffff89c5e600>
method = <bound method TestModulemdGenerator.test_filter of <test_modules_logic.TestModulemdGenerator object at 0xffff89c5e600>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_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 0xffff89c5c200>
method = <bound method TestModulemdGenerator.test_profiles of <test_modules_logic.TestModulemdGenerator object at 0xffff89c5c200>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff88607200>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff88607290>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff89917ec0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff86761040>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff88607290>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/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 0xffff89c5c440>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff86761040>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff88607290>
    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 0xffff89c5c440>
method = <bound method TestModulemdGenerator.test_components of <test_modules_logic.TestModulemdGenerator object at 0xffff89c5c440>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff8855cdd0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff8855ce60>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff89917ec0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff86357240>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff8855ce60>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/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 0xffff89c5e510>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff86357240>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff8855ce60>
    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 0xffff89c5e510>
method = <bound method TestModulemdGenerator.test_components_different_chroots of <test_modules_logic.TestModulemdGenerator object at 0xffff89c5e510>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_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 0xffff89c5e360>
method = <bound method TestModulemdGenerator.test_generate of <test_modules_logic.TestModulemdGenerator object at 0xffff89c5e360>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff88154800>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff881a1ee0>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff89917ec0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff8762e140>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff881a1ee0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/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 0xffff89caaea0>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff8762e140>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff881a1ee0>
    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 0xffff89caaea0>
method = <bound method TestOutdatedChrootsLogic.test_delete_status_outdated of <test_outdated_chroots_logic.TestOutdatedChrootsLogic object at 0xffff89caaea0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff88904f50>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff88907080>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff89917ec0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff86760fc0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff88907080>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/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 0xffff89caa750>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff86760fc0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff88907080>
    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 0xffff89caa750>
method = <bound method TestOutdatedChrootsLogic.test_delete_status_unclicked of <test_outdated_chroots_logic.TestOutdatedChrootsLogic object at 0xffff89caa750>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff88203710>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff882039b0>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff89917ec0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff86250ac0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff882039b0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/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 0xffff89caa8d0>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff86250ac0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff882039b0>
    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 0xffff89caa8d0>
method = <bound method TestOutdatedChrootsLogic.test_outdated_chroots_simple of <test_outdated_chroots_logic.TestOutdatedChrootsLogic object at 0xffff89caa8d0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff8855f680>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff8855f770>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff89917ec0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff86c3f540>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff8855f770>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/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 0xffff89caaba0>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff86c3f540>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff8855f770>
    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 0xffff89caaba0>
method = <bound method TestOutdatedChrootsLogic.test_outdated_chroots_group of <test_outdated_chroots_logic.TestOutdatedChrootsLogic object at 0xffff89caaba0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff885ba840>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff885ba8a0>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff89917ec0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff86a6d340>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff885ba8a0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/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 0xffff89caa030>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff86a6d340>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff885ba8a0>
    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 0xffff89caa030>
method = <bound method TestOutdatedChrootsLogic.test_outdated_chroots_flash_not_immediately of <test_outdated_chroots_logic.TestOutdatedChrootsLogic object at 0xffff89caa030>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff885684a0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff88568530>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff89917ec0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff86c3d2c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff88568530>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/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 0xffff89caa2a0>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff86c3d2c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff88568530>
    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 0xffff89caa2a0>
method = <bound method TestOutdatedChrootsLogic.test_outdated_chroots_flash_not_expired of <test_outdated_chroots_logic.TestOutdatedChrootsLogic object at 0xffff89caa2a0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff88564b60>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff88564bc0>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff89917ec0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff86250c40>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff88564bc0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/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 0xffff89ca99d0>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff86250c40>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff88564bc0>
    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 0xffff89ca99d0>
method = <bound method TestOutdatedChrootsLogic.test_outdated_chroots_review_only_after_some_time of <test_outdated_chroots_logic.TestOutdatedChrootsLogic object at 0xffff89ca99d0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff88567b30>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff88567b90>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff89917ec0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff86b283c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff88567b90>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/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 0xffff89ca98b0>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff86b283c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff88567b90>
    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 0xffff89ca98b0>
method = <bound method TestOutdatedChrootsLogic.test_outdated_chroots_extend_or_expire of <test_outdated_chroots_logic.TestOutdatedChrootsLogic object at 0xffff89ca98b0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff874b68a0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff874b6900>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff89917ec0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff875342c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff874b6900>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/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 0xffff89ca8f80>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff875342c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff874b6900>
    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 0xffff89ca8f80>
method = <bound method TestOutdatedChrootsLogic.test_outdated_chroots_humanized of <test_outdated_chroots_logic.TestOutdatedChrootsLogic object at 0xffff89ca8f80>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff87458a70>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff87458ad0>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff89917ec0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff864ad1c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff87458ad0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/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 0xffff89ca88c0>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff864ad1c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff87458ad0>
    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 0xffff89ca88c0>
method = <bound method TestOutdatedChrootsLogic.test_outdated_chroots_expired of <test_outdated_chroots_logic.TestOutdatedChrootsLogic object at 0xffff89ca88c0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff87470f80>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff87471010>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff89917ec0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff862d4440>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff87471010>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/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 0xffff89ca9640>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff862d4440>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff87471010>
    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 0xffff89ca9640>
method = <bound method TestOutdatedChrootsLogic.test_expired_chroot_detection of <test_outdated_chroots_logic.TestOutdatedChrootsLogic object at 0xffff89ca9640>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff88567200>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff88566720>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff89917ec0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff86c3e6c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff88566720>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/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 0xffff89ca93a0>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff86c3e6c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff88566720>
    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 0xffff89ca93a0>
method = <bound method TestOutdatedChrootsLogic.test_delete_outdated_unclicked of <test_outdated_chroots_logic.TestOutdatedChrootsLogic object at 0xffff89ca93a0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff885baa20>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff885baab0>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff89917ec0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff864af0c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff885baab0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/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 0xffff89ca8a10>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff864af0c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff885baab0>
    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 0xffff89ca8a10>
method = <bound method TestOutdatedChrootsLogic.test_outdated_unclicked_repeat of <test_outdated_chroots_logic.TestOutdatedChrootsLogic object at 0xffff89ca8a10>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff881bfa40>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff88566840>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff89917ec0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff862506c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff88566840>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/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 0xffff89ca9d90>
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 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff862506c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff88566840>
    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 0xffff89ca9d90>
method = <bound method TestPackagesLogic.test_last_successful_build_chroots of <test_packages_logic.TestPackagesLogic object at 0xffff89ca9d90>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_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 0xffff89ca9040>
method = <function TestPackagesLogic.test_ref_matches_copr_pkgname at 0xffff89c984a0>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_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 0xffff89ca9040>
method = <function TestPackagesLogic.test_ref_matches_copr_pkgname at 0xffff89c984a0>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_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 0xffff89ca9040>
method = <function TestPackagesLogic.test_ref_matches_copr_pkgname at 0xffff89c984a0>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_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 0xffff89ca9040>
method = <function TestPackagesLogic.test_ref_matches_copr_pkgname at 0xffff89c984a0>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_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 0xffff89ca9040>
method = <function TestPackagesLogic.test_ref_matches_copr_pkgname at 0xffff89c984a0>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_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 0xffff89ca9040>
method = <function TestPackagesLogic.test_ref_matches_copr_pkgname at 0xffff89c984a0>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_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 0xffff89ca9040>
method = <function TestPackagesLogic.test_ref_matches_copr_pkgname at 0xffff89c984a0>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_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 0xffff89ca9040>
method = <function TestPackagesLogic.test_ref_matches_copr_pkgname at 0xffff89c984a0>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_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 0xffff89ca9040>
method = <function TestPackagesLogic.test_ref_matches_copr_pkgname at 0xffff89c984a0>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_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 0xffff89ca9040>
method = <function TestPackagesLogic.test_ref_matches_copr_pkgname at 0xffff89c984a0>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_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 0xffff89ca9040>
method = <function TestPackagesLogic.test_ref_matches_copr_pkgname at 0xffff89c984a0>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_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 0xffff89ca9040>
method = <function TestPackagesLogic.test_ref_matches_copr_pkgname at 0xffff89c984a0>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_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 0xffff89ca9040>
method = <function TestPackagesLogic.test_ref_matches_copr_pkgname at 0xffff89c984a0>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_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 0xffff89ca9040>
method = <function TestPackagesLogic.test_ref_matches_copr_pkgname at 0xffff89c984a0>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_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 0xffff89ca9040>
method = <function TestPackagesLogic.test_ref_matches_copr_pkgname at 0xffff89c984a0>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_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 0xffff89d277d0>
method = <bound method TestStatLogic.test_counter_basic of <test_stat_logic.TestStatLogic object at 0xffff89d277d0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_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 0xffff89d24170>
method = <bound method TestStatLogic.test_new_by_incr of <test_stat_logic.TestStatLogic object at 0xffff89d24170>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff8753a4e0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff87539820>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff898d4320>
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 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff86a4e540>
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 0xffff87539820>
    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 0xffff89d24530>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.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 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff86a4e540>
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 0xffff87539820>
    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 0xffff89d24530>
method = <bound method TestUserDataDumper.test_user_information of <test_users_logic.TestUserDataDumper object at 0xffff89d24530>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff875407a0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff87540860>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff898d4320>
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 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff87551440>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff87540860>
    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 0xffff89d275f0>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.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 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff87551440>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff87540860>
    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 0xffff89d275f0>
method = <bound method TestUserDataDumper.test_projects of <test_users_logic.TestUserDataDumper object at 0xffff89d275f0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff87543410>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff87543500>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff898d4320>
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 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff86a313c0>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff87543500>
    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 0xffff89d263f0>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.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 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff86a313c0>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff87543500>
    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 0xffff89d263f0>
method = <bound method TestUserDataDumper.test_builds of <test_users_logic.TestUserDataDumper object at 0xffff89d263f0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff875f94f0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff875f9be0>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff898d4320>
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 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff87550fc0>
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 0xffff875f9be0>
    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 0xffff89d26600>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.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 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff87550fc0>
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 0xffff875f9be0>
    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 0xffff89d26600>
method = <bound method TestUserDataDumper.test_data of <test_users_logic.TestUserDataDumper object at 0xffff89d26600>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff8764c7d0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff8764ce90>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff898d4320>
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 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff8699a140>
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 0xffff8764ce90>
    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 0xffff89d268a0>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.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 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff8699a140>
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 0xffff8764ce90>
    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 0xffff89d268a0>
method = <bound method TestUserDataDumper.test_dumps of <test_users_logic.TestUserDataDumper object at 0xffff89d268a0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff8764f1d0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff8764f8c0>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff898d4320>
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 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff86a4e7c0>
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 0xffff8764f8c0>
    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 0xffff89d27950>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.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 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff86a4e7c0>
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 0xffff8764f8c0>
    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 0xffff89d27950>
method = <bound method TestUserDelete.test_delete_user_data of <test_users_logic.TestUserDelete object at 0xffff89d27950>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff885bac60>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff885b8410>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff898d4320>
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 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff87537f40>
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 0xffff885b8410>
    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 0xffff89d278f0>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.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 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff87537f40>
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 0xffff885b8410>
    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 0xffff89d278f0>
method = <bound method TestUserDelete.test_delete_data_view of <test_users_logic.TestUserDelete object at 0xffff89d278f0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_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 0xffff89b64680>
method = <bound method TestMisc.test_fed_raw_name of <test_misc.TestMisc object at 0xffff89b64680>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_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 0xffff89b64800>
method = <bound method TestMisc.test_fed_raw_name_scheme of <test_misc.TestMisc object at 0xffff89b64800>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_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 0xffff89b64980>
method = <bound method TestMisc.test_fed_raw_name_without_oid_url of <test_misc.TestMisc object at 0xffff89b64980>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff875380e0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff87538500>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff898d4320>
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 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff86a4c940>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff87538500>
    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 0xffff89b65520>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.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 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff86a4c940>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff87538500>
    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 0xffff89b65520>
method = <bound method TestAdminLogin.test_nonadmin_cant_login of <test_admin_general.TestAdminLogin object at 0xffff89b65520>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff8764d670>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff8764eff0>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff898d4320>
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 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff8762f9c0>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff8764eff0>
    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 0xffff89b65700>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.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 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff8762f9c0>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff8764eff0>
    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 0xffff89b65700>
method = <bound method TestAdminLogin.test_admin_can_login of <test_admin_general.TestAdminLogin object at 0xffff89b65700>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff875dd760>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff875dd910>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff89917ec0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff86998740>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff875dd910>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/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 0xffff89c51610>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff86998740>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff875dd910>
    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 0xffff89c51610>
method = <bound method TestGetBuildTask.test_module_name_empty of <test_backend_general.TestGetBuildTask object at 0xffff89c51610>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff87519fd0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff8751a060>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff89917ec0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff867bb7c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff8751a060>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/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 0xffff89c50530>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff867bb7c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff8751a060>
    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 0xffff89c50530>
method = <bound method TestGetBuildTask.test_module_name_enable of <test_backend_general.TestGetBuildTask object at 0xffff89c50530>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff875a0a10>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff875a0f50>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff89917ec0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff8676cac0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff875a0f50>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/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 0xffff89d24f20>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff8676cac0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff875a0f50>
    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 0xffff89d24f20>
method = <bound method TestGetBuildTask.test_module_name_disable of <test_backend_general.TestGetBuildTask object at 0xffff89d24f20>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff87519580>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff875a0890>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff89917ec0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff862e4040>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff875a0890>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/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 0xffff89d25370>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff862e4040>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff875a0890>
    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 0xffff89d25370>
method = <bound method TestGetBuildTask.test_module_name_many_modules of <test_backend_general.TestGetBuildTask object at 0xffff89d25370>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff875f2480>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff875f25d0>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff89917ec0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff87553cc0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff875f25d0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/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 0xffff89d25610>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff87553cc0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff875f25d0>
    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 0xffff89d25610>
method = <bound method TestGetBuildTask.test_module_name_modules_with_spaces of <test_backend_general.TestGetBuildTask object at 0xffff89d25610>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_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 0xffff89b67800>
method = <bound method TestWaitingBuilds.test_no_pending_builds of <test_backend_general.TestWaitingBuilds object at 0xffff89b67800>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.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 0xffff875c63f0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff875c64b0>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff89917ec0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff878fd540>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff875c64b0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/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 0xffff89b67aa0>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff878fd540>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff875c64b0>
    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 0xffff89b67aa0>
method = <bound method TestWaitingBuilds.test_pending_build_only_lists_not_started_or_ended of <test_backend_general.TestWaitingBuilds object at 0xffff89b67aa0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff875a0710>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff875a0140>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff89917ec0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff876a8140>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff875a0140>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/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 0xffff89b67590>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff876a8140>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff875a0140>
    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 0xffff89b67590>
method = <bound method TestWaitingBuilds.test_pending_bg_build of <test_backend_general.TestWaitingBuilds object at 0xffff89b67590>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff89d25130>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff875dc260>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff89917ec0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff86f720c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff875dc260>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/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 0xffff89b67200>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff86f720c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff875dc260>
    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 0xffff89b67200>
method = <bound method TestWaitingBuilds.test_pending_blocked_builds of <test_backend_general.TestWaitingBuilds object at 0xffff89b67200>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff8764fcb0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff8764fd40>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff89917ec0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff864bf640>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff8764fd40>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/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 0xffff89b66e10>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff864bf640>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff8764fd40>
    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 0xffff89b66e10>
method = <bound method TestWaitingBuilds.test_build_jobs_performance of <test_backend_general.TestWaitingBuilds object at 0xffff89b66e10>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff87365e80>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff87367020>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff898d4320>
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 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff877131c0>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff87367020>
    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 0xffff89b666c0>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.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 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff877131c0>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff87367020>
    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 0xffff89b666c0>
method = <bound method TestUpdateBuilds.test_updating_requires_password of <test_backend_general.TestUpdateBuilds object at 0xffff89b666c0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff873c9430>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff873c94c0>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff89917ec0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff871bfac0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff873c94c0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/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 0xffff89b662a0>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff871bfac0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff873c94c0>
    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 0xffff89b662a0>
method = <bound method TestUpdateBuilds.test_update_build_ended of <test_backend_general.TestUpdateBuilds object at 0xffff89b662a0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff87365eb0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff873c9640>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff89917ec0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff864bd040>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff873c9640>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/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 0xffff89b65b80>
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 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff864bd040>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff873c9640>
    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 0xffff89b65b80>
method = <bound method TestUpdateBuilds.test_update_state_from_dict of <test_backend_general.TestUpdateBuilds object at 0xffff89b65b80>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff87367890>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff873cb0b0>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff89917ec0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff86f73640>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff873cb0b0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/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 0xffff89b65d90>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff86f73640>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff873cb0b0>
    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 0xffff89b65d90>
method = <bound method TestUpdateBuilds.test_update_more_existent_and_non_existent_builds of <test_backend_general.TestUpdateBuilds object at 0xffff89b65d90>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff878bab70>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff878bac00>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff89917ec0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff8676e9c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff878bac00>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/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 0xffff89b65fd0>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff8676e9c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff878bac00>
    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 0xffff89b65fd0>
method = <bound method TestUpdateBuilds.test_build_task_canceled_waiting_build of <test_backend_general.TestUpdateBuilds object at 0xffff89b65fd0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff8788dc10>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff8788dc70>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff89917ec0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff871bf340>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff8788dc70>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/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 0xffff89b65a30>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff871bf340>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff8788dc70>
    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 0xffff89b65a30>
method = <bound method TestUpdateBuilds.test_build_task_canceled_running_build of <test_backend_general.TestUpdateBuilds object at 0xffff89b65a30>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff87851760>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff878517f0>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff89917ec0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff86eba6c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff878517f0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/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 0xffff89b65910>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff86eba6c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff878517f0>
    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 0xffff89b65910>
method = <bound method TestUpdateBuilds.test_build_task_canceled_deleted_build of <test_backend_general.TestUpdateBuilds object at 0xffff89b65910>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_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 0xffff89c304a0>
method = <bound method TestWaitingActions.test_no_waiting_actions of <test_backend_general.TestWaitingActions object at 0xffff89c304a0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff875dd250>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff875dd640>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff898d4320>
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 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff8732f1c0>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff875dd640>
    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 0xffff89c31af0>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.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 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff8732f1c0>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff875dd640>
    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 0xffff89c31af0>
method = <bound method TestWaitingActions.test_waiting_actions_only_lists_not_started_or_ended of <test_backend_general.TestWaitingActions object at 0xffff89c31af0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff875c74d0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff875c6c60>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff898d4320>
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 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff8673e340>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff875c6c60>
    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 0xffff89c302c0>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.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 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff8673e340>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff875c6c60>
    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 0xffff89c302c0>
method = <bound method TestWaitingActions.test_pending_actions_list of <test_backend_general.TestWaitingActions object at 0xffff89c302c0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff8788c0e0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff8788e090>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff898d4320>
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 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff87536940>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff8788e090>
    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 0xffff89c30590>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.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 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff87536940>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff8788e090>
    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 0xffff89c30590>
method = <bound method TestWaitingActions.test_dont_send_pending_actions_whe_delete of <test_backend_general.TestWaitingActions object at 0xffff89c30590>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff878c0650>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff878c0cb0>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff898d4320>
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 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff86f73040>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff878c0cb0>
    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 0xffff89b66000>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.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 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff86f73040>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff878c0cb0>
    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 0xffff89b66000>
method = <bound method TestWaitingActions.test_get_action_succeeded of <test_backend_general.TestWaitingActions object at 0xffff89b66000>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff878c2fc0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff878c3740>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff898d4320>
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 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff8631d2c0>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff878c3740>
    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 0xffff89c31070>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.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 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff8631d2c0>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff878c3740>
    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 0xffff89c31070>
method = <bound method TestUpdateActions.test_update_one_action of <test_backend_general.TestUpdateActions object at 0xffff89c31070>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff87941460>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff87941b80>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff898d4320>
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 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff861002c0>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff87941b80>
    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 0xffff89c31280>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.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 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff861002c0>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff87941b80>
    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 0xffff89c31280>
method = <bound method TestUpdateActions.test_update_more_existent_and_non_existent_actions of <test_backend_general.TestUpdateActions object at 0xffff89c31280>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff87891490>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff878914f0>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff89917ec0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff87712740>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff878914f0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/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 0xffff89c32000>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff87712740>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff878914f0>
    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 0xffff89c32000>
method = <bound method TestImportingBuilds.test_bg_priority_in_queue of <test_backend_general.TestImportingBuilds object at 0xffff89c32000>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff877004d0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff87700530>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff89917ec0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff86527bc0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff87700530>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/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 0xffff89c32210>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff86527bc0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff87700530>
    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 0xffff89c32210>
method = <bound method TestImportingBuilds.test_importing_queue_multiple_bg of <test_backend_general.TestImportingBuilds object at 0xffff89c32210>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff877035c0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff87703650>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff89917ec0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff86102940>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff87703650>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/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 0xffff89bdccb0>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff86102940>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff87703650>
    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 0xffff89bdccb0>
method = <bound method TestCoprShowBuilds.test_copr_show_builds of <test_coprs_builds.TestCoprShowBuilds object at 0xffff89bdccb0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff876d22d0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff876d2330>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff89917ec0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff865b4140>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff876d2330>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/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 0xffff89bdc8f0>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff865b4140>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff876d2330>
    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 0xffff89bdc8f0>
method = <bound method TestCoprAddBuild.test_copr_user_can_add_build of <test_coprs_builds.TestCoprAddBuild object at 0xffff89bdc8f0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff87708bc0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff87708cb0>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff89917ec0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff86a24cc0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff87708cb0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/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 0xffff89bdc980>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff86a24cc0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff87708cb0>
    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 0xffff89bdc980>
method = <bound method TestCoprAddBuild.test_copr_allowed_user_can_add_build of <test_coprs_builds.TestCoprAddBuild object at 0xffff89bdc980>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff87891820>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff87890d10>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff898d4320>
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 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff865fcd40>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff87890d10>
    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 0xffff89bdcda0>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.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 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff865fcd40>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff87890d10>
    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 0xffff89bdcda0>
method = <bound method TestCoprAddBuild.test_copr_not_yet_allowed_user_cant_add_build of <test_coprs_builds.TestCoprAddBuild object at 0xffff89bdcda0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff87853ad0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff87853530>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff898d4320>
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 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff865b53c0>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff87853530>
    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 0xffff89bdcfe0>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.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 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff865b53c0>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff87853530>
    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 0xffff89bdcfe0>
method = <bound method TestCoprAddBuild.test_copr_user_cant_add_build_to_admin_project of <test_coprs_builds.TestCoprAddBuild object at 0xffff89bdcfe0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff879427b0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff87942600>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff898d4320>
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 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff86577840>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff87942600>
    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 0xffff89bdd220>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.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 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff86577840>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff87942600>
    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 0xffff89bdd220>
method = <bound method TestCoprAddBuild.test_copr_user_without_permission_cant_add_build of <test_coprs_builds.TestCoprAddBuild object at 0xffff89bdd220>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff875c5df0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff875c7fe0>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff89917ec0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff86527940>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff875c7fe0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/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 0xffff89bdd490>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff86527940>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff875c7fe0>
    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 0xffff89bdd490>
method = <bound method TestCoprAddBuild.test_copr_default_options of <test_coprs_builds.TestCoprAddBuild object at 0xffff89bdd490>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff89bdc4d0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff876d3fe0>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff89917ec0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff864bdfc0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff876d3fe0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/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 0xffff89bde3c0>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff864bdfc0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff876d3fe0>
    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 0xffff89bde3c0>
method = <bound method TestCoprCancelBuild.test_copr_build_submitter_can_cancel_build of <test_coprs_builds.TestCoprCancelBuild object at 0xffff89bde3c0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff876b26c0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff876b2840>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff89917ec0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff862e6d40>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff876b2840>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/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 0xffff89bde450>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff862e6d40>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff876b2840>
    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 0xffff89bde450>
method = <bound method TestCoprCancelBuild.test_copr_build_non_submitter_cannot_cancel_build of <test_coprs_builds.TestCoprCancelBuild object at 0xffff89bde450>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff876858e0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff876859a0>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff898d4320>
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 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff86637f40>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff876859a0>
    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 0xffff89bdf350>
    @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 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff86637f40>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff876859a0>
    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 0xffff89bdf350>
method = <bound method TestCoprDeleteBuild.test_copr_build_submitter_can_delete_build_old of <test_coprs_builds.TestCoprDeleteBuild object at 0xffff89bdf350>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_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 0xffff89bdf3e0>
method = <bound method TestCoprDeleteBuild.test_copr_build_submitter_can_delete_build of <test_coprs_builds.TestCoprDeleteBuild object at 0xffff89bdf3e0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff871552e0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff87155370>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff89917ec0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff866366c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff87155370>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/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 0xffff89bdf620>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff866366c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff87155370>
    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 0xffff89bdf620>
method = <bound method TestCoprDeleteBuild.test_copr_build_non_submitter_cannot_delete_build of <test_coprs_builds.TestCoprDeleteBuild object at 0xffff89bdf620>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_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 0xffff89bdf830>
method = <bound method TestCoprDeleteBuild.test_copr_delete_multiple_builds_sends_single_action of <test_coprs_builds.TestCoprDeleteBuild object at 0xffff89bdf830>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_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 0xffff89bdf380>
method = <bound method TestCoprDeleteBuild.test_copr_delete_package_sends_single_action of <test_coprs_builds.TestCoprDeleteBuild object at 0xffff89bdf380>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff8770bfb0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff8770baa0>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff898d4320>
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 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff86998b40>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff8770baa0>
    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 0xffff89bcd340>
    @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 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff86998b40>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff8770baa0>
    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 0xffff89bcd340>
method = <bound method TestCoprRepeatBuild.test_copr_build_basic_build_repeat of <test_coprs_builds.TestCoprRepeatBuild object at 0xffff89bcd340>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff87236b70>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff876d0350>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff89917ec0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff866c07c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff876d0350>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/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 0xffff89bcd400>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff866c07c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff876d0350>
    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 0xffff89bcd400>
method = <bound method TestCoprRepeatBuild.test_copr_build_submitter_can_repeat_build of <test_coprs_builds.TestCoprRepeatBuild object at 0xffff89bcd400>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff871db800>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff871d99a0>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff89917ec0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff86107540>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff871d99a0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/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 0xffff89bcc110>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff86107540>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff871d99a0>
    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 0xffff89bcc110>
method = <bound method TestCoprRepeatBuild.test_copr_build_non_submitter_cannot_repeat_build of <test_coprs_builds.TestCoprRepeatBuild object at 0xffff89bcc110>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff871e09e0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff871e0a70>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff89917ec0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff866fe540>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff871e0a70>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/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 0xffff89bcc5c0>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff866fe540>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff871e0a70>
    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 0xffff89bcc5c0>
method = <bound method TestCoprRepeatBuild.test_rebuild_srpm_upload_generates_chroots of <test_coprs_builds.TestCoprRepeatBuild object at 0xffff89bcc5c0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff86f116a0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff86f11730>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff89917ec0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff872ac040>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff86f11730>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/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 0xffff89bcc620>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff872ac040>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff86f11730>
    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 0xffff89bcc620>
method = <bound method TestCoprRepeatBuild.test_copr_build_package_urls of <test_coprs_builds.TestCoprRepeatBuild object at 0xffff89bcc620>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff86f3ce30>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff86f3cec0>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff89917ec0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff85ab0740>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff86f3cec0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/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 0xffff89bccad0>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff85ab0740>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff86f3cec0>
    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 0xffff89bccad0>
method = <bound method TestCoprRepeatBuild.test_copr_repeat_build_available_chroots of <test_coprs_builds.TestCoprRepeatBuild object at 0xffff89bccad0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff86f3fb30>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff86f3fb90>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff89917ec0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff872ade40>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff86f3fb90>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/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 0xffff89bcde80>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff872ade40>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff86f3fb90>
    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 0xffff89bcde80>
method = <bound method TestCoprsChroots.test_edit_own_copr_chroot of <test_coprs_chroots.TestCoprsChroots object at 0xffff89bcde80>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff86e6e8a0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff86e6e900>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff89917ec0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff8618c740>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff86e6e900>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/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 0xffff89bce0f0>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff8618c740>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff86e6e900>
    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 0xffff89bce0f0>
method = <bound method TestCoprsChroots.test_edit_someone_copr_chroot of <test_coprs_chroots.TestCoprsChroots object at 0xffff89bce0f0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff86f37980>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff86f34080>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff89917ec0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff85ad3140>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff86f34080>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/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 0xffff89bce390>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff85ad3140>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff86f34080>
    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 0xffff89bce390>
method = <bound method TestCoprsChroots.test_edit_someone_copr_chroot_being_admin of <test_coprs_chroots.TestCoprsChroots object at 0xffff89bce390>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_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 0xffff89bcb950>
method = <bound method TestMonitor.test_regression_monitor_no_copr_returned of <test_coprs_general.TestMonitor object at 0xffff89bcb950>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.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 0xffff89bcae40>
method = <bound method TestCoprsShow.test_show_no_entries of <test_coprs_general.TestCoprsShow object at 0xffff89bcae40>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.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 0xffff86f6aa80>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff86f6b3b0>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff898d4320>
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 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff85ab1e40>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff86f6b3b0>
    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 0xffff89bca9c0>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.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 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff85ab1e40>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff86f6b3b0>
    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 0xffff89bca9c0>
method = <bound method TestCoprsShow.test_show_more_entries of <test_coprs_general.TestCoprsShow object at 0xffff89bca9c0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff8701cec0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff8701d6d0>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff898d4320>
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 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff87132e40>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff8701d6d0>
    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 0xffff89bc9b20>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.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 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff87132e40>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff8701d6d0>
    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 0xffff89bc9b20>
method = <bound method TestCoprsOwned.test_owned_none of <test_coprs_general.TestCoprsOwned object at 0xffff89bc9b20>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff86fc89e0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff86fc8aa0>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff898d4320>
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 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff8623f640>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff86fc8aa0>
    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 0xffff89bc9c10>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.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 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff8623f640>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff86fc8aa0>
    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 0xffff89bc9c10>
method = <bound method TestCoprsOwned.test_owned_one of <test_coprs_general.TestCoprsOwned object at 0xffff89bc9c10>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff86fcb680>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff86fcb6e0>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff89917ec0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff87133640>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff86fcb6e0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/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 0xffff89bc9310>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff87133640>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff86fcb6e0>
    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 0xffff89bc9310>
method = <bound method TestCoprNew.test_copr_new_normal of <test_coprs_general.TestCoprNew object at 0xffff89bc9310>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff86fc60c0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff86fc6120>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff89917ec0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff8670f440>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff86fc6120>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/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 0xffff89bc8e00>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff8670f440>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff86fc6120>
    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 0xffff89bc8e00>
method = <bound method TestCoprNew.test_copr_new_ACR_OFF of <test_coprs_general.TestCoprNew object at 0xffff89bc8e00>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff870040e0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff87004140>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff89917ec0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff871337c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff87004140>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/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 0xffff89bc8e60>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff871337c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff87004140>
    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 0xffff89bc8e60>
method = <bound method TestCoprNew.test_copr_new_exists_for_another_user of <test_coprs_general.TestCoprNew object at 0xffff89bc8e60>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff86f8c5c0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff86f8c620>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff89917ec0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff8670c8c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff86f8c620>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/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 0xffff89bc9010>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff8670c8c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff86f8c620>
    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 0xffff89bc9010>
method = <bound method TestCoprNew.test_copr_new_exists_for_this_user of <test_coprs_general.TestCoprNew object at 0xffff89bc9010>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff86f8f2c0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff86f8f320>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff89917ec0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff86a24840>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff86f8f320>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/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 0xffff89bc8b90>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff86a24840>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff86f8f320>
    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 0xffff89bc8b90>
method = <bound method TestCoprNew.test_copr_new_with_initial_pkgs of <test_coprs_general.TestCoprNew object at 0xffff89bc8b90>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff87105bb0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff87105c10>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff89917ec0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff86e2a7c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff87105c10>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/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 0xffff89bc8200>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff86e2a7c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff87105c10>
    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 0xffff89bc8200>
method = <bound method TestCoprNew.test_copr_new_with_initial_pkgs_disabled_net of <test_coprs_general.TestCoprNew object at 0xffff89bc8200>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff8707d220>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff8707d280>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff89917ec0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff85fc78c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff8707d280>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/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 0xffff89bc83b0>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff85fc78c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff8707d280>
    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 0xffff89bc83b0>
method = <bound method TestCoprNew.test_copr_new_is_allowed_even_if_deleted_has_same_name of <test_coprs_general.TestCoprNew object at 0xffff89bc83b0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff86f8f980>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff86f8f9e0>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff89917ec0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff8618dc40>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff86f8f9e0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/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 0xffff89bc87a0>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff8618dc40>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff86f8f9e0>
    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 0xffff89bc87a0>
method = <bound method TestCoprNew.test_copr_new_contains_isolation of <test_coprs_general.TestCoprNew object at 0xffff89bc87a0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_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 0xffff89bf34a0>
method = <bound method TestCoprDetail.test_copr_detail_not_found of <test_coprs_general.TestCoprDetail object at 0xffff89bf34a0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.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 0xffff878c0ef0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff878c3da0>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff898d4320>
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 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff85b6c740>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff878c3da0>
    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 0xffff89bf34d0>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.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 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff85b6c740>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff878c3da0>
    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 0xffff89bf34d0>
method = <bound method TestCoprDetail.test_copr_detail_normal of <test_coprs_general.TestCoprDetail object at 0xffff89bf34d0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff8701eae0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff8701fad0>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff89917ec0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff8618d4c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff8701fad0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/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 0xffff89bf3620>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff8618d4c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff8701fad0>
    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 0xffff89bf3620>
method = <bound method TestCoprDetail.test_copr_detail_contains_builds of <test_coprs_general.TestCoprDetail object at 0xffff89bf3620>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff8707f590>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff8707e870>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff898d4320>
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 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff87803940>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff8707e870>
    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 0xffff89bf3800>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.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 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff87803940>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff8707e870>
    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 0xffff89bf3800>
method = <bound method TestCoprDetail.test_copr_detail_anonymous_doesnt_contain_permissions_table_when_no_permissions of <test_coprs_general.TestCoprDetail object at 0xffff89bf3800>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff86ecd4f0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff86ecddf0>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff898d4320>
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 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff86e286c0>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff86ecddf0>
    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 0xffff89bc8b00>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.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 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff86e286c0>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff86ecddf0>
    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 0xffff89bc8b00>
method = <bound method TestCoprDetail.test_copr_detail_contains_permissions_table of <test_coprs_general.TestCoprDetail object at 0xffff89bc8b00>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff870e03b0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff870e0cb0>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff898d4320>
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 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff85bbc540>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff870e0cb0>
    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 0xffff89bf3e00>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.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 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff85bbc540>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff870e0cb0>
    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 0xffff89bf3e00>
method = <bound method TestCoprDetail.test_detail_has_correct_permissions_form of <test_coprs_general.TestCoprDetail object at 0xffff89bf3e00>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff870bc200>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff870bc320>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff898d4320>
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 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff85b6c0c0>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff870bc320>
    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 0xffff89bf3470>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.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 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff85b6c0c0>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff870bc320>
    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 0xffff89bf3470>
method = <bound method TestCoprDetail.test_copr_detail_doesnt_show_cancel_build_for_anonymous of <test_coprs_general.TestCoprDetail object at 0xffff89bf3470>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff870bf410>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff870bf4d0>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff89917ec0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff8777d0c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff870bf4d0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/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 0xffff89bf3410>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff8777d0c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff870bf4d0>
    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 0xffff89bf3410>
method = <bound method TestCoprDetail.test_copr_detail_doesnt_allow_non_submitter_to_cancel_build of <test_coprs_general.TestCoprDetail object at 0xffff89bf3410>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff870e35c0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff870bdf10>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff89917ec0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff86010e40>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff870bdf10>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/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 0xffff89bf1fa0>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff86010e40>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff870bdf10>
    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 0xffff89bf1fa0>
method = <bound method TestCoprDetail.test_copr_detail_allows_submitter_to_cancel_build of <test_coprs_general.TestCoprDetail object at 0xffff89bf1fa0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_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 0xffff89bf2060>
method = <bound method TestCoprDetail.test_codeblock_html_in_project_description of <test_coprs_general.TestCoprDetail object at 0xffff89bf2060>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.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 0xffff86de2450>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff86de30b0>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff898d4320>
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 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff869d49c0>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff86de30b0>
    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 0xffff89bf1670>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.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 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff869d49c0>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff86de30b0>
    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 0xffff89bf1670>
method = <bound method TestCoprEdit.test_edit_prefills_id of <test_coprs_general.TestCoprEdit object at 0xffff89bf1670>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff8701dcd0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff8701dd30>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff89917ec0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff869d4540>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff8701dd30>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/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 0xffff89bf1100>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff869d4540>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff8701dd30>
    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 0xffff89bf1100>
method = <bound method TestCoprUpdate.test_update_no_changes of <test_coprs_general.TestCoprUpdate object at 0xffff89bf1100>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff87107b90>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff89bc9fd0>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff89917ec0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff87800440>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff89bc9fd0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/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 0xffff89bf10d0>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff87800440>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff89bc9fd0>
    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 0xffff89bf10d0>
method = <bound method TestCoprUpdate.test_copr_admin_can_update of <test_coprs_general.TestCoprUpdate object at 0xffff89bf10d0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff870e3da0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff870e0410>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff89917ec0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff85c104c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff870e0410>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/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 0xffff89bf0590>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff85c104c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff870e0410>
    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 0xffff89bf0590>
method = <bound method TestCoprUpdate.test_update_multiple_chroots of <test_coprs_general.TestCoprUpdate object at 0xffff89bf0590>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff8707d9a0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff8707da90>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff89917ec0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff86e29440>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff8707da90>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/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 0xffff89bf07a0>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff86e29440>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff8707da90>
    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 0xffff89bf07a0>
method = <bound method TestCoprUpdate.test_update_deletes_multiple_chroots of <test_coprs_general.TestCoprUpdate object at 0xffff89bf07a0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff86e31d90>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff86e31e20>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff89917ec0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff86687840>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff86e31e20>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/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 0xffff89bf0c50>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff86687840>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff86e31e20>
    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 0xffff89bf0c50>
method = <bound method TestCoprUpdate.test_changed_ACR_produces_action of <test_coprs_general.TestCoprUpdate object at 0xffff89bf0c50>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff86e24260>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff86e24a40>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff898d4320>
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 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff86e28cc0>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff86e24a40>
    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 0xffff89bcf560>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.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 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff86e28cc0>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff86e24a40>
    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 0xffff89bcf560>
method = <bound method TestCoprApplyForPermissions.test_apply of <test_coprs_general.TestCoprApplyForPermissions object at 0xffff89bcf560>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff86e1c5f0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff86e1c860>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff898d4320>
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 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff86537740>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff86e1c860>
    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 0xffff89bcfe60>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.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 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff86537740>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff86e1c860>
    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 0xffff89bcfe60>
method = <bound method TestCoprApplyForPermissions.test_apply_doesnt_lower_other_values_from_admin_to_request of <test_coprs_general.TestCoprApplyForPermissions object at 0xffff89bcfe60>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff86e1ed20>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff86e1f620>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff898d4320>
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 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff8777ef40>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff86e1f620>
    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 0xffff89bcf080>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.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 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff8777ef40>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff86e1f620>
    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 0xffff89bcf080>
method = <bound method TestCoprUpdatePermissions.test_cancel_permission of <test_coprs_general.TestCoprUpdatePermissions object at 0xffff89bcf080>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff86dc5070>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff86dc4aa0>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff898d4320>
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 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff85fc4440>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff86dc4aa0>
    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 0xffff89bcef00>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.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 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff85fc4440>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff86dc4aa0>
    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 0xffff89bcef00>
method = <bound method TestCoprUpdatePermissions.test_update_more_permissions of <test_coprs_general.TestCoprUpdatePermissions object at 0xffff89bcef00>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff87784bf0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff877854f0>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff898d4320>
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 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff85af13c0>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff877854f0>
    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 0xffff89bcee70>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.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 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff85af13c0>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff877854f0>
    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 0xffff89bcee70>
method = <bound method TestCoprUpdatePermissions.test_copr_admin_can_update_permissions of <test_coprs_general.TestCoprUpdatePermissions object at 0xffff89bcee70>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff877ac1d0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff877ac440>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff898d4320>
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 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff86687340>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff877ac440>
    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 0xffff89bcddc0>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.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 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff86687340>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff877ac440>
    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 0xffff89bcddc0>
method = <bound method TestCoprUpdatePermissions.test_copr_admin_can_give_up_his_permissions of <test_coprs_general.TestCoprUpdatePermissions object at 0xffff89bcddc0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff86f698b0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff86f69dc0>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff898d4320>
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 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff878019c0>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff86f69dc0>
    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 0xffff89baa5a0>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.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 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff878019c0>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff86f69dc0>
    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 0xffff89baa5a0>
method = <bound method TestCoprDelete.test_delete of <test_coprs_general.TestCoprDelete object at 0xffff89baa5a0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff86e32150>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff86e301a0>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff898d4320>
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 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff8655ef40>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff86e301a0>
    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 0xffff89baacf0>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.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 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff8655ef40>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff86e301a0>
    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 0xffff89baacf0>
method = <bound method TestCoprDelete.test_copr_delete_does_not_delete_if_verify_filled_wrongly of <test_coprs_general.TestCoprDelete object at 0xffff89baacf0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff86e1f6b0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff86e1fc50>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff898d4320>
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 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff8657d0c0>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff86e1fc50>
    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 0xffff89babe00>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.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 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff8657d0c0>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff86e1fc50>
    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 0xffff89babe00>
method = <bound method TestCoprDelete.test_non_user_cant_delete of <test_coprs_general.TestCoprDelete object at 0xffff89babe00>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_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 0xffff89babec0>
method = <bound method TestCoprRepoGeneration.test_fail_on_nonexistent_copr of <test_coprs_general.TestCoprRepoGeneration object at 0xffff89babec0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.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 0xffff877aec30>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff877af200>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff89917ec0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff85d1cdc0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff877af200>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/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 0xffff89f1c650>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff85d1cdc0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff877af200>
    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 0xffff89f1c650>
method = <bound method TestCoprRepoGeneration.test_works_on_older_builds of <test_coprs_general.TestCoprRepoGeneration object at 0xffff89f1c650>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff87845460>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff878454c0>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff89917ec0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff8655c2c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff878454c0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/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 0xffff89f1c0b0>
    @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 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff8655c2c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff878454c0>
    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 0xffff89f1c0b0>
method = <bound method TestCoprRepoGeneration.test_repofile_multilib of <test_coprs_general.TestCoprRepoGeneration object at 0xffff89f1c0b0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_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 0xffff89f1c320>
method = <bound method TestCoprRepoGeneration.test_repofile_copr_runtime_deps of <test_coprs_general.TestCoprRepoGeneration object at 0xffff89f1c320>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.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 0xffff89f1c500>
method = <bound method TestCoprRepoGeneration.test_repofile_group_copr_runtime_deps of <test_coprs_general.TestCoprRepoGeneration object at 0xffff89f1c500>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.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 0xffff89f1c800>
method = <bound method TestCoprRepoGeneration.test_repofile_transitive_runtime_deps of <test_coprs_general.TestCoprRepoGeneration object at 0xffff89f1c800>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.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 0xffff87754d10>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff877543b0>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff898d4320>
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 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff85def440>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff877543b0>
    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 0xffff89f1d490>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.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 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff85def440>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff877543b0>
    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 0xffff89f1d490>
method = <bound method TestSearch.test_search_basic of <test_coprs_general.TestSearch object at 0xffff89f1d490>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff8725f740>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff8725c050>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff89917ec0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff85b6e140>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff8725c050>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/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 0xffff89f1d640>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff85b6e140>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff8725c050>
    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 0xffff89f1d640>
method = <bound method TestSearch.test_search_by_attributes of <test_coprs_general.TestSearch object at 0xffff89f1d640>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff87284b30>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff87284b90>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff89917ec0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff85def4c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff87284b90>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/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 0xffff89f1e360>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff85def4c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff87284b90>
    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 0xffff89f1e360>
method = <bound method TestRepo.test_repo_renders_http of <test_coprs_general.TestRepo object at 0xffff89f1e360>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff87287b30>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff87287b90>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff89917ec0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff85d40540>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff87287b90>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/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 0xffff89f1e270>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff85d40540>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff87287b90>
    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 0xffff89f1e270>
method = <bound method TestRepo.test_chroot_alias of <test_coprs_general.TestRepo object at 0xffff89f1e270>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff87285520>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff87285580>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff89917ec0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff85bbf3c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff87285580>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/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 0xffff89f1ed80>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff85bbf3c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff87285580>
    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 0xffff89f1ed80>
method = <bound method TestCoprActionsGeneration.test_createrepo_priority of <test_coprs_general.TestCoprActionsGeneration object at 0xffff89f1ed80>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff87845af0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff87845b50>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff89917ec0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff86686140>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff87845b50>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/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 0xffff89f1efc0>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff86686140>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff87845b50>
    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 0xffff89f1efc0>
method = <bound method TestCoprActionsGeneration.test_createrepo_on_reenable of <test_coprs_general.TestCoprActionsGeneration object at 0xffff89f1efc0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff877554f0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff87754e30>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff898d4320>
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 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff85fc6fc0>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff87754e30>
    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 0xffff89f1f260>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.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 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff85fc6fc0>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff87754e30>
    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 0xffff89f1f260>
method = <bound method TestCoprActionsGeneration.test_fedora_review_project of <test_coprs_general.TestCoprActionsGeneration object at 0xffff89f1f260>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff87285850>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff89f1f470>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff89917ec0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff8657cd40>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff89f1f470>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/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 0xffff89eba0f0>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff8657cd40>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff89f1f470>
    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 0xffff89eba0f0>
method = <bound method TestDistGitMethod.test_copr_user_can_add_distgit_build of <test_method_distgit.TestDistGitMethod object at 0xffff89eba0f0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff86e1f6b0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff86e33230>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff89917ec0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff85d41540>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff86e33230>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/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 0xffff89ebbd10>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:93: in save_obj
    _emit_insert_statements(
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/persistence.py:1048: in _emit_insert_statements
    result = connection.execute(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1408: in execute
    return meth(
/usr/lib64/python3.12/site-packages/sqlalchemy/sql/elements.py:513: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1630: in _execute_clauseelement
    ret = self._execute_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1839: in _execute_context
    return self._exec_single_context(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1979: in _exec_single_context
    self._handle_dbapi_exception(
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:2335: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: in _exec_single_context
    self.dialect.do_executemany(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff85d41540>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff86e33230>
    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 0xffff89ebbd10>
method = <bound method TestDistGitMethod.test_copr_user_can_add_distgit_package of <test_method_distgit.TestDistGitMethod object at 0xffff89ebbd10>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff873248c0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff87324980>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff898d4320>
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 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff865358c0>
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 0xffff87324980>
    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 0xffff89eb9490>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.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 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff865358c0>
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 0xffff87324980>
    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 0xffff89eb9490>
method = <bound method TestGroups.test_group_add of <test_groups_general.TestGroups object at 0xffff89eb9490>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff87326c00>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff87327560>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff898d4320>
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 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff85e3adc0>
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 0xffff87327560>
    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 0xffff89eb9550>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.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 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff85e3adc0>
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 0xffff87327560>
    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 0xffff89eb9550>
method = <bound method TestGroups.test_group_add_twice of <test_groups_general.TestGroups object at 0xffff89eb9550>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff872a9e80>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff872a8320>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff898d4320>
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 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff85e16a40>
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 0xffff872a8320>
    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 0xffff89eb97c0>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.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 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff85e16a40>
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 0xffff872a8320>
    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 0xffff89eb97c0>
method = <bound method TestGroups.test_group_add_alias_with_space of <test_groups_general.TestGroups object at 0xffff89eb97c0>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.metadata.sorted_tables):
>           self.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 0xffff873204d0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff87320e30>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff898d4320>
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 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff85d42f40>
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 0xffff87320e30>
    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 0xffff89eb9a00>
    @pytest.fixture
    def f_db(self):
>       self.db.session.commit()
tests/coprs_test_case.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/scoping.py:597: in commit
    return self._proxied.commit()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1972: in commit
    trans.commit(_to_root=True)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1257: in commit
    self._prepare_impl()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:1232: in _prepare_impl
    self.session.flush()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4296: in flush
    self._flush(objects)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4431: in _flush
    with util.safe_reraise():
/usr/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/session.py:4392: in _flush
    flush_context.execute()
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:466: in execute
    rec.execute(self)
/usr/lib64/python3.12/site-packages/sqlalchemy/orm/unitofwork.py:642: in execute
    util.preloaded.orm_persistence.save_obj(
/usr/lib64/python3.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 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff85d42f40>
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 0xffff87320e30>
    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 0xffff89eb9a00>
method = <bound method TestGroups.test_group_add_not_in_fas_group of <test_groups_general.TestGroups object at 0xffff89eb9a00>>
    def teardown_method(self, method):
        # delete just data, not the tables
        self.db.session.rollback()
        for tbl in reversed(self.db.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 0xffff8a4efc50>
    @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 0xffff8a370410>
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 0xffff8a10af60>
    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 0xffff889b97c0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff889b98b0>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff898d4320>
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 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff877ee940>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff889b98b0>
    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 0xffff8a014d40>
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 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff877ee940>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff889b98b0>
    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 0xffff889bb7a0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff889bb920>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff898d4320>
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 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff87680040>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff889bb920>
    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 0xffff8a014a40>
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 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff87680040>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff889bb920>
    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 0xffff889d3aa0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff889d3b60>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff89917ec0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff87b1c040>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff889d3b60>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/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 0xffff8a015d90>
f_raw_commit_changes = <MagicMock name='raw_commit_changes' id='281472973743280'>
    @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 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff87b1c040>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff889d3b60>
    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 0xffff8903dc70>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff8903f470>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff898d4320>
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 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff877ef1c0>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff8903f470>
    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 0xffff8a016270>
f_get_repeatedly = <MagicMock name='get_repeatedly' id='281472970753136'>
f_raw_commit_changes = <MagicMock name='raw_commit_changes' id='281472970803344'>
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 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff877ef1c0>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff8903f470>
    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 0xffff889bb0e0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff889b9670>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff898d4320>
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 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff87680dc0>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff889b9670>
    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 0xffff8a016450>
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 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff87680dc0>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff889b9670>
    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 0xffff889d58e0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff889d5970>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff89917ec0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff87262340>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff889d5970>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/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 0xffff8a016b10>
f_raw_commit_changes = <MagicMock name='raw_commit_changes' id='281472973751648'>
    @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 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff87262340>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff889d5970>
    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 0xffff88a01eb0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff88a01e50>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff898d4320>
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 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff8783c640>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff88a01e50>
    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 0xffff8a016d20>
f_get_repeatedly = <MagicMock name='get_repeatedly' id='281472973763072'>
f_raw_commit_changes = <MagicMock name='raw_commit_changes' id='281472973848896'>
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 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff8783c640>
statement = 'INSERT INTO user (username, proven, admin, openid_groups) VALUES (?, ?, ?, ?)'
parameters = ('user1', 0, 1, None)
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff88a01e50>
    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 0xffff8a016ae0>
f_raw_commit_changes = <MagicMock name='raw_commit_changes' id='281472973866144'>
    @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 0xffff89fa7080>
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 0xffff87c4b380>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff87c4b440>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff89917ec0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff86f45540>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff87c4b440>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/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 0xffff89cc7b30>
    @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 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff86f45540>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff87c4b440>
    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 0xffff87c430e0>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff87c431a0>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff89917ec0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff86d400c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff87c431a0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/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 0xffff89cc7830>
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 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff86d400c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff87c431a0>
    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 0xffff88917680>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff88917740>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff898d4320>
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 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff869ce440>
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 0xffff88917740>
    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 0xffff89c56060>
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 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff869ce440>
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 0xffff88917740>
    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 0xffff89d24170>
    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 0xffff89b67800>
    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 0xffff87235b20>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff872359a0>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff89917ec0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff866ff440>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff872359a0>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/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 0xffff89bdf3e0>
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 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff866ff440>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff872359a0>
    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 0xffff871d8b90>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff871d8860>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff89917ec0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff85cf15c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff871d8860>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/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 0xffff89bdf830>
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 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff85cf15c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff871d8860>
    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 0xffff875dda90>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff875f3d70>
statement = <sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xffff89917ec0>
parameters = [('f18',), ('fedora-17',), ('master',)]
    def _exec_single_context(
        self,
        dialect: Dialect,
        context: ExecutionContext,
        statement: Union[str, Compiled],
        parameters: Optional[_AnyMultiExecuteParams],
    ) -> CursorResult[Any]:
        """continue the _execute_context() method for a single DBAPI
        cursor.execute() or cursor.executemany() call.
    
        """
        if dialect.bind_typing is BindTyping.SETINPUTSIZES:
            generic_setinputsizes = context._prepare_set_input_sizes()
    
            if generic_setinputsizes:
                try:
                    dialect.do_set_input_sizes(
                        context.cursor, generic_setinputsizes, context
                    )
                except BaseException as e:
                    self._handle_dbapi_exception(
                        e, str(statement), parameters, None, context
                    )
    
        cursor, str_statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        effective_parameters: Optional[_AnyExecuteParams]
    
        if not context.executemany:
            effective_parameters = parameters[0]
        else:
            effective_parameters = parameters
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                str_statement, effective_parameters = fn(
                    self,
                    cursor,
                    str_statement,
                    effective_parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self._log_info(str_statement)
    
            stats = context._get_cache_stats()
    
            if not self.engine.hide_parameters:
                self._log_info(
                    "[%s] %r",
                    stats,
                    sql_util._repr_params(
                        effective_parameters,
                        batches=10,
                        ismulti=context.executemany,
                    ),
                )
            else:
                self._log_info(
                    "[%s] [SQL parameters hidden due to hide_parameters=True]",
                    stats,
                )
    
        evt_handled: bool = False
        try:
            if context.execute_style is ExecuteStyle.EXECUTEMANY:
                effective_parameters = cast(
                    "_CoreMultiExecuteParams", effective_parameters
                )
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(
                            cursor,
                            str_statement,
                            effective_parameters,
                            context,
                        ):
                            evt_handled = True
                            break
                if not evt_handled:
>                   self.dialect.do_executemany(
                        cursor,
                        str_statement,
                        effective_parameters,
                        context,
/usr/lib64/python3.12/site-packages/sqlalchemy/engine/base.py:1929: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff877124c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff875f3d70>
    def do_executemany(self, cursor, statement, parameters, context=None):
>       cursor.executemany(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: dist_git_branch.name
/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 0xffff89bdf380>
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 0xffff8e72a660>
cursor = <sqlite3.Cursor object at 0xffff877124c0>
statement = 'INSERT INTO dist_git_branch (name) VALUES (?)'
parameters = [('f18',), ('fedora-17',), ('master',)]
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xffff875f3d70>
    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 0xffff89bcb950>
    @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 0xffff89bcae40>
    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 0xffff89bcae40>.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 0xffff89bf34a0>
    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 0xffff89bf2060>
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 0xffff89f1c320>
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 0xffff87754c20>
fp = <_io.StringIO object at 0xffff86daa080>, 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 0xffff89f1c500>
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 0xffff87757710>
fp = <_io.StringIO object at 0xffff86da9b40>, 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 0xffff89f1c800>
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 0xffff8970a930>
fp = <_io.StringIO object at 0xffff86dabdc0>, 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 <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_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 <Build> not in session, add operation along 'User.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 343.14s (0:05:43) ======
+ cleanup
+ redis-cli -p 7777 shutdown
+ wait
error: Bad exit status from /var/tmp/rpm-tmp.VjeMTE (%check)
RPM build errors:
    Bad exit status from /var/tmp/rpm-tmp.VjeMTE (%check)
Child return code was: 1
EXCEPTION: [Error('Command failed: \n # /usr/bin/systemd-nspawn -q -M 8381192030a0479ab85fc7a3a9cdaaf1 -D /var/lib/mock/f40-build-49469776-5882459/root -a -u mockbuild --capability=cap_ipc_lock --rlimit=RLIMIT_CORE=infinity --bind=/tmp/mock-resolv.fvzq9wmv:/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 8381192030a0479ab85fc7a3a9cdaaf1 -D /var/lib/mock/f40-build-49469776-5882459/root -a -u mockbuild --capability=cap_ipc_lock --rlimit=RLIMIT_CORE=infinity --bind=/tmp/mock-resolv.fvzq9wmv:/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:
ibute...
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 8381192030a0479ab85fc7a3a9cdaaf1 -D /var/lib/mock/f40-build-49469776-5882459/root -a -u mockbuild --capability=cap_ipc_lock --rlimit=RLIMIT_CORE=infinity --bind=/tmp/mock-resolv.fvzq9wmv:/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 8381192030a0479ab85fc7a3a9cdaaf1 -D /var/lib/mock/f40-build-49469776-5882459/root -a -u mockbuild --capability=cap_ipc_lock --rlimit=RLIMIT_CORE=infinity --bind=/tmp/mock-resolv.fvzq9wmv:/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'