Warning: Permanently added '2620:52:3:1:dead:beef:cafe:c158' (ED25519) to the list of known hosts. You can reproduce this build on your computer by running: sudo dnf install copr-rpmbuild /usr/bin/copr-rpmbuild --verbose --drop-resultdir --task-url https://copr.fedorainfracloud.org/backend/get-build-task/8580825-fedora-rawhide-x86_64 --chroot fedora-rawhide-x86_64 Version: 1.2 PID: 8809 Logging PID: 8810 Task: {'allow_user_ssh': False, 'appstream': False, 'background': True, 'bootstrap': 'off', 'build_id': 8580825, 'buildroot_pkgs': [], 'chroot': 'fedora-rawhide-x86_64', 'enable_net': False, 'fedora_review': False, 'git_hash': '4a4686386d7ccae2f0620151a838f23d508393df', 'git_repo': 'https://copr-dist-git.fedorainfracloud.org/git/@python/python3.14/python-gitlab', 'isolation': 'default', 'memory_reqs': 2048, 'package_name': 'python-gitlab', 'package_version': '4.10.0-2', 'project_dirname': 'python3.14', 'project_name': 'python3.14', 'project_owner': '@python', 'repo_priority': 9, 'repos': [{'baseurl': 'https://download.copr.fedorainfracloud.org/results/@python/python3.14/fedora-rawhide-x86_64/', 'id': 'copr_base', 'name': 'Copr repository', 'priority': 9}, {'baseurl': 'http://kojipkgs.fedoraproject.org/repos/rawhide/latest/$basearch/', 'id': 'http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch', 'name': 'Additional repo http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch'}], 'sandbox': '@python/python3.14--ksurma', 'source_json': {}, 'source_type': None, 'ssh_public_keys': None, 'storage': 0, 'submitter': 'ksurma', 'tags': [], 'task_id': '8580825-fedora-rawhide-x86_64', 'timeout': 18000, 'uses_devel_repo': False, 'with_opts': [], 'without_opts': []} Running: git clone https://copr-dist-git.fedorainfracloud.org/git/@python/python3.14/python-gitlab /var/lib/copr-rpmbuild/workspace/workdir-xpky8upb/python-gitlab --depth 500 --no-single-branch --recursive cmd: ['git', 'clone', 'https://copr-dist-git.fedorainfracloud.org/git/@python/python3.14/python-gitlab', '/var/lib/copr-rpmbuild/workspace/workdir-xpky8upb/python-gitlab', '--depth', '500', '--no-single-branch', '--recursive'] cwd: . rc: 0 stdout: stderr: Cloning into '/var/lib/copr-rpmbuild/workspace/workdir-xpky8upb/python-gitlab'... Running: git checkout 4a4686386d7ccae2f0620151a838f23d508393df -- cmd: ['git', 'checkout', '4a4686386d7ccae2f0620151a838f23d508393df', '--'] cwd: /var/lib/copr-rpmbuild/workspace/workdir-xpky8upb/python-gitlab rc: 0 stdout: stderr: Note: switching to '4a4686386d7ccae2f0620151a838f23d508393df'. You are in 'detached HEAD' state. You can look around, make experimental changes and commit them, and you can discard any commits you make in this state without impacting any branches by switching back to a branch. If you want to create a new branch to retain commits you create, you may do so (now or later) by using -c with the switch command. Example: git switch -c Or undo this operation with: git switch - Turn off this advice by setting config variable advice.detachedHead to false HEAD is now at 4a46863 automatic import of python-gitlab Running: dist-git-client sources /usr/bin/tail: /var/lib/copr-rpmbuild/main.log: file truncated cmd: ['dist-git-client', 'sources'] cwd: /var/lib/copr-rpmbuild/workspace/workdir-xpky8upb/python-gitlab rc: 0 stdout: stderr: INFO: Reading stdout from command: git rev-parse --abbrev-ref HEAD INFO: Reading stdout from command: git rev-parse HEAD INFO: Reading sources specification file: sources INFO: Downloading python_gitlab-4.10.0.tar.gz INFO: Reading stdout from command: curl --help all INFO: Calling: curl -H Pragma: -o python_gitlab-4.10.0.tar.gz --location --connect-timeout 60 --retry 3 --retry-delay 10 --remote-time --show-error --fail --retry-all-errors https://copr-dist-git.fedorainfracloud.org/repo/pkgs/@python/python3.14/python-gitlab/python_gitlab-4.10.0.tar.gz/md5/a28a954f32f38406e6af68ae2cee6116/python_gitlab-4.10.0.tar.gz % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 467k 100 467k 0 0 6676k 0 --:--:-- --:--:-- --:--:-- 6776k INFO: Reading stdout from command: md5sum python_gitlab-4.10.0.tar.gz Running (timeout=18000): unbuffer mock --spec /var/lib/copr-rpmbuild/workspace/workdir-xpky8upb/python-gitlab/python-gitlab.spec --sources /var/lib/copr-rpmbuild/workspace/workdir-xpky8upb/python-gitlab --resultdir /var/lib/copr-rpmbuild/results --uniqueext 1738054906.026706 -r /var/lib/copr-rpmbuild/results/configs/child.cfg INFO: mock.py version 6.0 starting (python version = 3.13.0, NVR = mock-6.0-1.fc41), args: /usr/libexec/mock/mock --spec /var/lib/copr-rpmbuild/workspace/workdir-xpky8upb/python-gitlab/python-gitlab.spec --sources /var/lib/copr-rpmbuild/workspace/workdir-xpky8upb/python-gitlab --resultdir /var/lib/copr-rpmbuild/results --uniqueext 1738054906.026706 -r /var/lib/copr-rpmbuild/results/configs/child.cfg Start: init plugins INFO: tmpfs initialized INFO: selinux enabled INFO: chroot_scan: initialized INFO: compress_logs: initialized Finish: init plugins INFO: Signal handler active Start: run INFO: Start(/var/lib/copr-rpmbuild/workspace/workdir-xpky8upb/python-gitlab/python-gitlab.spec) Config(fedora-rawhide-x86_64) Start: clean chroot Finish: clean chroot Mock Version: 6.0 INFO: Mock Version: 6.0 Start: chroot init INFO: mounting tmpfs at /var/lib/mock/fedora-rawhide-x86_64-1738054906.026706/root. INFO: calling preinit hooks INFO: enabled root cache INFO: enabled package manager cache Start: cleaning package manager metadata Finish: cleaning package manager metadata INFO: enabled HW Info plugin INFO: Package manager dnf5 detected and used (fallback) INFO: Buildroot is handled by package management from host and used with --installroot: rpm-4.20.0-1.fc41.x86_64 rpm-sequoia-1.7.0-2.fc41.x86_64 python3-dnf-4.22.0-1.fc41.noarch python3-dnf-plugins-core-4.10.0-1.fc41.noarch dnf5-5.2.8.1-3.fc41.x86_64 dnf5-plugins-5.2.8.1-3.fc41.x86_64 Start: installing minimal buildroot with dnf5 Updating and loading repositories: fedora 100% | 17.1 MiB/s | 21.6 MiB | 00m01s Copr repository 100% | 15.3 MiB/s | 4.4 MiB | 00m00s Additional repo http_kojipkgs_fedorapr 100% | 48.3 MiB/s | 14.2 MiB | 00m00s Repositories loaded. Package Arch Version Repository Size Installing group/module packages: bash x86_64 5.2.37-1.fc42 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 8.2 MiB bzip2 x86_64 1.0.8-20.fc42 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 99.3 KiB coreutils x86_64 9.6-1.fc42 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 5.5 MiB cpio x86_64 2.15-2.fc41 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 1.1 MiB diffutils x86_64 3.10-9.fc42 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 1.6 MiB fedora-release-common noarch 42-0.16 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 19.8 KiB findutils x86_64 1:4.10.0-5.fc42 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 1.9 MiB gawk x86_64 5.3.1-1.fc42 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 1.7 MiB glibc-minimal-langpack x86_64 2.40.9000-34.fc42 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 0.0 B grep x86_64 3.11-10.fc42 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 1.0 MiB gzip x86_64 1.13-3.fc42 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 392.9 KiB info x86_64 7.2-3.fc42 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 357.9 KiB patch x86_64 2.7.6-26.fc42 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 258.7 KiB redhat-rpm-config noarch 300-1.fc42 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 186.8 KiB rpm-build x86_64 4.20.0-8.fc42 copr_base 165.2 KiB sed x86_64 4.9-4.fc42 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 857.3 KiB shadow-utils x86_64 2:4.17.0-4.fc42 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 4.0 MiB tar x86_64 2:1.35-5.fc42 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 3.0 MiB unzip x86_64 6.0-66.fc42 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 390.3 KiB util-linux x86_64 2.40.4-1.fc42 copr_base 3.5 MiB which x86_64 2.22-1.fc42 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 83.1 KiB xz x86_64 1:5.6.3-3.fc42 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 1.2 MiB Installing dependencies: add-determinism x86_64 0.5.0-2.fc42 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 2.5 MiB alternatives x86_64 1.31-3.fc42 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 66.2 KiB ansible-srpm-macros noarch 1-17.1.fc42 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 35.7 KiB audit-libs x86_64 4.0.3-2.fc42 copr_base 351.3 KiB authselect x86_64 1.5.0-9.fc42 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 156.0 KiB authselect-libs x86_64 1.5.0-9.fc42 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 820.0 KiB basesystem noarch 11-22.fc42 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 0.0 B binutils x86_64 2.43.50-12.fc42 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 25.8 MiB build-reproducibility-srpm-macros noarch 0.5.0-2.fc42 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 735.0 B bzip2-libs x86_64 1.0.8-20.fc42 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 84.6 KiB ca-certificates noarch 2024.2.69_v8.0.401-5.fc42 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 2.6 MiB coreutils-common x86_64 9.6-1.fc42 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 11.1 MiB cracklib x86_64 2.9.11-7.fc42 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 242.4 KiB crypto-policies noarch 20250124-1.git4d262e7.fc42 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 137.4 KiB curl x86_64 8.11.1-3.fc42 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 454.7 KiB cyrus-sasl-lib x86_64 2.1.28-28.fc42 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 2.3 MiB dbus x86_64 1:1.16.0-3.fc42 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 0.0 B dbus-broker x86_64 36-5.fc42 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 395.1 KiB dbus-common noarch 1:1.16.0-3.fc42 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 11.2 KiB debugedit x86_64 5.1-4.fc42 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 200.4 KiB dwz x86_64 0.15-9.fc42 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 291.0 KiB ed x86_64 1.21-2.fc42 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 146.5 KiB efi-srpm-macros noarch 6-2.fc42 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 40.1 KiB elfutils x86_64 0.192-8.fc42 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 2.7 MiB elfutils-debuginfod-client x86_64 0.192-8.fc42 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 83.9 KiB elfutils-default-yama-scope noarch 0.192-8.fc42 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 1.8 KiB elfutils-libelf x86_64 0.192-8.fc42 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 1.2 MiB elfutils-libs x86_64 0.192-8.fc42 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 675.0 KiB expat x86_64 2.6.4-2.fc42 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 292.8 KiB fedora-gpg-keys noarch 42-0.4 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 128.2 KiB fedora-release noarch 42-0.16 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 0.0 B fedora-release-identity-basic noarch 42-0.16 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 719.0 B fedora-repos noarch 42-0.4 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 4.9 KiB fedora-repos-rawhide noarch 42-0.4 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 2.2 KiB file x86_64 5.45-9.fc42 copr_base 103.4 KiB file-libs x86_64 5.45-9.fc42 copr_base 9.9 MiB filesystem x86_64 3.18-36.fc42 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 112.0 B filesystem-srpm-macros noarch 3.18-36.fc42 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 38.2 KiB fonts-srpm-macros noarch 1:2.0.5-21.fc42 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 55.8 KiB forge-srpm-macros noarch 0.4.0-2.fc42 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 38.9 KiB fpc-srpm-macros noarch 1.3-14.fc42 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 144.0 B gdb-minimal x86_64 15.2-7.fc42 copr_base 13.0 MiB gdbm x86_64 1:1.23-7.fc41 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 460.9 KiB gdbm-libs x86_64 1:1.23-7.fc41 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 121.9 KiB ghc-srpm-macros noarch 1.9.2-2.fc42 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 779.0 B glibc x86_64 2.40.9000-34.fc42 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 6.6 MiB glibc-common x86_64 2.40.9000-34.fc42 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 1.0 MiB glibc-gconv-extra x86_64 2.40.9000-34.fc42 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 7.2 MiB gmp x86_64 1:6.3.0-2.fc41 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 811.4 KiB gnat-srpm-macros noarch 6-7.fc42 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 1.0 KiB go-srpm-macros noarch 3.6.0-6.fc42 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 60.8 KiB jansson x86_64 2.14-2.fc42 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 93.1 KiB json-c x86_64 0.18-2.fc42 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 86.7 KiB kernel-srpm-macros noarch 1.0-25.fc42 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 1.9 KiB keyutils-libs x86_64 1.6.3-5.fc42 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 58.3 KiB krb5-libs x86_64 1.21.3-4.fc42 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 2.3 MiB libacl x86_64 2.3.2-3.fc42 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 38.3 KiB libarchive x86_64 3.7.7-2.fc42 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 938.6 KiB libattr x86_64 2.5.2-5.fc42 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 27.1 KiB libblkid x86_64 2.40.4-1.fc42 copr_base 261.2 KiB libbrotli x86_64 1.1.0-6.fc42 copr_base 841.3 KiB libcap x86_64 2.73-2.fc42 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 207.1 KiB libcap-ng x86_64 0.8.5-4.fc42 copr_base 72.9 KiB libcom_err x86_64 1.47.2-3.fc42 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 67.1 KiB libcurl x86_64 8.11.1-3.fc42 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 842.0 KiB libeconf x86_64 0.7.5-2.fc42 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 68.5 KiB libevent x86_64 2.1.12-15.fc42 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 903.1 KiB libfdisk x86_64 2.40.4-1.fc42 copr_base 364.4 KiB libffi x86_64 3.4.6-5.fc42 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 82.3 KiB libgcc x86_64 15.0.1-0.4.fc42 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 266.6 KiB libgomp x86_64 15.0.1-0.4.fc42 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 535.5 KiB libidn2 x86_64 2.3.7-3.fc42 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 329.0 KiB libmount x86_64 2.40.4-1.fc42 copr_base 352.8 KiB libnghttp2 x86_64 1.64.0-3.fc42 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 170.4 KiB libnsl2 x86_64 2.0.1-3.fc42 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 57.9 KiB libpkgconf x86_64 2.3.0-2.fc42 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 78.1 KiB libpsl x86_64 0.21.5-5.fc42 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 76.4 KiB libpwquality x86_64 1.4.5-12.fc42 copr_base 409.3 KiB libseccomp x86_64 2.5.5-2.fc41 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 173.3 KiB libselinux x86_64 3.8-0.rc3.1.fc42.3 copr_base 193.1 KiB libsemanage x86_64 3.8-0.rc3.1.fc42.1 copr_base 308.4 KiB libsepol x86_64 3.8-0.rc3.1.fc42.1 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 825.9 KiB libsmartcols x86_64 2.40.4-1.fc42 copr_base 176.2 KiB libssh x86_64 0.11.1-4.fc42 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 565.5 KiB libssh-config noarch 0.11.1-4.fc42 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 277.0 B libstdc++ x86_64 15.0.1-0.4.fc42 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 2.8 MiB libtasn1 x86_64 4.19.0-11.fc42 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 175.6 KiB libtirpc x86_64 1.3.6-1.rc3.fc42.2 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 199.0 KiB libtool-ltdl x86_64 2.5.4-4.fc42 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 70.1 KiB libunistring x86_64 1.1-9.fc42 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 1.7 MiB libuuid x86_64 2.40.4-1.fc42 copr_base 39.9 KiB libverto x86_64 0.3.2-10.fc42 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 25.4 KiB libxcrypt x86_64 4.4.38-4.fc42 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 268.0 KiB libxml2 x86_64 2.12.9-2.fc42 copr_base 1.7 MiB libzstd x86_64 1.5.6-3.fc42 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 795.8 KiB lua-libs x86_64 5.4.7-2.fc42 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 280.9 KiB lua-srpm-macros noarch 1-15.fc42 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 1.3 KiB lz4-libs x86_64 1.10.0-2.fc42 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 157.4 KiB mpfr x86_64 4.2.1-6.fc42 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 831.9 KiB ncurses-base noarch 6.5-4.20250118.fc42 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 326.8 KiB ncurses-libs x86_64 6.5-4.20250118.fc42 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 946.3 KiB ocaml-srpm-macros noarch 10-4.fc42 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 1.9 KiB openblas-srpm-macros noarch 2-19.fc42 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 112.0 B openldap x86_64 2.6.9-3.fc42 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 655.1 KiB openssl-libs x86_64 1:3.2.2-13.fc42 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 7.8 MiB p11-kit x86_64 0.25.5-5.fc42 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 2.2 MiB p11-kit-trust x86_64 0.25.5-5.fc42 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 395.5 KiB package-notes-srpm-macros noarch 0.5-13.fc42 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 1.6 KiB pam x86_64 1.7.0-4.fc42 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 1.6 MiB pam-libs x86_64 1.7.0-4.fc42 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 126.7 KiB pcre2 x86_64 10.44-1.fc42.2 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 649.3 KiB pcre2-syntax noarch 10.44-1.fc42.2 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 251.6 KiB perl-srpm-macros noarch 1-57.fc42 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 861.0 B pkgconf x86_64 2.3.0-2.fc42 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 88.5 KiB pkgconf-m4 noarch 2.3.0-2.fc42 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 14.4 KiB pkgconf-pkg-config x86_64 2.3.0-2.fc42 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 989.0 B popt x86_64 1.19-8.fc42 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 132.8 KiB publicsuffix-list-dafsa noarch 20250116-1.fc42 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 68.5 KiB pyproject-srpm-macros noarch 1.16.4-2.fc42 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 1.9 KiB python-srpm-macros noarch 3.14-3.fc42 copr_base 51.0 KiB qt5-srpm-macros noarch 5.15.15-1.fc42 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 500.0 B qt6-srpm-macros noarch 6.8.1-5.fc42 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 456.0 B readline x86_64 8.2-12.fc42 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 485.0 KiB rpm x86_64 4.20.0-8.fc42 copr_base 3.0 MiB rpm-build-libs x86_64 4.20.0-8.fc42 copr_base 202.6 KiB rpm-libs x86_64 4.20.0-8.fc42 copr_base 721.8 KiB rpm-sequoia x86_64 1.7.0-4.fc42 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 2.4 MiB rust-srpm-macros noarch 26.3-4.fc42 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 4.8 KiB setup noarch 2.15.0-10.fc42 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 720.7 KiB sqlite-libs x86_64 3.47.2-2.fc42 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 1.5 MiB systemd x86_64 257.2-14.fc42 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 17.4 MiB systemd-libs x86_64 257.2-14.fc42 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 2.2 MiB systemd-pam x86_64 257.2-14.fc42 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 1.1 MiB systemd-rpm-macros noarch 257.2-14.fc42 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 10.7 KiB util-linux-core x86_64 2.40.4-1.fc42 copr_base 1.5 MiB xxhash-libs x86_64 0.8.3-2.fc42 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 90.2 KiB xz-libs x86_64 1:5.6.3-3.fc42 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 218.3 KiB zig-srpm-macros noarch 1-4.fc42 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 1.1 KiB zip x86_64 3.0-43.fc42 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 698.5 KiB zlib-ng-compat x86_64 2.2.3-2.fc42 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 137.6 KiB zstd x86_64 1.5.6-3.fc42 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 1.7 MiB Installing groups: Buildsystem building group Transaction Summary: Installing: 163 packages Total size of inbound packages is 59 MiB. Need to download 59 MiB. After this operation, 197 MiB extra will be used (install 197 MiB, remove 0 B). [ 1/163] bzip2-0:1.0.8-20.fc42.x86_64 100% | 520.7 KiB/s | 52.1 KiB | 00m00s [ 2/163] cpio-0:2.15-2.fc41.x86_64 100% | 6.5 MiB/s | 285.2 KiB | 00m00s [ 3/163] coreutils-0:9.6-1.fc42.x86_64 100% | 7.6 MiB/s | 1.1 MiB | 00m00s [ 4/163] bash-0:5.2.37-1.fc42.x86_64 100% | 11.7 MiB/s | 1.8 MiB | 00m00s [ 5/163] diffutils-0:3.10-9.fc42.x86_6 100% | 11.4 MiB/s | 396.4 KiB | 00m00s [ 6/163] fedora-release-common-0:42-0. 100% | 784.3 KiB/s | 24.3 KiB | 00m00s [ 7/163] findutils-1:4.10.0-5.fc42.x86 100% | 14.7 MiB/s | 542.7 KiB | 00m00s [ 8/163] glibc-minimal-langpack-0:2.40 100% | 3.2 MiB/s | 127.6 KiB | 00m00s [ 9/163] grep-0:3.11-10.fc42.x86_64 100% | 8.6 MiB/s | 290.1 KiB | 00m00s [ 10/163] gawk-0:5.3.1-1.fc42.x86_64 100% | 21.3 MiB/s | 1.1 MiB | 00m00s [ 11/163] gzip-0:1.13-3.fc42.x86_64 100% | 7.3 MiB/s | 164.2 KiB | 00m00s [ 12/163] info-0:7.2-3.fc42.x86_64 100% | 8.5 MiB/s | 183.8 KiB | 00m00s [ 13/163] patch-0:2.7.6-26.fc42.x86_64 100% | 5.7 MiB/s | 128.4 KiB | 00m00s [ 14/163] redhat-rpm-config-0:300-1.fc4 100% | 3.9 MiB/s | 76.1 KiB | 00m00s [ 15/163] sed-0:4.9-4.fc42.x86_64 100% | 10.1 MiB/s | 308.8 KiB | 00m00s [ 16/163] rpm-build-0:4.20.0-8.fc42.x86 100% | 1.4 MiB/s | 75.0 KiB | 00m00s [ 17/163] shadow-utils-2:4.17.0-4.fc42. 100% | 32.1 MiB/s | 1.3 MiB | 00m00s [ 18/163] unzip-0:6.0-66.fc42.x86_64 100% | 8.6 MiB/s | 184.6 KiB | 00m00s [ 19/163] tar-2:1.35-5.fc42.x86_64 100% | 21.9 MiB/s | 853.9 KiB | 00m00s [ 20/163] which-0:2.22-1.fc42.x86_64 100% | 2.4 MiB/s | 41.5 KiB | 00m00s [ 21/163] xz-1:5.6.3-3.fc42.x86_64 100% | 17.3 MiB/s | 461.3 KiB | 00m00s [ 22/163] util-linux-0:2.40.4-1.fc42.x8 100% | 18.4 MiB/s | 1.0 MiB | 00m00s [ 23/163] libblkid-0:2.40.4-1.fc42.x86_ 100% | 5.4 MiB/s | 121.5 KiB | 00m00s [ 24/163] libfdisk-0:2.40.4-1.fc42.x86_ 100% | 11.6 MiB/s | 154.7 KiB | 00m00s [ 25/163] libmount-0:2.40.4-1.fc42.x86_ 100% | 11.4 MiB/s | 151.9 KiB | 00m00s [ 26/163] libsmartcols-0:2.40.4-1.fc42. 100% | 6.1 MiB/s | 81.2 KiB | 00m00s [ 27/163] libuuid-0:2.40.4-1.fc42.x86_6 100% | 2.5 MiB/s | 27.9 KiB | 00m00s [ 28/163] util-linux-core-0:2.40.4-1.fc 100% | 29.3 MiB/s | 479.3 KiB | 00m00s [ 29/163] xz-libs-1:5.6.3-3.fc42.x86_64 100% | 5.3 MiB/s | 113.4 KiB | 00m00s [ 30/163] bzip2-libs-0:1.0.8-20.fc42.x8 100% | 2.1 MiB/s | 43.6 KiB | 00m00s [ 31/163] glibc-0:2.40.9000-34.fc42.x86 100% | 50.4 MiB/s | 2.3 MiB | 00m00s [ 32/163] libacl-0:2.3.2-3.fc42.x86_64 100% | 1.0 MiB/s | 23.0 KiB | 00m00s [ 33/163] libselinux-0:3.8-0.rc3.1.fc42 100% | 7.9 MiB/s | 97.4 KiB | 00m00s [ 34/163] audit-libs-0:4.0.3-2.fc42.x86 100% | 10.2 MiB/s | 125.8 KiB | 00m00s [ 35/163] libsemanage-0:3.8-0.rc3.1.fc4 100% | 7.6 MiB/s | 124.2 KiB | 00m00s [ 36/163] libeconf-0:0.7.5-2.fc42.x86_6 100% | 1.3 MiB/s | 35.1 KiB | 00m00s [ 37/163] filesystem-0:3.18-36.fc42.x86 100% | 36.5 MiB/s | 1.3 MiB | 00m00s [ 38/163] pam-libs-0:1.7.0-4.fc42.x86_6 100% | 2.4 MiB/s | 58.3 KiB | 00m00s [ 39/163] libxcrypt-0:4.4.38-4.fc42.x86 100% | 4.7 MiB/s | 119.2 KiB | 00m00s [ 40/163] setup-0:2.15.0-10.fc42.noarch 100% | 6.1 MiB/s | 149.8 KiB | 00m00s [ 41/163] ansible-srpm-macros-0:1-17.1. 100% | 883.2 KiB/s | 20.3 KiB | 00m00s [ 42/163] build-reproducibility-srpm-ma 100% | 504.5 KiB/s | 11.6 KiB | 00m00s [ 43/163] glibc-gconv-extra-0:2.40.9000 100% | 40.8 MiB/s | 1.6 MiB | 00m00s [ 44/163] dwz-0:0.15-9.fc42.x86_64 100% | 6.0 MiB/s | 135.7 KiB | 00m00s [ 45/163] efi-srpm-macros-0:6-2.fc42.no 100% | 1.0 MiB/s | 22.5 KiB | 00m00s [ 46/163] file-0:5.45-9.fc42.x86_64 100% | 4.0 MiB/s | 49.1 KiB | 00m00s [ 47/163] filesystem-srpm-macros-0:3.18 100% | 1.2 MiB/s | 25.6 KiB | 00m00s [ 48/163] fonts-srpm-macros-1:2.0.5-21. 100% | 1.3 MiB/s | 27.1 KiB | 00m00s [ 49/163] forge-srpm-macros-0:0.4.0-2.f 100% | 945.3 KiB/s | 19.9 KiB | 00m00s [ 50/163] fpc-srpm-macros-0:1.3-14.fc42 100% | 501.2 KiB/s | 8.0 KiB | 00m00s [ 51/163] ghc-srpm-macros-0:1.9.2-2.fc4 100% | 508.7 KiB/s | 9.2 KiB | 00m00s [ 52/163] gnat-srpm-macros-0:6-7.fc42.n 100% | 478.4 KiB/s | 8.6 KiB | 00m00s [ 53/163] go-srpm-macros-0:3.6.0-6.fc42 100% | 1.4 MiB/s | 27.7 KiB | 00m00s [ 54/163] lua-srpm-macros-0:1-15.fc42.n 100% | 495.4 KiB/s | 8.9 KiB | 00m00s [ 55/163] kernel-srpm-macros-0:1.0-25.f 100% | 493.6 KiB/s | 9.9 KiB | 00m00s [ 56/163] ocaml-srpm-macros-0:10-4.fc42 100% | 511.4 KiB/s | 9.2 KiB | 00m00s [ 57/163] openblas-srpm-macros-0:2-19.f 100% | 431.4 KiB/s | 7.8 KiB | 00m00s [ 58/163] package-notes-srpm-macros-0:0 100% | 544.7 KiB/s | 9.3 KiB | 00m00s [ 59/163] python-srpm-macros-0:3.14-3.f 100% | 2.0 MiB/s | 24.3 KiB | 00m00s [ 60/163] perl-srpm-macros-0:1-57.fc42. 100% | 405.0 KiB/s | 8.5 KiB | 00m00s [ 61/163] pyproject-srpm-macros-0:1.16. 100% | 668.3 KiB/s | 14.0 KiB | 00m00s [ 62/163] qt5-srpm-macros-0:5.15.15-1.f 100% | 468.3 KiB/s | 8.9 KiB | 00m00s [ 63/163] qt6-srpm-macros-0:6.8.1-5.fc4 100% | 519.2 KiB/s | 9.3 KiB | 00m00s [ 64/163] rpm-0:4.20.0-8.fc42.x86_64 100% | 29.8 MiB/s | 518.6 KiB | 00m00s [ 65/163] rust-srpm-macros-0:26.3-4.fc4 100% | 688.5 KiB/s | 11.7 KiB | 00m00s [ 66/163] zig-srpm-macros-0:1-4.fc42.no 100% | 458.0 KiB/s | 8.2 KiB | 00m00s [ 67/163] zip-0:3.0-43.fc42.x86_64 100% | 12.3 MiB/s | 263.5 KiB | 00m00s [ 68/163] ed-0:1.21-2.fc42.x86_64 100% | 3.8 MiB/s | 82.0 KiB | 00m00s [ 69/163] libattr-0:2.5.2-5.fc42.x86_64 100% | 899.1 KiB/s | 17.1 KiB | 00m00s [ 70/163] ncurses-libs-0:6.5-4.20250118 100% | 14.9 MiB/s | 334.8 KiB | 00m00s [ 71/163] ncurses-base-0:6.5-4.20250118 100% | 3.1 MiB/s | 63.4 KiB | 00m00s [ 72/163] pcre2-0:10.44-1.fc42.2.x86_64 100% | 11.9 MiB/s | 243.4 KiB | 00m00s [ 73/163] glibc-common-0:2.40.9000-34.f 100% | 16.7 MiB/s | 410.5 KiB | 00m00s [ 74/163] basesystem-0:11-22.fc42.noarc 100% | 347.1 KiB/s | 7.3 KiB | 00m00s [ 75/163] libgcc-0:15.0.1-0.4.fc42.x86_ 100% | 5.2 MiB/s | 112.1 KiB | 00m00s [ 76/163] gmp-1:6.3.0-2.fc41.x86_64 100% | 15.5 MiB/s | 318.0 KiB | 00m00s [ 77/163] readline-0:8.2-12.fc42.x86_64 100% | 10.0 MiB/s | 215.2 KiB | 00m00s [ 78/163] mpfr-0:4.2.1-6.fc42.x86_64 100% | 15.5 MiB/s | 348.5 KiB | 00m00s [ 79/163] fedora-repos-0:42-0.4.noarch 100% | 545.8 KiB/s | 9.3 KiB | 00m00s [ 80/163] elfutils-libelf-0:0.192-8.fc4 100% | 11.3 MiB/s | 208.1 KiB | 00m00s [ 81/163] libcap-0:2.73-2.fc42.x86_64 100% | 4.6 MiB/s | 84.3 KiB | 00m00s [ 82/163] openssl-libs-1:3.2.2-13.fc42. 100% | 46.0 MiB/s | 2.3 MiB | 00m00s [ 83/163] coreutils-common-0:9.6-1.fc42 100% | 29.1 MiB/s | 2.1 MiB | 00m00s [ 84/163] systemd-libs-0:257.2-14.fc42. 100% | 17.0 MiB/s | 820.1 KiB | 00m00s [ 85/163] zlib-ng-compat-0:2.2.3-2.fc42 100% | 3.7 MiB/s | 78.9 KiB | 00m00s [ 86/163] authselect-libs-0:1.5.0-9.fc4 100% | 9.0 MiB/s | 202.9 KiB | 00m00s [ 87/163] add-determinism-0:0.5.0-2.fc4 100% | 31.9 MiB/s | 914.6 KiB | 00m00s [ 88/163] libcap-ng-0:0.8.5-4.fc42.x86_ 100% | 2.7 MiB/s | 32.7 KiB | 00m00s [ 89/163] pam-0:1.7.0-4.fc42.x86_64 100% | 22.0 MiB/s | 519.3 KiB | 00m00s [ 90/163] debugedit-0:5.1-4.fc42.x86_64 100% | 4.3 MiB/s | 78.9 KiB | 00m00s [ 91/163] elfutils-0:0.192-8.fc42.x86_6 100% | 23.2 MiB/s | 545.8 KiB | 00m00s [ 92/163] libarchive-0:3.7.7-2.fc42.x86 100% | 15.7 MiB/s | 416.9 KiB | 00m00s [ 93/163] pkgconf-pkg-config-0:2.3.0-2. 100% | 620.3 KiB/s | 9.9 KiB | 00m00s [ 94/163] popt-0:1.19-8.fc42.x86_64 100% | 3.2 MiB/s | 59.4 KiB | 00m00s [ 95/163] rpm-build-libs-0:4.20.0-8.fc4 100% | 8.1 MiB/s | 99.1 KiB | 00m00s [ 96/163] rpm-libs-0:4.20.0-8.fc42.x86_ 100% | 20.5 MiB/s | 314.2 KiB | 00m00s [ 97/163] zstd-0:1.5.6-3.fc42.x86_64 100% | 19.5 MiB/s | 479.6 KiB | 00m00s [ 98/163] curl-0:8.11.1-3.fc42.x86_64 100% | 9.1 MiB/s | 222.8 KiB | 00m00s [ 99/163] libsepol-0:3.8-0.rc3.1.fc42.1 100% | 16.2 MiB/s | 348.7 KiB | 00m00s [100/163] file-libs-0:5.45-9.fc42.x86_6 100% | 33.9 MiB/s | 764.4 KiB | 00m00s [101/163] libstdc++-0:15.0.1-0.4.fc42.x 100% | 29.0 MiB/s | 890.1 KiB | 00m00s [102/163] lz4-libs-0:1.10.0-2.fc42.x86_ 100% | 4.2 MiB/s | 78.1 KiB | 00m00s [103/163] pkgconf-0:2.3.0-2.fc42.x86_64 100% | 2.6 MiB/s | 44.9 KiB | 00m00s [104/163] pkgconf-m4-0:2.3.0-2.fc42.noa 100% | 837.4 KiB/s | 14.2 KiB | 00m00s [105/163] binutils-0:2.43.50-12.fc42.x8 100% | 30.7 MiB/s | 5.8 MiB | 00m00s [106/163] libpkgconf-0:2.3.0-2.fc42.x86 100% | 2.1 MiB/s | 38.4 KiB | 00m00s [107/163] pcre2-syntax-0:10.44-1.fc42.2 100% | 7.7 MiB/s | 149.8 KiB | 00m00s [108/163] authselect-0:1.5.0-9.fc42.x86 100% | 7.2 MiB/s | 140.0 KiB | 00m00s [109/163] gdbm-1:1.23-7.fc41.x86_64 100% | 8.0 MiB/s | 147.2 KiB | 00m00s [110/163] gdbm-libs-1:1.23-7.fc41.x86_6 100% | 2.7 MiB/s | 56.3 KiB | 00m00s [111/163] libpwquality-0:1.4.5-12.fc42. 100% | 8.1 MiB/s | 108.1 KiB | 00m00s [112/163] libnsl2-0:2.0.1-3.fc42.x86_64 100% | 1.6 MiB/s | 29.5 KiB | 00m00s [113/163] libtirpc-0:1.3.6-1.rc3.fc42.2 100% | 5.2 MiB/s | 95.5 KiB | 00m00s [114/163] crypto-policies-0:20250124-1. 100% | 3.6 MiB/s | 73.6 KiB | 00m00s [115/163] ca-certificates-0:2024.2.69_v 100% | 34.2 MiB/s | 945.0 KiB | 00m00s [116/163] krb5-libs-0:1.21.3-4.fc42.x86 100% | 23.9 MiB/s | 759.4 KiB | 00m00s [117/163] libcom_err-0:1.47.2-3.fc42.x8 100% | 1.4 MiB/s | 26.9 KiB | 00m00s [118/163] libxml2-0:2.12.9-2.fc42.x86_6 100% | 35.8 MiB/s | 696.5 KiB | 00m00s [119/163] libzstd-0:1.5.6-3.fc42.x86_64 100% | 15.2 MiB/s | 311.1 KiB | 00m00s [120/163] keyutils-libs-0:1.6.3-5.fc42. 100% | 1.7 MiB/s | 31.5 KiB | 00m00s [121/163] libverto-0:0.3.2-10.fc42.x86_ 100% | 1.1 MiB/s | 20.8 KiB | 00m00s [122/163] fedora-gpg-keys-0:42-0.4.noar 100% | 6.4 MiB/s | 125.2 KiB | 00m00s [123/163] fedora-repos-rawhide-0:42-0.4 100% | 520.6 KiB/s | 8.9 KiB | 00m00s [124/163] elfutils-debuginfod-client-0: 100% | 2.5 MiB/s | 46.5 KiB | 00m00s [125/163] libffi-0:3.4.6-5.fc42.x86_64 100% | 2.1 MiB/s | 39.9 KiB | 00m00s [126/163] elfutils-libs-0:0.192-8.fc42. 100% | 10.8 MiB/s | 265.9 KiB | 00m00s [127/163] p11-kit-0:0.25.5-5.fc42.x86_6 100% | 13.3 MiB/s | 478.0 KiB | 00m00s [128/163] p11-kit-trust-0:0.25.5-5.fc42 100% | 5.9 MiB/s | 132.6 KiB | 00m00s [129/163] alternatives-0:1.31-3.fc42.x8 100% | 1.9 MiB/s | 40.9 KiB | 00m00s [130/163] jansson-0:2.14-2.fc42.x86_64 100% | 2.5 MiB/s | 45.7 KiB | 00m00s [131/163] lua-libs-0:5.4.7-2.fc42.x86_6 100% | 6.8 MiB/s | 133.0 KiB | 00m00s [132/163] libgomp-0:15.0.1-0.4.fc42.x86 100% | 11.6 MiB/s | 345.8 KiB | 00m00s [133/163] rpm-sequoia-0:1.7.0-4.fc42.x8 100% | 16.8 MiB/s | 911.3 KiB | 00m00s [134/163] sqlite-libs-0:3.47.2-2.fc42.x 100% | 17.1 MiB/s | 734.8 KiB | 00m00s [135/163] cracklib-0:2.9.11-7.fc42.x86_ 100% | 4.4 MiB/s | 81.2 KiB | 00m00s [136/163] libtasn1-0:4.19.0-11.fc42.x86 100% | 3.8 MiB/s | 74.5 KiB | 00m00s [137/163] elfutils-default-yama-scope-0 100% | 699.8 KiB/s | 12.6 KiB | 00m00s [138/163] json-c-0:0.18-2.fc42.x86_64 100% | 2.6 MiB/s | 44.9 KiB | 00m00s [139/163] systemd-rpm-macros-0:257.2-14 100% | 2.0 MiB/s | 35.5 KiB | 00m00s [140/163] dbus-1:1.16.0-3.fc42.x86_64 100% | 387.9 KiB/s | 7.8 KiB | 00m00s [141/163] libseccomp-0:2.5.5-2.fc41.x86 100% | 3.3 MiB/s | 70.2 KiB | 00m00s [142/163] systemd-pam-0:257.2-14.fc42.x 100% | 17.7 MiB/s | 417.3 KiB | 00m00s [143/163] dbus-broker-0:36-5.fc42.x86_6 100% | 8.9 MiB/s | 174.1 KiB | 00m00s [144/163] dbus-common-1:1.16.0-3.fc42.n 100% | 803.0 KiB/s | 14.5 KiB | 00m00s [145/163] expat-0:2.6.4-2.fc42.x86_64 100% | 5.9 MiB/s | 114.7 KiB | 00m00s [146/163] fedora-release-0:42-0.16.noar 100% | 790.0 KiB/s | 13.4 KiB | 00m00s [147/163] fedora-release-identity-basic 100% | 711.9 KiB/s | 14.2 KiB | 00m00s [148/163] libcurl-0:8.11.1-3.fc42.x86_6 100% | 17.5 MiB/s | 376.9 KiB | 00m00s [149/163] xxhash-libs-0:0.8.3-2.fc42.x8 100% | 1.5 MiB/s | 39.1 KiB | 00m00s [150/163] gdb-minimal-0:15.2-7.fc42.x86 100% | 57.4 MiB/s | 4.4 MiB | 00m00s [151/163] libbrotli-0:1.1.0-6.fc42.x86_ 100% | 8.7 MiB/s | 340.3 KiB | 00m00s [152/163] libidn2-0:2.3.7-3.fc42.x86_64 100% | 5.2 MiB/s | 112.2 KiB | 00m00s [153/163] libnghttp2-0:1.64.0-3.fc42.x8 100% | 3.8 MiB/s | 77.7 KiB | 00m00s [154/163] systemd-0:257.2-14.fc42.x86_6 100% | 27.0 MiB/s | 5.8 MiB | 00m00s [155/163] libpsl-0:0.21.5-5.fc42.x86_64 100% | 3.5 MiB/s | 64.0 KiB | 00m00s [156/163] libssh-0:0.11.1-4.fc42.x86_64 100% | 9.1 MiB/s | 233.3 KiB | 00m00s [157/163] openldap-0:2.6.9-3.fc42.x86_6 100% | 13.4 MiB/s | 260.2 KiB | 00m00s [158/163] libevent-0:2.1.12-15.fc42.x86 100% | 8.8 MiB/s | 260.2 KiB | 00m00s [159/163] libtool-ltdl-0:2.5.4-4.fc42.x 100% | 1.8 MiB/s | 36.2 KiB | 00m00s [160/163] cyrus-sasl-lib-0:2.1.28-28.fc 100% | 16.2 MiB/s | 762.7 KiB | 00m00s [161/163] libssh-config-0:0.11.1-4.fc42 100% | 409.2 KiB/s | 9.0 KiB | 00m00s [162/163] publicsuffix-list-dafsa-0:202 100% | 2.9 MiB/s | 58.8 KiB | 00m00s [163/163] libunistring-0:1.1-9.fc42.x86 100% | 18.3 MiB/s | 542.5 KiB | 00m00s -------------------------------------------------------------------------------- [163/163] Total 100% | 37.9 MiB/s | 59.1 MiB | 00m02s Running transaction [ 1/165] Verify package files 100% | 721.0 B/s | 163.0 B | 00m00s >>> Running pre-transaction scriptlet: filesystem-0:3.18-36.fc42.x86_64 >>> Finished pre-transaction scriptlet: filesystem-0:3.18-36.fc42.x86_64 >>> [RPM] /var/lib/mock/fedora-rawhide-x86_64-1738054906.026706/root/var/cache/d [ 2/165] Prepare transaction 100% | 1.7 KiB/s | 163.0 B | 00m00s [ 3/165] Installing libgcc-0:15.0.1-0. 100% | 131.0 MiB/s | 268.3 KiB | 00m00s [ 4/165] Installing publicsuffix-list- 100% | 67.6 MiB/s | 69.2 KiB | 00m00s [ 5/165] Installing libssh-config-0:0. 100% | 0.0 B/s | 816.0 B | 00m00s [ 6/165] Installing fedora-release-ide 100% | 0.0 B/s | 976.0 B | 00m00s [ 7/165] Installing fedora-gpg-keys-0: 100% | 19.0 MiB/s | 174.8 KiB | 00m00s [ 8/165] Installing fedora-repos-rawhi 100% | 0.0 B/s | 2.4 KiB | 00m00s [ 9/165] Installing fedora-repos-0:42- 100% | 0.0 B/s | 5.7 KiB | 00m00s [ 10/165] Installing fedora-release-com 100% | 11.8 MiB/s | 24.1 KiB | 00m00s [ 11/165] Installing fedora-release-0:4 100% | 0.0 B/s | 124.0 B | 00m00s [ 12/165] Installing setup-0:2.15.0-10. 100% | 50.7 MiB/s | 726.5 KiB | 00m00s >>> [RPM] /etc/hosts created as /etc/hosts.rpmnew [ 13/165] Installing filesystem-0:3.18- 100% | 1.4 MiB/s | 212.4 KiB | 00m00s [ 14/165] Installing basesystem-0:11-22 100% | 0.0 B/s | 124.0 B | 00m00s [ 15/165] Installing pcre2-syntax-0:10. 100% | 124.1 MiB/s | 254.1 KiB | 00m00s [ 16/165] Installing pkgconf-m4-0:2.3.0 100% | 14.5 MiB/s | 14.8 KiB | 00m00s [ 17/165] Installing coreutils-common-0 100% | 259.4 MiB/s | 11.2 MiB | 00m00s [ 18/165] Installing ncurses-base-0:6.5 100% | 34.4 MiB/s | 352.2 KiB | 00m00s [ 19/165] Installing glibc-minimal-lang 100% | 0.0 B/s | 124.0 B | 00m00s [ 20/165] Installing ncurses-libs-0:6.5 100% | 155.1 MiB/s | 952.9 KiB | 00m00s [ 21/165] Installing glibc-0:2.40.9000- 100% | 162.3 MiB/s | 6.7 MiB | 00m00s [ 22/165] Installing bash-0:5.2.37-1.fc 100% | 209.5 MiB/s | 8.2 MiB | 00m00s [ 23/165] Installing glibc-common-0:2.4 100% | 53.7 MiB/s | 1.0 MiB | 00m00s [ 24/165] Installing glibc-gconv-extra- 100% | 143.4 MiB/s | 7.3 MiB | 00m00s [ 25/165] Installing zlib-ng-compat-0:2 100% | 135.2 MiB/s | 138.4 KiB | 00m00s [ 26/165] Installing xz-libs-1:5.6.3-3. 100% | 214.3 MiB/s | 219.4 KiB | 00m00s [ 27/165] Installing bzip2-libs-0:1.0.8 100% | 83.7 MiB/s | 85.7 KiB | 00m00s [ 28/165] Installing libuuid-0:2.40.4-1 100% | 39.9 MiB/s | 40.9 KiB | 00m00s [ 29/165] Installing libblkid-0:2.40.4- 100% | 256.0 MiB/s | 262.2 KiB | 00m00s [ 30/165] Installing libxcrypt-0:4.4.38 100% | 132.2 MiB/s | 270.7 KiB | 00m00s [ 31/165] Installing readline-0:8.2-12. 100% | 237.9 MiB/s | 487.1 KiB | 00m00s [ 32/165] Installing popt-0:1.19-8.fc42 100% | 27.2 MiB/s | 139.4 KiB | 00m00s [ 33/165] Installing gmp-1:6.3.0-2.fc41 100% | 198.6 MiB/s | 813.7 KiB | 00m00s [ 34/165] Installing libstdc++-0:15.0.1 100% | 256.4 MiB/s | 2.8 MiB | 00m00s [ 35/165] Installing libzstd-0:1.5.6-3. 100% | 259.5 MiB/s | 797.0 KiB | 00m00s [ 36/165] Installing elfutils-libelf-0: 100% | 292.5 MiB/s | 1.2 MiB | 00m00s [ 37/165] Installing libeconf-0:0.7.5-2 100% | 68.5 MiB/s | 70.1 KiB | 00m00s [ 38/165] Installing libattr-0:2.5.2-5. 100% | 27.4 MiB/s | 28.1 KiB | 00m00s [ 39/165] Installing libacl-0:2.3.2-3.f 100% | 38.2 MiB/s | 39.2 KiB | 00m00s [ 40/165] Installing libcap-ng-0:0.8.5- 100% | 73.1 MiB/s | 74.8 KiB | 00m00s [ 41/165] Installing audit-libs-0:4.0.3 100% | 172.6 MiB/s | 353.4 KiB | 00m00s [ 42/165] Installing pam-libs-0:1.7.0-4 100% | 63.1 MiB/s | 129.1 KiB | 00m00s [ 43/165] Installing libcap-0:2.73-2.fc 100% | 14.8 MiB/s | 212.1 KiB | 00m00s [ 44/165] Installing systemd-libs-0:257 100% | 249.3 MiB/s | 2.2 MiB | 00m00s [ 45/165] Installing gdbm-libs-1:1.23-7 100% | 120.7 MiB/s | 123.6 KiB | 00m00s [ 46/165] Installing dwz-0:0.15-9.fc42. 100% | 23.8 MiB/s | 292.4 KiB | 00m00s [ 47/165] Installing mpfr-0:4.2.1-6.fc4 100% | 203.5 MiB/s | 833.6 KiB | 00m00s [ 48/165] Installing gawk-0:5.3.1-1.fc4 100% | 80.7 MiB/s | 1.7 MiB | 00m00s [ 49/165] Installing libfdisk-0:2.40.4- 100% | 178.4 MiB/s | 365.4 KiB | 00m00s [ 50/165] Installing unzip-0:6.0-66.fc4 100% | 27.5 MiB/s | 393.8 KiB | 00m00s [ 51/165] Installing file-libs-0:5.45-9 100% | 496.9 MiB/s | 9.9 MiB | 00m00s [ 52/165] Installing file-0:5.45-9.fc42 100% | 3.8 MiB/s | 104.8 KiB | 00m00s [ 53/165] Installing crypto-policies-0: 100% | 14.5 MiB/s | 163.7 KiB | 00m00s [ 54/165] Installing libsmartcols-0:2.4 100% | 173.1 MiB/s | 177.2 KiB | 00m00s [ 55/165] Installing pcre2-0:10.44-1.fc 100% | 211.8 MiB/s | 650.7 KiB | 00m00s [ 56/165] Installing grep-0:3.11-10.fc4 100% | 47.8 MiB/s | 1.0 MiB | 00m00s [ 57/165] Installing xz-1:5.6.3-3.fc42. 100% | 61.5 MiB/s | 1.2 MiB | 00m00s [ 58/165] Installing libsepol-0:3.8-0.r 100% | 201.9 MiB/s | 826.9 KiB | 00m00s [ 59/165] Installing libselinux-0:3.8-0 100% | 94.9 MiB/s | 194.3 KiB | 00m00s [ 60/165] Installing sed-0:4.9-4.fc42.x 100% | 49.7 MiB/s | 865.5 KiB | 00m00s [ 61/165] Installing findutils-1:4.10.0 100% | 89.2 MiB/s | 1.9 MiB | 00m00s [ 62/165] Installing libmount-0:2.40.4- 100% | 172.8 MiB/s | 354.0 KiB | 00m00s [ 63/165] Installing util-linux-core-0: 100% | 67.7 MiB/s | 1.5 MiB | 00m00s [ 64/165] Installing lz4-libs-0:1.10.0- 100% | 154.7 MiB/s | 158.5 KiB | 00m00s [ 65/165] Installing libcom_err-0:1.47. 100% | 66.6 MiB/s | 68.2 KiB | 00m00s [ 66/165] Installing libffi-0:3.4.6-5.f 100% | 81.7 MiB/s | 83.7 KiB | 00m00s [ 67/165] Installing alternatives-0:1.3 100% | 6.0 MiB/s | 67.7 KiB | 00m00s [ 68/165] Installing lua-libs-0:5.4.7-2 100% | 137.7 MiB/s | 282.1 KiB | 00m00s [ 69/165] Installing libtasn1-0:4.19.0- 100% | 86.6 MiB/s | 177.4 KiB | 00m00s [ 70/165] Installing p11-kit-0:0.25.5-5 100% | 84.0 MiB/s | 2.2 MiB | 00m00s [ 71/165] Installing libunistring-0:1.1 100% | 287.8 MiB/s | 1.7 MiB | 00m00s [ 72/165] Installing libidn2-0:2.3.7-3. 100% | 65.4 MiB/s | 335.0 KiB | 00m00s [ 73/165] Installing libpsl-0:0.21.5-5. 100% | 75.7 MiB/s | 77.5 KiB | 00m00s [ 74/165] Installing p11-kit-trust-0:0. 100% | 12.9 MiB/s | 397.2 KiB | 00m00s [ 75/165] Installing openssl-libs-1:3.2 100% | 279.8 MiB/s | 7.8 MiB | 00m00s [ 76/165] Installing coreutils-0:9.6-1. 100% | 102.7 MiB/s | 5.5 MiB | 00m00s [ 77/165] Installing ca-certificates-0: 100% | 1.3 MiB/s | 2.4 MiB | 00m02s [ 78/165] Installing gzip-0:1.13-3.fc42 100% | 22.9 MiB/s | 398.4 KiB | 00m00s [ 79/165] Installing authselect-libs-0: 100% | 81.5 MiB/s | 835.0 KiB | 00m00s [ 80/165] Installing cracklib-0:2.9.11- 100% | 13.8 MiB/s | 253.7 KiB | 00m00s [ 81/165] Installing libpwquality-0:1.4 100% | 21.7 MiB/s | 421.6 KiB | 00m00s [ 82/165] Installing rpm-sequoia-0:1.7. 100% | 268.3 MiB/s | 2.4 MiB | 00m00s [ 83/165] Installing libevent-0:2.1.12- 100% | 177.1 MiB/s | 906.9 KiB | 00m00s [ 84/165] Installing zstd-0:1.5.6-3.fc4 100% | 99.7 MiB/s | 1.7 MiB | 00m00s [ 85/165] Installing tar-2:1.35-5.fc42. 100% | 118.5 MiB/s | 3.0 MiB | 00m00s [ 86/165] Installing libsemanage-0:3.8- 100% | 101.0 MiB/s | 310.2 KiB | 00m00s [ 87/165] Installing shadow-utils-2:4.1 100% | 89.3 MiB/s | 4.0 MiB | 00m00s [ 88/165] Installing zip-0:3.0-43.fc42. 100% | 49.0 MiB/s | 702.4 KiB | 00m00s [ 89/165] Installing gdbm-1:1.23-7.fc41 100% | 30.3 MiB/s | 465.8 KiB | 00m00s [ 90/165] Installing cyrus-sasl-lib-0:2 100% | 114.5 MiB/s | 2.3 MiB | 00m00s [ 91/165] Installing bzip2-0:1.0.8-20.f 100% | 7.8 MiB/s | 103.8 KiB | 00m00s [ 92/165] Installing libxml2-0:2.12.9-2 100% | 89.9 MiB/s | 1.7 MiB | 00m00s [ 93/165] Installing libarchive-0:3.7.7 100% | 183.7 MiB/s | 940.6 KiB | 00m00s [ 94/165] Installing add-determinism-0: 100% | 129.3 MiB/s | 2.5 MiB | 00m00s [ 95/165] Installing build-reproducibil 100% | 0.0 B/s | 1.0 KiB | 00m00s [ 96/165] Installing sqlite-libs-0:3.47 100% | 250.7 MiB/s | 1.5 MiB | 00m00s [ 97/165] Installing filesystem-srpm-ma 100% | 38.0 MiB/s | 38.9 KiB | 00m00s [ 98/165] Installing ed-0:1.21-2.fc42.x 100% | 11.2 MiB/s | 148.8 KiB | 00m00s [ 99/165] Installing patch-0:2.7.6-26.f 100% | 21.2 MiB/s | 260.2 KiB | 00m00s [100/165] Installing elfutils-default-y 100% | 157.2 KiB/s | 2.0 KiB | 00m00s [101/165] Installing elfutils-libs-0:0. 100% | 165.2 MiB/s | 676.7 KiB | 00m00s [102/165] Installing dbus-common-1:1.16 100% | 1.0 MiB/s | 13.6 KiB | 00m00s [103/165] Installing cpio-0:2.15-2.fc41 100% | 55.0 MiB/s | 1.1 MiB | 00m00s [104/165] Installing diffutils-0:3.10-9 100% | 75.7 MiB/s | 1.6 MiB | 00m00s [105/165] Installing libpkgconf-0:2.3.0 100% | 77.4 MiB/s | 79.2 KiB | 00m00s [106/165] Installing pkgconf-0:2.3.0-2. 100% | 6.8 MiB/s | 91.0 KiB | 00m00s [107/165] Installing pkgconf-pkg-config 100% | 161.2 KiB/s | 1.8 KiB | 00m00s [108/165] Installing keyutils-libs-0:1. 100% | 58.3 MiB/s | 59.7 KiB | 00m00s [109/165] Installing libverto-0:0.3.2-1 100% | 26.6 MiB/s | 27.2 KiB | 00m00s [110/165] Installing krb5-libs-0:1.21.3 100% | 193.9 MiB/s | 2.3 MiB | 00m00s [111/165] Installing libtirpc-0:1.3.6-1 100% | 98.0 MiB/s | 200.7 KiB | 00m00s [112/165] Installing libnsl2-0:2.0.1-3. 100% | 57.6 MiB/s | 59.0 KiB | 00m00s [113/165] Installing pam-0:1.7.0-4.fc42 100% | 45.8 MiB/s | 1.7 MiB | 00m00s [114/165] Installing util-linux-0:2.40. 100% | 63.3 MiB/s | 3.6 MiB | 00m00s [115/165] Installing libssh-0:0.11.1-4. 100% | 138.6 MiB/s | 567.5 KiB | 00m00s [116/165] Installing jansson-0:2.14-2.f 100% | 92.2 MiB/s | 94.4 KiB | 00m00s [117/165] Installing libgomp-0:15.0.1-0 100% | 174.8 MiB/s | 536.9 KiB | 00m00s [118/165] Installing json-c-0:0.18-2.fc 100% | 85.9 MiB/s | 88.0 KiB | 00m00s [119/165] Installing libseccomp-0:2.5.5 100% | 171.1 MiB/s | 175.2 KiB | 00m00s [120/165] Installing expat-0:2.6.4-2.fc 100% | 8.0 MiB/s | 294.9 KiB | 00m00s [121/165] Installing dbus-broker-0:36-5 100% | 12.9 MiB/s | 397.6 KiB | 00m00s [122/165] Installing dbus-1:1.16.0-3.fc 100% | 0.0 B/s | 124.0 B | 00m00s [123/165] Installing systemd-pam-0:257. 100% | 158.9 MiB/s | 1.1 MiB | 00m00s [124/165] Installing systemd-0:257.2-14 100% | 62.2 MiB/s | 17.5 MiB | 00m00s >>> Running post-install scriptlet: systemd-0:257.2-14.fc42.x86_64 >>> Finished post-install scriptlet: systemd-0:257.2-14.fc42.x86_64 >>> Scriptlet output: >>> Creating group 'systemd-journal' with GID 190. >>> Creating group 'systemd-oom' with GID 999. >>> Creating user 'systemd-oom' (systemd Userspace OOM Killer) with UID 999 and >>> [125/165] Installing rpm-libs-0:4.20.0- 100% | 141.3 MiB/s | 723.3 KiB | 00m00s [126/165] Installing rpm-build-libs-0:4 100% | 99.3 MiB/s | 203.4 KiB | 00m00s [127/165] Installing xxhash-libs-0:0.8. 100% | 89.4 MiB/s | 91.6 KiB | 00m00s [128/165] Installing libbrotli-0:1.1.0- 100% | 164.8 MiB/s | 843.6 KiB | 00m00s [129/165] Installing libnghttp2-0:1.64. 100% | 167.5 MiB/s | 171.5 KiB | 00m00s [130/165] Installing libtool-ltdl-0:2.5 100% | 69.6 MiB/s | 71.2 KiB | 00m00s [131/165] Installing openldap-0:2.6.9-3 100% | 128.7 MiB/s | 658.9 KiB | 00m00s [132/165] Installing libcurl-0:8.11.1-3 100% | 205.8 MiB/s | 843.1 KiB | 00m00s [133/165] Installing elfutils-debuginfo 100% | 6.0 MiB/s | 86.2 KiB | 00m00s [134/165] Installing binutils-0:2.43.50 100% | 230.8 MiB/s | 25.9 MiB | 00m00s [135/165] Installing elfutils-0:0.192-8 100% | 112.0 MiB/s | 2.7 MiB | 00m00s [136/165] Installing gdb-minimal-0:15.2 100% | 246.1 MiB/s | 13.0 MiB | 00m00s [137/165] Installing debugedit-0:5.1-4. 100% | 15.3 MiB/s | 203.1 KiB | 00m00s [138/165] Installing curl-0:8.11.1-3.fc 100% | 14.4 MiB/s | 457.1 KiB | 00m00s [139/165] Installing rpm-0:4.20.0-8.fc4 100% | 60.7 MiB/s | 2.5 MiB | 00m00s [140/165] Installing efi-srpm-macros-0: 100% | 40.1 MiB/s | 41.1 KiB | 00m00s [141/165] Installing lua-srpm-macros-0: 100% | 0.0 B/s | 1.9 KiB | 00m00s [142/165] Installing zig-srpm-macros-0: 100% | 0.0 B/s | 1.7 KiB | 00m00s [143/165] Installing rust-srpm-macros-0 100% | 0.0 B/s | 5.6 KiB | 00m00s [144/165] Installing qt6-srpm-macros-0: 100% | 0.0 B/s | 732.0 B | 00m00s [145/165] Installing qt5-srpm-macros-0: 100% | 0.0 B/s | 776.0 B | 00m00s [146/165] Installing perl-srpm-macros-0 100% | 0.0 B/s | 1.1 KiB | 00m00s [147/165] Installing package-notes-srpm 100% | 0.0 B/s | 2.0 KiB | 00m00s [148/165] Installing openblas-srpm-macr 100% | 0.0 B/s | 392.0 B | 00m00s [149/165] Installing ocaml-srpm-macros- 100% | 0.0 B/s | 2.2 KiB | 00m00s [150/165] Installing kernel-srpm-macros 100% | 0.0 B/s | 2.3 KiB | 00m00s [151/165] Installing gnat-srpm-macros-0 100% | 0.0 B/s | 1.3 KiB | 00m00s [152/165] Installing ghc-srpm-macros-0: 100% | 0.0 B/s | 1.0 KiB | 00m00s [153/165] Installing fpc-srpm-macros-0: 100% | 0.0 B/s | 420.0 B | 00m00s [154/165] Installing ansible-srpm-macro 100% | 35.4 MiB/s | 36.2 KiB | 00m00s [155/165] Installing fonts-srpm-macros- 100% | 55.7 MiB/s | 57.0 KiB | 00m00s [156/165] Installing forge-srpm-macros- 100% | 39.3 MiB/s | 40.3 KiB | 00m00s [157/165] Installing go-srpm-macros-0:3 100% | 60.5 MiB/s | 62.0 KiB | 00m00s [158/165] Installing python-srpm-macros 100% | 50.9 MiB/s | 52.2 KiB | 00m00s [159/165] Installing redhat-rpm-config- 100% | 63.0 MiB/s | 193.5 KiB | 00m00s [160/165] Installing rpm-build-0:4.20.0 100% | 10.0 MiB/s | 173.7 KiB | 00m00s [161/165] Installing pyproject-srpm-mac 100% | 2.4 MiB/s | 2.5 KiB | 00m00s [162/165] Installing authselect-0:1.5.0 100% | 10.4 MiB/s | 160.4 KiB | 00m00s [163/165] Installing which-0:2.22-1.fc4 100% | 6.9 MiB/s | 85.3 KiB | 00m00s [164/165] Installing info-0:7.2-3.fc42. 100% | 25.0 MiB/s | 358.3 KiB | 00m00s [165/165] Installing systemd-rpm-macros 100% | 4.3 KiB/s | 11.3 KiB | 00m03s Warning: skipped OpenPGP checks for 163 packages from repositories: copr_base, http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch Complete! Finish: installing minimal buildroot with dnf5 Start: creating root cache Finish: creating root cache Finish: chroot init INFO: Installed packages: INFO: add-determinism-0.5.0-2.fc42.x86_64 alternatives-1.31-3.fc42.x86_64 ansible-srpm-macros-1-17.1.fc42.noarch audit-libs-4.0.3-2.fc42.x86_64 authselect-1.5.0-9.fc42.x86_64 authselect-libs-1.5.0-9.fc42.x86_64 basesystem-11-22.fc42.noarch bash-5.2.37-1.fc42.x86_64 binutils-2.43.50-12.fc42.x86_64 build-reproducibility-srpm-macros-0.5.0-2.fc42.noarch bzip2-1.0.8-20.fc42.x86_64 bzip2-libs-1.0.8-20.fc42.x86_64 ca-certificates-2024.2.69_v8.0.401-5.fc42.noarch coreutils-9.6-1.fc42.x86_64 coreutils-common-9.6-1.fc42.x86_64 cpio-2.15-2.fc41.x86_64 cracklib-2.9.11-7.fc42.x86_64 crypto-policies-20250124-1.git4d262e7.fc42.noarch curl-8.11.1-3.fc42.x86_64 cyrus-sasl-lib-2.1.28-28.fc42.x86_64 dbus-1.16.0-3.fc42.x86_64 dbus-broker-36-5.fc42.x86_64 dbus-common-1.16.0-3.fc42.noarch debugedit-5.1-4.fc42.x86_64 diffutils-3.10-9.fc42.x86_64 dwz-0.15-9.fc42.x86_64 ed-1.21-2.fc42.x86_64 efi-srpm-macros-6-2.fc42.noarch elfutils-0.192-8.fc42.x86_64 elfutils-debuginfod-client-0.192-8.fc42.x86_64 elfutils-default-yama-scope-0.192-8.fc42.noarch elfutils-libelf-0.192-8.fc42.x86_64 elfutils-libs-0.192-8.fc42.x86_64 expat-2.6.4-2.fc42.x86_64 fedora-gpg-keys-42-0.4.noarch fedora-release-42-0.16.noarch fedora-release-common-42-0.16.noarch fedora-release-identity-basic-42-0.16.noarch fedora-repos-42-0.4.noarch fedora-repos-rawhide-42-0.4.noarch file-5.45-9.fc42.x86_64 file-libs-5.45-9.fc42.x86_64 filesystem-3.18-36.fc42.x86_64 filesystem-srpm-macros-3.18-36.fc42.noarch findutils-4.10.0-5.fc42.x86_64 fonts-srpm-macros-2.0.5-21.fc42.noarch forge-srpm-macros-0.4.0-2.fc42.noarch fpc-srpm-macros-1.3-14.fc42.noarch gawk-5.3.1-1.fc42.x86_64 gdb-minimal-15.2-7.fc42.x86_64 gdbm-1.23-7.fc41.x86_64 gdbm-libs-1.23-7.fc41.x86_64 ghc-srpm-macros-1.9.2-2.fc42.noarch glibc-2.40.9000-34.fc42.x86_64 glibc-common-2.40.9000-34.fc42.x86_64 glibc-gconv-extra-2.40.9000-34.fc42.x86_64 glibc-minimal-langpack-2.40.9000-34.fc42.x86_64 gmp-6.3.0-2.fc41.x86_64 gnat-srpm-macros-6-7.fc42.noarch go-srpm-macros-3.6.0-6.fc42.noarch grep-3.11-10.fc42.x86_64 gzip-1.13-3.fc42.x86_64 info-7.2-3.fc42.x86_64 jansson-2.14-2.fc42.x86_64 json-c-0.18-2.fc42.x86_64 kernel-srpm-macros-1.0-25.fc42.noarch keyutils-libs-1.6.3-5.fc42.x86_64 krb5-libs-1.21.3-4.fc42.x86_64 libacl-2.3.2-3.fc42.x86_64 libarchive-3.7.7-2.fc42.x86_64 libattr-2.5.2-5.fc42.x86_64 libblkid-2.40.4-1.fc42.x86_64 libbrotli-1.1.0-6.fc42.x86_64 libcap-2.73-2.fc42.x86_64 libcap-ng-0.8.5-4.fc42.x86_64 libcom_err-1.47.2-3.fc42.x86_64 libcurl-8.11.1-3.fc42.x86_64 libeconf-0.7.5-2.fc42.x86_64 libevent-2.1.12-15.fc42.x86_64 libfdisk-2.40.4-1.fc42.x86_64 libffi-3.4.6-5.fc42.x86_64 libgcc-15.0.1-0.4.fc42.x86_64 libgomp-15.0.1-0.4.fc42.x86_64 libidn2-2.3.7-3.fc42.x86_64 libmount-2.40.4-1.fc42.x86_64 libnghttp2-1.64.0-3.fc42.x86_64 libnsl2-2.0.1-3.fc42.x86_64 libpkgconf-2.3.0-2.fc42.x86_64 libpsl-0.21.5-5.fc42.x86_64 libpwquality-1.4.5-12.fc42.x86_64 libseccomp-2.5.5-2.fc41.x86_64 libselinux-3.8-0.rc3.1.fc42.3.x86_64 libsemanage-3.8-0.rc3.1.fc42.1.x86_64 libsepol-3.8-0.rc3.1.fc42.1.x86_64 libsmartcols-2.40.4-1.fc42.x86_64 libssh-0.11.1-4.fc42.x86_64 libssh-config-0.11.1-4.fc42.noarch libstdc++-15.0.1-0.4.fc42.x86_64 libtasn1-4.19.0-11.fc42.x86_64 libtirpc-1.3.6-1.rc3.fc42.2.x86_64 libtool-ltdl-2.5.4-4.fc42.x86_64 libunistring-1.1-9.fc42.x86_64 libuuid-2.40.4-1.fc42.x86_64 libverto-0.3.2-10.fc42.x86_64 libxcrypt-4.4.38-4.fc42.x86_64 libxml2-2.12.9-2.fc42.x86_64 libzstd-1.5.6-3.fc42.x86_64 lua-libs-5.4.7-2.fc42.x86_64 lua-srpm-macros-1-15.fc42.noarch lz4-libs-1.10.0-2.fc42.x86_64 mpfr-4.2.1-6.fc42.x86_64 ncurses-base-6.5-4.20250118.fc42.noarch ncurses-libs-6.5-4.20250118.fc42.x86_64 ocaml-srpm-macros-10-4.fc42.noarch openblas-srpm-macros-2-19.fc42.noarch openldap-2.6.9-3.fc42.x86_64 openssl-libs-3.2.2-13.fc42.x86_64 p11-kit-0.25.5-5.fc42.x86_64 p11-kit-trust-0.25.5-5.fc42.x86_64 package-notes-srpm-macros-0.5-13.fc42.noarch pam-1.7.0-4.fc42.x86_64 pam-libs-1.7.0-4.fc42.x86_64 patch-2.7.6-26.fc42.x86_64 pcre2-10.44-1.fc42.2.x86_64 pcre2-syntax-10.44-1.fc42.2.noarch perl-srpm-macros-1-57.fc42.noarch pkgconf-2.3.0-2.fc42.x86_64 pkgconf-m4-2.3.0-2.fc42.noarch pkgconf-pkg-config-2.3.0-2.fc42.x86_64 popt-1.19-8.fc42.x86_64 publicsuffix-list-dafsa-20250116-1.fc42.noarch pyproject-srpm-macros-1.16.4-2.fc42.noarch python-srpm-macros-3.14-3.fc42.noarch qt5-srpm-macros-5.15.15-1.fc42.noarch qt6-srpm-macros-6.8.1-5.fc42.noarch readline-8.2-12.fc42.x86_64 redhat-rpm-config-300-1.fc42.noarch rpm-4.20.0-8.fc42.x86_64 rpm-build-4.20.0-8.fc42.x86_64 rpm-build-libs-4.20.0-8.fc42.x86_64 rpm-libs-4.20.0-8.fc42.x86_64 rpm-sequoia-1.7.0-4.fc42.x86_64 rust-srpm-macros-26.3-4.fc42.noarch sed-4.9-4.fc42.x86_64 setup-2.15.0-10.fc42.noarch shadow-utils-4.17.0-4.fc42.x86_64 sqlite-libs-3.47.2-2.fc42.x86_64 systemd-257.2-14.fc42.x86_64 systemd-libs-257.2-14.fc42.x86_64 systemd-pam-257.2-14.fc42.x86_64 systemd-rpm-macros-257.2-14.fc42.noarch tar-1.35-5.fc42.x86_64 unzip-6.0-66.fc42.x86_64 util-linux-2.40.4-1.fc42.x86_64 util-linux-core-2.40.4-1.fc42.x86_64 which-2.22-1.fc42.x86_64 xxhash-libs-0.8.3-2.fc42.x86_64 xz-5.6.3-3.fc42.x86_64 xz-libs-5.6.3-3.fc42.x86_64 zig-srpm-macros-1-4.fc42.noarch zip-3.0-43.fc42.x86_64 zlib-ng-compat-2.2.3-2.fc42.x86_64 zstd-1.5.6-3.fc42.x86_64 Start: buildsrpm Start: rpmbuild -bs Building target platforms: x86_64 Building for target x86_64 setting SOURCE_DATE_EPOCH=1737158400 Wrote: /builddir/build/SRPMS/python-gitlab-4.10.0-2.fc42.src.rpm Finish: rpmbuild -bs INFO: chroot_scan: 1 files copied to /var/lib/copr-rpmbuild/results/chroot_scan INFO: /var/lib/mock/fedora-rawhide-x86_64-1738054906.026706/root/var/log/dnf5.log INFO: chroot_scan: creating tarball /var/lib/copr-rpmbuild/results/chroot_scan.tar.gz /bin/tar: Removing leading `/' from member names Finish: buildsrpm INFO: Done(/var/lib/copr-rpmbuild/workspace/workdir-xpky8upb/python-gitlab/python-gitlab.spec) Config(child) 0 minutes 23 seconds INFO: Results and/or logs in: /var/lib/copr-rpmbuild/results INFO: Cleaning up build root ('cleanup_on_success=True') Start: clean chroot INFO: unmounting tmpfs. Finish: clean chroot INFO: Start(/var/lib/copr-rpmbuild/results/python-gitlab-4.10.0-2.fc42.src.rpm) Config(fedora-rawhide-x86_64) Start: chroot init INFO: mounting tmpfs at /var/lib/mock/fedora-rawhide-x86_64-1738054906.026706/root. INFO: calling preinit hooks INFO: enabled root cache Start: unpacking root cache Finish: unpacking root cache INFO: enabled package manager cache Start: cleaning package manager metadata Finish: cleaning package manager metadata INFO: enabled HW Info plugin INFO: Buildroot is handled by package management from host and used with --installroot: rpm-4.20.0-1.fc41.x86_64 rpm-sequoia-1.7.0-2.fc41.x86_64 python3-dnf-4.22.0-1.fc41.noarch python3-dnf-plugins-core-4.10.0-1.fc41.noarch dnf5-5.2.8.1-3.fc41.x86_64 dnf5-plugins-5.2.8.1-3.fc41.x86_64 Finish: chroot init Start: build phase for python-gitlab-4.10.0-2.fc42.src.rpm Start: build setup for python-gitlab-4.10.0-2.fc42.src.rpm Building target platforms: x86_64 Building for target x86_64 setting SOURCE_DATE_EPOCH=1737158400 Wrote: /builddir/build/SRPMS/python-gitlab-4.10.0-2.fc42.src.rpm Updating and loading repositories: Additional repo http_kojipkgs_fedorapr 100% | 59.8 KiB/s | 3.8 KiB | 00m00s fedora 100% | 1.1 MiB/s | 29.1 KiB | 00m00s Copr repository 100% | 27.9 KiB/s | 1.5 KiB | 00m00s Copr repository 100% | 23.5 MiB/s | 4.4 MiB | 00m00s Repositories loaded. Package Arch Version Repository Size Installing: python3-devel x86_64 3.14.0~a4-2.fc42 copr_base 1.9 MiB Installing dependencies: mpdecimal x86_64 2.5.1-17.fc42 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 200.8 KiB pyproject-rpm-macros noarch 1.16.4-2.fc42 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 113.0 KiB python-pip-wheel noarch 24.3.1-2.fc42 copr_base 1.2 MiB python-rpm-macros noarch 3.14-3.fc42 copr_base 22.1 KiB python3 x86_64 3.14.0~a4-2.fc42 copr_base 27.7 KiB python3-libs x86_64 3.14.0~a4-2.fc42 copr_base 40.8 MiB python3-packaging noarch 24.2-2.fc42 copr_base 593.2 KiB python3-rpm-generators noarch 14-12.fc42 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 81.7 KiB python3-rpm-macros noarch 3.14-3.fc42 copr_base 6.4 KiB tzdata noarch 2024b-2.fc42 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 1.6 MiB Transaction Summary: Installing: 11 packages Total size of inbound packages is 11 MiB. Need to download 11 MiB. After this operation, 47 MiB extra will be used (install 47 MiB, remove 0 B). [ 1/11] python3-0:3.14.0~a4-2.fc42.x86_ 100% | 640.2 KiB/s | 25.0 KiB | 00m00s [ 2/11] python3-devel-0:3.14.0~a4-2.fc4 100% | 4.4 MiB/s | 375.5 KiB | 00m00s [ 3/11] mpdecimal-0:2.5.1-17.fc42.x86_6 100% | 1.2 MiB/s | 90.4 KiB | 00m00s [ 4/11] tzdata-0:2024b-2.fc42.noarch 100% | 10.2 MiB/s | 428.9 KiB | 00m00s [ 5/11] python-pip-wheel-0:24.3.1-2.fc4 100% | 14.7 MiB/s | 1.2 MiB | 00m00s [ 6/11] python-rpm-macros-0:3.14-3.fc42 100% | 1.4 MiB/s | 18.2 KiB | 00m00s [ 7/11] pyproject-rpm-macros-0:1.16.4-2 100% | 2.4 MiB/s | 44.6 KiB | 00m00s [ 8/11] python3-rpm-macros-0:3.14-3.fc4 100% | 591.5 KiB/s | 13.0 KiB | 00m00s [ 9/11] python3-packaging-0:24.2-2.fc42 100% | 10.4 MiB/s | 148.5 KiB | 00m00s [10/11] python3-rpm-generators-0:14-12. 100% | 1.7 MiB/s | 29.2 KiB | 00m00s [11/11] python3-libs-0:3.14.0~a4-2.fc42 100% | 40.6 MiB/s | 9.0 MiB | 00m00s -------------------------------------------------------------------------------- [11/11] Total 100% | 50.7 MiB/s | 11.4 MiB | 00m00s Running transaction [ 1/13] Verify package files 100% | 215.0 B/s | 11.0 B | 00m00s [ 2/13] Prepare transaction 100% | 229.0 B/s | 11.0 B | 00m00s [ 3/13] Installing python-rpm-macros-0: 100% | 22.3 MiB/s | 22.8 KiB | 00m00s [ 4/13] Installing python3-rpm-macros-0 100% | 0.0 B/s | 6.7 KiB | 00m00s [ 5/13] Installing pyproject-rpm-macros 100% | 28.1 MiB/s | 115.0 KiB | 00m00s [ 6/13] Installing tzdata-0:2024b-2.fc4 100% | 24.5 MiB/s | 1.9 MiB | 00m00s [ 7/13] Installing python-pip-wheel-0:2 100% | 414.7 MiB/s | 1.2 MiB | 00m00s [ 8/13] Installing mpdecimal-0:2.5.1-17 100% | 39.4 MiB/s | 201.9 KiB | 00m00s [ 9/13] Installing python3-libs-0:3.14. 100% | 201.9 MiB/s | 41.2 MiB | 00m00s [10/13] Installing python3-0:3.14.0~a4- 100% | 2.1 MiB/s | 29.5 KiB | 00m00s [11/13] Installing python3-packaging-0: 100% | 98.6 MiB/s | 605.5 KiB | 00m00s [12/13] Installing python3-rpm-generato 100% | 81.0 MiB/s | 82.9 KiB | 00m00s [13/13] Installing python3-devel-0:3.14 100% | 25.6 MiB/s | 1.9 MiB | 00m00s Warning: skipped OpenPGP checks for 11 packages from repositories: copr_base, http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch Complete! Finish: build setup for python-gitlab-4.10.0-2.fc42.src.rpm Start: rpmbuild python-gitlab-4.10.0-2.fc42.src.rpm Building target platforms: x86_64 Building for target x86_64 setting SOURCE_DATE_EPOCH=1737158400 Executing(%mkbuilddir): /bin/sh -e /var/tmp/rpm-tmp.fy0PlA + umask 022 + cd /builddir/build/BUILD/python-gitlab-4.10.0-build + test -d /builddir/build/BUILD/python-gitlab-4.10.0-build + /usr/bin/chmod -Rf a+rX,u+w,g-w,o-w /builddir/build/BUILD/python-gitlab-4.10.0-build + /usr/bin/rm -rf /builddir/build/BUILD/python-gitlab-4.10.0-build + /usr/bin/mkdir -p /builddir/build/BUILD/python-gitlab-4.10.0-build + /usr/bin/mkdir -p /builddir/build/BUILD/python-gitlab-4.10.0-build/SPECPARTS + RPM_EC=0 ++ jobs -p + exit 0 Executing(%prep): /bin/sh -e /var/tmp/rpm-tmp.Bdldvi + umask 022 + cd /builddir/build/BUILD/python-gitlab-4.10.0-build + cd /builddir/build/BUILD/python-gitlab-4.10.0-build + rm -rf python_gitlab-4.10.0 + /usr/lib/rpm/rpmuncompress -x /builddir/build/SOURCES/python_gitlab-4.10.0.tar.gz + STATUS=0 + '[' 0 -ne 0 ']' + cd python_gitlab-4.10.0 + /usr/bin/chmod -Rf a+rX,u+w,g-w,o-w . + sed -i 's/requests==.*/requests/' requirements.txt + sed -i 's/requests-toolbelt==.*/requests-toolbelt/' requirements.txt + sed -i 's/pytest==.*/pytest/' requirements-lint.txt requirements-test.txt + sed -i 's/PyYaml==.*/PyYaml/' requirements-lint.txt requirements-test.txt + sed -i 's/responses==.*/responses/' requirements-lint.txt requirements-test.txt + sed -i 's/wheel==.*/wheel/' requirements-test.txt + sed -i 's/coverage==.*/coverage/' requirements-test.txt + sed -i 's/setuptools==.*/setuptools/' requirements-test.txt + sed -i 's/pytest-cov==.*/pytest-cov/' requirements-test.txt + sed -i 's/build==.*/build/' requirements-test.txt + sed -i 's/pytest-console-scripts.*//' requirements-test.txt + sed -i 's/pytest-github-actions-annotate-failures.*//' requirements-test.txt + RPM_EC=0 ++ jobs -p + exit 0 Executing(%generate_buildrequires): /bin/sh -e /var/tmp/rpm-tmp.i8iH86 + umask 022 + cd /builddir/build/BUILD/python-gitlab-4.10.0-build + cd python_gitlab-4.10.0 + echo pyproject-rpm-macros + echo python3-devel + echo 'python3dist(packaging)' + echo 'python3dist(pip) >= 19' + '[' -f pyproject.toml ']' + echo '(python3dist(tomli) if python3-devel < 3.11)' + rm -rfv '*.dist-info/' + '[' -f /usr/bin/python3 ']' + mkdir -p /builddir/build/BUILD/python-gitlab-4.10.0-build/python_gitlab-4.10.0/.pyproject-builddir + echo -n + CFLAGS='-O2 -flto=auto -ffat-lto-objects -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=3 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -march=x86-64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -mtls-dialect=gnu2 -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer ' + CXXFLAGS='-O2 -flto=auto -ffat-lto-objects -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=3 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -march=x86-64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -mtls-dialect=gnu2 -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer ' + FFLAGS='-O2 -flto=auto -ffat-lto-objects -fexceptions -g -grecord-gcc-switches -pipe -Wall -Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=3 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -march=x86-64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -mtls-dialect=gnu2 -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer -I/usr/lib64/gfortran/modules ' + FCFLAGS='-O2 -flto=auto -ffat-lto-objects -fexceptions -g -grecord-gcc-switches -pipe -Wall -Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=3 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -march=x86-64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -mtls-dialect=gnu2 -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer -I/usr/lib64/gfortran/modules ' + VALAFLAGS=-g + RUSTFLAGS='-Copt-level=3 -Cdebuginfo=2 -Ccodegen-units=1 -Cstrip=none -Cforce-frame-pointers=yes --cap-lints=warn' + LDFLAGS='-Wl,-z,relro -Wl,--as-needed -Wl,-z,pack-relative-relocs -Wl,-z,now -specs=/usr/lib/rpm/redhat/redhat-hardened-ld -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -Wl,--build-id=sha1 ' + LT_SYS_LIBRARY_PATH=/usr/lib64: + CC=gcc + CXX=g++ + TMPDIR=/builddir/build/BUILD/python-gitlab-4.10.0-build/python_gitlab-4.10.0/.pyproject-builddir + RPM_TOXENV=py314 + HOSTNAME=rpmbuild + /usr/bin/python3 -Bs /usr/lib/rpm/redhat/pyproject_buildrequires.py --generate-extras --python3_pkgversion 3 --wheeldir /builddir/build/BUILD/python-gitlab-4.10.0-build/python_gitlab-4.10.0/pyproject-wheeldir --output /builddir/build/BUILD/python-gitlab-4.10.0-build/python-gitlab-4.10.0-2.fc42.x86_64-pyproject-buildrequires -t Handling setuptools>=61.0.0 from build-system.requires Requirement not satisfied: setuptools>=61.0.0 Exiting dependency generation pass: build backend + cat /builddir/build/BUILD/python-gitlab-4.10.0-build/python-gitlab-4.10.0-2.fc42.x86_64-pyproject-buildrequires + rm -rfv '*.dist-info/' + RPM_EC=0 ++ jobs -p + exit 0 Wrote: /builddir/build/SRPMS/python-gitlab-4.10.0-2.fc42.buildreqs.nosrc.rpm INFO: Going to install missing dynamic buildrequires Updating and loading repositories: fedora 100% | 1.1 MiB/s | 29.1 KiB | 00m00s Additional repo http_kojipkgs_fedorapr 100% | 70.9 KiB/s | 3.8 KiB | 00m00s Copr repository 100% | 34.2 KiB/s | 1.5 KiB | 00m00s Repositories loaded. Package "pyproject-rpm-macros-1.16.4-2.fc42.noarch" is already installed. Package "python3-devel-3.14.0~a4-2.fc42.x86_64" is already installed. Package "python3-packaging-24.2-2.fc42.noarch" is already installed. Package Arch Version Repository Size Installing: python3-pip noarch 24.3.1-2.fc42 copr_base 12.0 MiB python3-setuptools noarch 74.1.3-5.fc42 copr_base 8.6 MiB Transaction Summary: Installing: 2 packages Total size of inbound packages is 4 MiB. Need to download 4 MiB. After this operation, 21 MiB extra will be used (install 21 MiB, remove 0 B). [1/2] python3-pip-0:24.3.1-2.fc42.noarc 100% | 17.3 MiB/s | 2.5 MiB | 00m00s [2/2] python3-setuptools-0:74.1.3-5.fc4 100% | 12.1 MiB/s | 1.9 MiB | 00m00s -------------------------------------------------------------------------------- [2/2] Total 100% | 28.6 MiB/s | 4.4 MiB | 00m00s Running transaction [1/4] Verify package files 100% | 100.0 B/s | 2.0 B | 00m00s [2/4] Prepare transaction 100% | 58.0 B/s | 2.0 B | 00m00s [3/4] Installing python3-setuptools-0:7 100% | 114.5 MiB/s | 8.8 MiB | 00m00s [4/4] Installing python3-pip-0:24.3.1-2 100% | 87.9 MiB/s | 12.2 MiB | 00m00s Warning: skipped OpenPGP checks for 2 packages from repository: copr_base Complete! Building target platforms: x86_64 Building for target x86_64 setting SOURCE_DATE_EPOCH=1737158400 Executing(%generate_buildrequires): /bin/sh -e /var/tmp/rpm-tmp.CXxfq7 + umask 022 + cd /builddir/build/BUILD/python-gitlab-4.10.0-build + cd python_gitlab-4.10.0 + echo pyproject-rpm-macros + echo python3-devel + echo 'python3dist(packaging)' + echo 'python3dist(pip) >= 19' + '[' -f pyproject.toml ']' + echo '(python3dist(tomli) if python3-devel < 3.11)' + rm -rfv '*.dist-info/' + '[' -f /usr/bin/python3 ']' + mkdir -p /builddir/build/BUILD/python-gitlab-4.10.0-build/python_gitlab-4.10.0/.pyproject-builddir + echo -n + CFLAGS='-O2 -flto=auto -ffat-lto-objects -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=3 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -march=x86-64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -mtls-dialect=gnu2 -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer ' + CXXFLAGS='-O2 -flto=auto -ffat-lto-objects -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=3 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -march=x86-64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -mtls-dialect=gnu2 -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer ' + FFLAGS='-O2 -flto=auto -ffat-lto-objects -fexceptions -g -grecord-gcc-switches -pipe -Wall -Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=3 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -march=x86-64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -mtls-dialect=gnu2 -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer -I/usr/lib64/gfortran/modules ' + FCFLAGS='-O2 -flto=auto -ffat-lto-objects -fexceptions -g -grecord-gcc-switches -pipe -Wall -Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=3 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -march=x86-64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -mtls-dialect=gnu2 -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer -I/usr/lib64/gfortran/modules ' + VALAFLAGS=-g + RUSTFLAGS='-Copt-level=3 -Cdebuginfo=2 -Ccodegen-units=1 -Cstrip=none -Cforce-frame-pointers=yes --cap-lints=warn' + LDFLAGS='-Wl,-z,relro -Wl,--as-needed -Wl,-z,pack-relative-relocs -Wl,-z,now -specs=/usr/lib/rpm/redhat/redhat-hardened-ld -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -Wl,--build-id=sha1 ' + LT_SYS_LIBRARY_PATH=/usr/lib64: + CC=gcc + CXX=g++ + TMPDIR=/builddir/build/BUILD/python-gitlab-4.10.0-build/python_gitlab-4.10.0/.pyproject-builddir + RPM_TOXENV=py314 + HOSTNAME=rpmbuild + /usr/bin/python3 -Bs /usr/lib/rpm/redhat/pyproject_buildrequires.py --generate-extras --python3_pkgversion 3 --wheeldir /builddir/build/BUILD/python-gitlab-4.10.0-build/python_gitlab-4.10.0/pyproject-wheeldir --output /builddir/build/BUILD/python-gitlab-4.10.0-build/python-gitlab-4.10.0-2.fc42.x86_64-pyproject-buildrequires -t Handling setuptools>=61.0.0 from build-system.requires Requirement satisfied: setuptools>=61.0.0 (installed: setuptools 74.1.3) running egg_info writing python_gitlab.egg-info/PKG-INFO writing dependency_links to python_gitlab.egg-info/dependency_links.txt writing entry points to python_gitlab.egg-info/entry_points.txt writing requirements to python_gitlab.egg-info/requires.txt writing top-level names to python_gitlab.egg-info/top_level.txt reading manifest file 'python_gitlab.egg-info/SOURCES.txt' reading manifest template 'MANIFEST.in' adding license file 'COPYING' adding license file 'AUTHORS' writing manifest file 'python_gitlab.egg-info/SOURCES.txt' Handling tox-current-env >= 0.0.6 from tox itself Requirement not satisfied: tox-current-env >= 0.0.6 Exiting dependency generation pass: tox itself + cat /builddir/build/BUILD/python-gitlab-4.10.0-build/python-gitlab-4.10.0-2.fc42.x86_64-pyproject-buildrequires + rm -rfv '*.dist-info/' + RPM_EC=0 ++ jobs -p + exit 0 Wrote: /builddir/build/SRPMS/python-gitlab-4.10.0-2.fc42.buildreqs.nosrc.rpm INFO: Going to install missing dynamic buildrequires Updating and loading repositories: fedora 100% | 1.1 MiB/s | 29.1 KiB | 00m00s Additional repo http_kojipkgs_fedorapr 100% | 68.4 KiB/s | 3.8 KiB | 00m00s Copr repository 100% | 25.6 KiB/s | 1.5 KiB | 00m00s Copr repository 100% | 19.6 MiB/s | 4.4 MiB | 00m00s Repositories loaded. Package "pyproject-rpm-macros-1.16.4-2.fc42.noarch" is already installed. Package Arch Version Repository Size Installing: python3-tox-current-env noarch 0.0.14-1.fc42 copr_base 75.9 KiB Installing dependencies: python-setuptools-wheel noarch 74.1.3-5.fc42 copr_base 1.2 MiB python-wheel-wheel noarch 1:0.45.1-2.fc42 copr_base 71.6 KiB python3-cachetools noarch 5.5.1-1.fc42 copr_base 137.2 KiB python3-chardet noarch 5.2.0-15.fc42 copr_base 2.1 MiB python3-colorama noarch 0.4.6-9.fc42 copr_base 189.0 KiB python3-distlib noarch 0.3.9-2.fc42 copr_base 1.2 MiB python3-filelock noarch 3.15.4-6.fc42 copr_base 96.2 KiB python3-platformdirs noarch 4.2.2-3.fc42 copr_base 176.6 KiB python3-pluggy noarch 1.5.0-2.fc42 copr_base 210.6 KiB python3-pyproject-api noarch 1.9.0-1.fc42 copr_base 83.8 KiB python3-virtualenv noarch 20.26.6-1.fc42 copr_base 659.3 KiB tox noarch 4.23.2-2.fc42 copr_base 1.3 MiB Transaction Summary: Installing: 13 packages Package "python3-devel-3.14.0~a4-2.fc42.x86_64" is already installed. Package "python3-packaging-24.2-2.fc42.noarch" is already installed. Package "python3-pip-24.3.1-2.fc42.noarch" is already installed. Package "python3-setuptools-74.1.3-5.fc42.noarch" is already installed. Total size of inbound packages is 3 MiB. Need to download 3 MiB. After this operation, 7 MiB extra will be used (install 7 MiB, remove 0 B). [ 1/13] python3-tox-current-env-0:0.0.1 100% | 607.5 KiB/s | 31.6 KiB | 00m00s [ 2/13] python3-cachetools-0:5.5.1-1.fc 100% | 656.6 KiB/s | 38.7 KiB | 00m00s [ 3/13] tox-0:4.23.2-2.fc42.noarch 100% | 4.5 MiB/s | 389.0 KiB | 00m00s [ 4/13] python3-chardet-0:5.2.0-15.fc42 100% | 6.6 MiB/s | 271.7 KiB | 00m00s [ 5/13] python3-colorama-0:0.4.6-9.fc42 100% | 1.7 MiB/s | 64.1 KiB | 00m00s [ 6/13] python3-filelock-0:3.15.4-6.fc4 100% | 2.1 MiB/s | 39.4 KiB | 00m00s [ 7/13] python3-platformdirs-0:4.2.2-3. 100% | 3.6 MiB/s | 43.7 KiB | 00m00s [ 8/13] python3-pyproject-api-0:1.9.0-1 100% | 2.2 MiB/s | 38.4 KiB | 00m00s [ 9/13] python3-distlib-0:0.3.9-2.fc42. 100% | 15.0 MiB/s | 260.9 KiB | 00m00s [10/13] python3-virtualenv-0:20.26.6-1. 100% | 10.0 MiB/s | 246.2 KiB | 00m00s [11/13] python-setuptools-wheel-0:74.1. 100% | 35.0 MiB/s | 1.1 MiB | 00m00s [12/13] python-wheel-wheel-1:0.45.1-2.f 100% | 3.4 MiB/s | 77.6 KiB | 00m00s [13/13] python3-pluggy-0:1.5.0-2.fc42.n 100% | 3.2 MiB/s | 56.1 KiB | 00m00s -------------------------------------------------------------------------------- [13/13] Total 100% | 17.7 MiB/s | 2.6 MiB | 00m00s Running transaction [ 1/15] Verify package files 100% | 1.0 KiB/s | 13.0 B | 00m00s [ 2/15] Prepare transaction 100% | 565.0 B/s | 13.0 B | 00m00s [ 3/15] Installing python3-platformdirs 100% | 59.6 MiB/s | 183.0 KiB | 00m00s [ 4/15] Installing python3-filelock-0:3 100% | 33.6 MiB/s | 103.1 KiB | 00m00s [ 5/15] Installing python3-pluggy-0:1.5 100% | 70.6 MiB/s | 216.9 KiB | 00m00s [ 6/15] Installing python-wheel-wheel-1 100% | 70.7 MiB/s | 72.4 KiB | 00m00s [ 7/15] Installing python-setuptools-wh 100% | 576.4 MiB/s | 1.2 MiB | 00m00s [ 8/15] Installing python3-distlib-0:0. 100% | 197.3 MiB/s | 1.2 MiB | 00m00s [ 9/15] Installing python3-virtualenv-0 100% | 20.9 MiB/s | 728.0 KiB | 00m00s [10/15] Installing python3-pyproject-ap 100% | 29.3 MiB/s | 90.0 KiB | 00m00s [11/15] Installing python3-colorama-0:0 100% | 48.5 MiB/s | 198.8 KiB | 00m00s [12/15] Installing python3-chardet-0:5. 100% | 85.0 MiB/s | 2.1 MiB | 00m00s [13/15] Installing python3-cachetools-0 100% | 45.8 MiB/s | 140.8 KiB | 00m00s [14/15] Installing tox-0:4.23.2-2.fc42. 100% | 40.1 MiB/s | 1.4 MiB | 00m00s [15/15] Installing python3-tox-current- 100% | 2.3 MiB/s | 80.2 KiB | 00m00s Warning: skipped OpenPGP checks for 13 packages from repository: copr_base Complete! Building target platforms: x86_64 Building for target x86_64 setting SOURCE_DATE_EPOCH=1737158400 Executing(%generate_buildrequires): /bin/sh -e /var/tmp/rpm-tmp.EAEpLb + umask 022 + cd /builddir/build/BUILD/python-gitlab-4.10.0-build + cd python_gitlab-4.10.0 + echo pyproject-rpm-macros + echo python3-devel + echo 'python3dist(packaging)' + echo 'python3dist(pip) >= 19' + '[' -f pyproject.toml ']' + echo '(python3dist(tomli) if python3-devel < 3.11)' + rm -rfv '*.dist-info/' + '[' -f /usr/bin/python3 ']' + mkdir -p /builddir/build/BUILD/python-gitlab-4.10.0-build/python_gitlab-4.10.0/.pyproject-builddir + echo -n + CFLAGS='-O2 -flto=auto -ffat-lto-objects -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=3 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -march=x86-64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -mtls-dialect=gnu2 -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer ' + CXXFLAGS='-O2 -flto=auto -ffat-lto-objects -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=3 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -march=x86-64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -mtls-dialect=gnu2 -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer ' + FFLAGS='-O2 -flto=auto -ffat-lto-objects -fexceptions -g -grecord-gcc-switches -pipe -Wall -Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=3 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -march=x86-64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -mtls-dialect=gnu2 -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer -I/usr/lib64/gfortran/modules ' + FCFLAGS='-O2 -flto=auto -ffat-lto-objects -fexceptions -g -grecord-gcc-switches -pipe -Wall -Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=3 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -march=x86-64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -mtls-dialect=gnu2 -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer -I/usr/lib64/gfortran/modules ' + VALAFLAGS=-g + RUSTFLAGS='-Copt-level=3 -Cdebuginfo=2 -Ccodegen-units=1 -Cstrip=none -Cforce-frame-pointers=yes --cap-lints=warn' + LDFLAGS='-Wl,-z,relro -Wl,--as-needed -Wl,-z,pack-relative-relocs -Wl,-z,now -specs=/usr/lib/rpm/redhat/redhat-hardened-ld -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -Wl,--build-id=sha1 ' + LT_SYS_LIBRARY_PATH=/usr/lib64: + CC=gcc + CXX=g++ + TMPDIR=/builddir/build/BUILD/python-gitlab-4.10.0-build/python_gitlab-4.10.0/.pyproject-builddir + RPM_TOXENV=py314 + HOSTNAME=rpmbuild + /usr/bin/python3 -Bs /usr/lib/rpm/redhat/pyproject_buildrequires.py --generate-extras --python3_pkgversion 3 --wheeldir /builddir/build/BUILD/python-gitlab-4.10.0-build/python_gitlab-4.10.0/pyproject-wheeldir --output /builddir/build/BUILD/python-gitlab-4.10.0-build/python-gitlab-4.10.0-2.fc42.x86_64-pyproject-buildrequires -t Handling setuptools>=61.0.0 from build-system.requires Requirement satisfied: setuptools>=61.0.0 (installed: setuptools 74.1.3) running egg_info writing python_gitlab.egg-info/PKG-INFO writing dependency_links to python_gitlab.egg-info/dependency_links.txt writing entry points to python_gitlab.egg-info/entry_points.txt writing requirements to python_gitlab.egg-info/requires.txt writing top-level names to python_gitlab.egg-info/top_level.txt reading manifest file 'python_gitlab.egg-info/SOURCES.txt' reading manifest template 'MANIFEST.in' adding license file 'COPYING' adding license file 'AUTHORS' writing manifest file 'python_gitlab.egg-info/SOURCES.txt' Handling tox-current-env >= 0.0.6 from tox itself Requirement satisfied: tox-current-env >= 0.0.6 (installed: tox-current-env 0.0.14) py314: OK (0.00 seconds) congratulations :) (0.13 seconds) Handling tox>=4.0 from tox --print-deps-only: py314 Requirement satisfied: tox>=4.0 (installed: tox 4.23.2) Handling requests from tox --print-deps-only: py314 Requirement not satisfied: requests Handling requests-toolbelt from tox --print-deps-only: py314 Requirement not satisfied: requests-toolbelt Handling requests from tox --print-deps-only: py314 Requirement not satisfied: requests Handling requests-toolbelt from tox --print-deps-only: py314 Requirement not satisfied: requests-toolbelt Handling build from tox --print-deps-only: py314 Requirement not satisfied: build Handling coverage from tox --print-deps-only: py314 Requirement not satisfied: coverage Handling pytest-cov from tox --print-deps-only: py314 Requirement not satisfied: pytest-cov Handling pytest from tox --print-deps-only: py314 Requirement not satisfied: pytest Handling PyYaml from tox --print-deps-only: py314 Requirement not satisfied: PyYaml Handling responses from tox --print-deps-only: py314 Requirement not satisfied: responses Handling wheel from tox --print-deps-only: py314 Requirement satisfied: wheel (installed: wheel 0.43.0) py314: OK (0.00 seconds) congratulations :) (0.13 seconds) running dist_info writing python_gitlab.egg-info/PKG-INFO writing dependency_links to python_gitlab.egg-info/dependency_links.txt writing entry points to python_gitlab.egg-info/entry_points.txt writing requirements to python_gitlab.egg-info/requires.txt writing top-level names to python_gitlab.egg-info/top_level.txt reading manifest file 'python_gitlab.egg-info/SOURCES.txt' reading manifest template 'MANIFEST.in' adding license file 'COPYING' adding license file 'AUTHORS' writing manifest file 'python_gitlab.egg-info/SOURCES.txt' creating '/builddir/build/BUILD/python-gitlab-4.10.0-build/python_gitlab-4.10.0/python_gitlab-4.10.0.dist-info' Handling requests >=2.32.0 from hook generated metadata: Requires-Dist (python-gitlab) Requirement not satisfied: requests >=2.32.0 Handling requests-toolbelt >=1.0.0 from hook generated metadata: Requires-Dist (python-gitlab) Requirement not satisfied: requests-toolbelt >=1.0.0 Handling argcomplete <3,>=1.10.0 ; extra == 'autocompletion' from hook generated metadata: Requires-Dist (python-gitlab) Ignoring alien requirement: argcomplete <3,>=1.10.0 ; extra == 'autocompletion' Handling PyYaml >=6.0.1 ; extra == 'yaml' from hook generated metadata: Requires-Dist (python-gitlab) Ignoring alien requirement: PyYaml >=6.0.1 ; extra == 'yaml' + cat /builddir/build/BUILD/python-gitlab-4.10.0-build/python-gitlab-4.10.0-2.fc42.x86_64-pyproject-buildrequires + rm -rfv python_gitlab-4.10.0.dist-info/ removed 'python_gitlab-4.10.0.dist-info/entry_points.txt' removed 'python_gitlab-4.10.0.dist-info/top_level.txt' removed 'python_gitlab-4.10.0.dist-info/METADATA' removed 'python_gitlab-4.10.0.dist-info/COPYING' removed 'python_gitlab-4.10.0.dist-info/AUTHORS' removed directory 'python_gitlab-4.10.0.dist-info/' + RPM_EC=0 ++ jobs -p + exit 0 Wrote: /builddir/build/SRPMS/python-gitlab-4.10.0-2.fc42.buildreqs.nosrc.rpm INFO: Going to install missing dynamic buildrequires Updating and loading repositories: Additional repo http_kojipkgs_fedorapr 100% | 62.8 KiB/s | 3.8 KiB | 00m00s Copr repository 100% | 34.9 KiB/s | 1.5 KiB | 00m00s fedora 100% | 882.2 KiB/s | 29.1 KiB | 00m00s Repositories loaded. Package "pyproject-rpm-macros-1.16.4-2.fc42.noarch" is already installed. Package "python3-devel-3.14.0~a4-2.fc42.x86_64" is already installed. Package "python3-packaging-24.2-2.fc42.noarch" is already installed. Package "python3-pip-24.3.1-2.fc42.noarch" is already installed. Package "python3-setuptools-74.1.3-5.fc42.noarch" is already installed. Package "tox-4.23.2-2.fc42.noarch" is already installed. Package "python3-tox-current-env-0.0.14-1.fc42.noarch" is already installed. Package Arch Version Repository Size Installing: python3-build noarch 1.2.2-1.fc42 copr_base 142.6 KiB python3-coverage x86_64 7.3.2-6.fc42 copr_base 1.8 MiB python3-pytest noarch 8.3.4-3.fc42 copr_base 4.1 MiB python3-pytest-cov noarch 5.0.0-1.fc42 copr_base 164.6 KiB python3-pyyaml x86_64 6.0.2-2.fc42 copr_base 777.3 KiB python3-requests noarch 2.32.3-4.fc42 copr_base 486.2 KiB python3-requests-toolbelt noarch 1.0.0-9.fc42 copr_base 299.7 KiB python3-responses noarch 0.25.6-1.fc42 copr_base 317.4 KiB python3-wheel noarch 1:0.45.1-2.fc42 copr_base 583.5 KiB Installing dependencies: libyaml x86_64 0.2.5-16.fc42 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 134.7 KiB python3-charset-normalizer noarch 3.4.1-2.fc42 copr_base 333.3 KiB python3-coverage+toml x86_64 7.3.2-6.fc42 copr_base 17.1 KiB python3-idna noarch 3.10-1.fc42 copr_base 631.9 KiB python3-iniconfig noarch 1.1.1-24.fc42 copr_base 20.7 KiB python3-pyproject-hooks noarch 1.2.0-1.fc42 copr_base 68.6 KiB python3-urllib3 noarch 2.3.0-3.fc42 copr_base 1.1 MiB Transaction Summary: Installing: 16 packages Total size of inbound packages is 3 MiB. Need to download 3 MiB. After this operation, 11 MiB extra will be used (install 11 MiB, remove 0 B). [ 1/16] python3-pytest-cov-0:5.0.0-1.fc 100% | 869.6 KiB/s | 49.6 KiB | 00m00s [ 2/16] python3-build-0:1.2.2-1.fc42.no 100% | 1.0 MiB/s | 61.1 KiB | 00m00s [ 3/16] python3-coverage-0:7.3.2-6.fc42 100% | 4.8 MiB/s | 381.0 KiB | 00m00s [ 4/16] python3-requests-0:2.32.3-4.fc4 100% | 5.9 MiB/s | 150.5 KiB | 00m00s [ 5/16] python3-pyyaml-0:6.0.2-2.fc42.x 100% | 5.4 MiB/s | 223.0 KiB | 00m00s [ 6/16] python3-requests-toolbelt-0:1.0 100% | 3.9 MiB/s | 100.9 KiB | 00m00s [ 7/16] python3-responses-0:0.25.6-1.fc 100% | 3.5 MiB/s | 72.6 KiB | 00m00s [ 8/16] python3-pyproject-hooks-0:1.2.0 100% | 2.6 MiB/s | 31.8 KiB | 00m00s [ 9/16] python3-wheel-1:0.45.1-2.fc42.n 100% | 8.1 MiB/s | 165.4 KiB | 00m00s [10/16] python3-coverage+toml-0:7.3.2-6 100% | 740.2 KiB/s | 9.6 KiB | 00m00s [11/16] python3-charset-normalizer-0:3. 100% | 7.8 MiB/s | 103.5 KiB | 00m00s [12/16] python3-idna-0:3.10-1.fc42.noar 100% | 8.5 MiB/s | 113.4 KiB | 00m00s [13/16] python3-urllib3-0:2.3.0-3.fc42. 100% | 15.8 MiB/s | 274.2 KiB | 00m00s [14/16] python3-pytest-0:8.3.4-3.fc42.n 100% | 31.3 MiB/s | 768.5 KiB | 00m00s [15/16] python3-iniconfig-0:1.1.1-24.fc 100% | 982.3 KiB/s | 18.7 KiB | 00m00s [16/16] libyaml-0:0.2.5-16.fc42.x86_64 100% | 934.3 KiB/s | 60.7 KiB | 00m00s -------------------------------------------------------------------------------- [16/16] Total 100% | 12.4 MiB/s | 2.5 MiB | 00m00s Running transaction [ 1/18] Verify package files 100% | 1.2 KiB/s | 16.0 B | 00m00s [ 2/18] Prepare transaction 100% | 500.0 B/s | 16.0 B | 00m00s [ 3/18] Installing python3-idna-0:3.10- 100% | 124.6 MiB/s | 638.2 KiB | 00m00s [ 4/18] Installing python3-urllib3-0:2. 100% | 99.0 MiB/s | 1.1 MiB | 00m00s [ 5/18] Installing python3-coverage-0:7 100% | 69.9 MiB/s | 1.8 MiB | 00m00s [ 6/18] Installing python3-coverage+tom 100% | 0.0 B/s | 124.0 B | 00m00s [ 7/18] Installing libyaml-0:0.2.5-16.f 100% | 66.4 MiB/s | 136.0 KiB | 00m00s [ 8/18] Installing python3-pyyaml-0:6.0 100% | 110.4 MiB/s | 791.0 KiB | 00m00s [ 9/18] Installing python3-iniconfig-0: 100% | 11.5 MiB/s | 23.7 KiB | 00m00s [10/18] Installing python3-pytest-0:8.3 100% | 117.0 MiB/s | 4.1 MiB | 00m00s [11/18] Installing python3-charset-norm 100% | 19.7 MiB/s | 343.2 KiB | 00m00s [12/18] Installing python3-requests-0:2 100% | 97.3 MiB/s | 498.3 KiB | 00m00s [13/18] Installing python3-pyproject-ho 100% | 35.9 MiB/s | 73.4 KiB | 00m00s [14/18] Installing python3-build-0:1.2. 100% | 9.3 MiB/s | 152.3 KiB | 00m00s [15/18] Installing python3-requests-too 100% | 39.6 MiB/s | 324.2 KiB | 00m00s [16/18] Installing python3-responses-0: 100% | 104.7 MiB/s | 321.6 KiB | 00m00s [17/18] Installing python3-pytest-cov-0 100% | 55.5 MiB/s | 170.5 KiB | 00m00s [18/18] Installing python3-wheel-1:0.45 100% | 11.1 MiB/s | 603.6 KiB | 00m00s Warning: skipped OpenPGP checks for 16 packages from repositories: copr_base, http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch Complete! Building target platforms: x86_64 Building for target x86_64 setting SOURCE_DATE_EPOCH=1737158400 Executing(%generate_buildrequires): /bin/sh -e /var/tmp/rpm-tmp.wZOAeC + umask 022 + cd /builddir/build/BUILD/python-gitlab-4.10.0-build + cd python_gitlab-4.10.0 + echo pyproject-rpm-macros + echo python3-devel + echo 'python3dist(packaging)' + echo 'python3dist(pip) >= 19' + '[' -f pyproject.toml ']' + echo '(python3dist(tomli) if python3-devel < 3.11)' + rm -rfv '*.dist-info/' + '[' -f /usr/bin/python3 ']' + mkdir -p /builddir/build/BUILD/python-gitlab-4.10.0-build/python_gitlab-4.10.0/.pyproject-builddir + echo -n + CFLAGS='-O2 -flto=auto -ffat-lto-objects -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=3 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -march=x86-64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -mtls-dialect=gnu2 -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer ' + CXXFLAGS='-O2 -flto=auto -ffat-lto-objects -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=3 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -march=x86-64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -mtls-dialect=gnu2 -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer ' + FFLAGS='-O2 -flto=auto -ffat-lto-objects -fexceptions -g -grecord-gcc-switches -pipe -Wall -Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=3 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -march=x86-64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -mtls-dialect=gnu2 -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer -I/usr/lib64/gfortran/modules ' + FCFLAGS='-O2 -flto=auto -ffat-lto-objects -fexceptions -g -grecord-gcc-switches -pipe -Wall -Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=3 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -march=x86-64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -mtls-dialect=gnu2 -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer -I/usr/lib64/gfortran/modules ' + VALAFLAGS=-g + RUSTFLAGS='-Copt-level=3 -Cdebuginfo=2 -Ccodegen-units=1 -Cstrip=none -Cforce-frame-pointers=yes --cap-lints=warn' + LDFLAGS='-Wl,-z,relro -Wl,--as-needed -Wl,-z,pack-relative-relocs -Wl,-z,now -specs=/usr/lib/rpm/redhat/redhat-hardened-ld -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -Wl,--build-id=sha1 ' + LT_SYS_LIBRARY_PATH=/usr/lib64: + CC=gcc + CXX=g++ + TMPDIR=/builddir/build/BUILD/python-gitlab-4.10.0-build/python_gitlab-4.10.0/.pyproject-builddir + RPM_TOXENV=py314 + HOSTNAME=rpmbuild + /usr/bin/python3 -Bs /usr/lib/rpm/redhat/pyproject_buildrequires.py --generate-extras --python3_pkgversion 3 --wheeldir /builddir/build/BUILD/python-gitlab-4.10.0-build/python_gitlab-4.10.0/pyproject-wheeldir --output /builddir/build/BUILD/python-gitlab-4.10.0-build/python-gitlab-4.10.0-2.fc42.x86_64-pyproject-buildrequires -t Handling setuptools>=61.0.0 from build-system.requires Requirement satisfied: setuptools>=61.0.0 (installed: setuptools 74.1.3) running egg_info writing python_gitlab.egg-info/PKG-INFO writing dependency_links to python_gitlab.egg-info/dependency_links.txt writing entry points to python_gitlab.egg-info/entry_points.txt writing requirements to python_gitlab.egg-info/requires.txt writing top-level names to python_gitlab.egg-info/top_level.txt reading manifest file 'python_gitlab.egg-info/SOURCES.txt' reading manifest template 'MANIFEST.in' adding license file 'COPYING' adding license file 'AUTHORS' writing manifest file 'python_gitlab.egg-info/SOURCES.txt' Handling tox-current-env >= 0.0.6 from tox itself Requirement satisfied: tox-current-env >= 0.0.6 (installed: tox-current-env 0.0.14) py314: OK (0.00 seconds) congratulations :) (0.13 seconds) Handling tox>=4.0 from tox --print-deps-only: py314 Requirement satisfied: tox>=4.0 (installed: tox 4.23.2) Handling requests from tox --print-deps-only: py314 Requirement satisfied: requests (installed: requests 2.32.3) Handling requests-toolbelt from tox --print-deps-only: py314 Requirement satisfied: requests-toolbelt (installed: requests-toolbelt 1.0.0) Handling requests from tox --print-deps-only: py314 Requirement satisfied: requests (installed: requests 2.32.3) Handling requests-toolbelt from tox --print-deps-only: py314 Requirement satisfied: requests-toolbelt (installed: requests-toolbelt 1.0.0) Handling build from tox --print-deps-only: py314 Requirement satisfied: build (installed: build 1.2.2) Handling coverage from tox --print-deps-only: py314 Requirement satisfied: coverage (installed: coverage 7.3.2) Handling pytest-cov from tox --print-deps-only: py314 Requirement satisfied: pytest-cov (installed: pytest-cov 5.0.0) Handling pytest from tox --print-deps-only: py314 Requirement satisfied: pytest (installed: pytest 8.3.4) Handling PyYaml from tox --print-deps-only: py314 Requirement satisfied: PyYaml (installed: PyYaml 6.0.2) Handling responses from tox --print-deps-only: py314 Requirement satisfied: responses (installed: responses 0.25.6) Handling wheel from tox --print-deps-only: py314 Requirement satisfied: wheel (installed: wheel 0.45.1) py314: OK (0.00 seconds) congratulations :) (0.13 seconds) running dist_info writing python_gitlab.egg-info/PKG-INFO writing dependency_links to python_gitlab.egg-info/dependency_links.txt writing entry points to python_gitlab.egg-info/entry_points.txt writing requirements to python_gitlab.egg-info/requires.txt writing top-level names to python_gitlab.egg-info/top_level.txt reading manifest file 'python_gitlab.egg-info/SOURCES.txt' reading manifest template 'MANIFEST.in' adding license file 'COPYING' adding license file 'AUTHORS' writing manifest file 'python_gitlab.egg-info/SOURCES.txt' creating '/builddir/build/BUILD/python-gitlab-4.10.0-build/python_gitlab-4.10.0/python_gitlab-4.10.0.dist-info' Handling requests>=2.32.0 from hook generated metadata: Requires-Dist (python-gitlab) Requirement satisfied: requests>=2.32.0 (installed: requests 2.32.3) Handling requests-toolbelt>=1.0.0 from hook generated metadata: Requires-Dist (python-gitlab) Requirement satisfied: requests-toolbelt>=1.0.0 (installed: requests-toolbelt 1.0.0) Handling argcomplete<3,>=1.10.0; extra == "autocompletion" from hook generated metadata: Requires-Dist (python-gitlab) Ignoring alien requirement: argcomplete<3,>=1.10.0; extra == "autocompletion" Handling PyYaml>=6.0.1; extra == "yaml" from hook generated metadata: Requires-Dist (python-gitlab) Ignoring alien requirement: PyYaml>=6.0.1; extra == "yaml" + cat /builddir/build/BUILD/python-gitlab-4.10.0-build/python-gitlab-4.10.0-2.fc42.x86_64-pyproject-buildrequires + rm -rfv python_gitlab-4.10.0.dist-info/ removed 'python_gitlab-4.10.0.dist-info/entry_points.txt' removed 'python_gitlab-4.10.0.dist-info/top_level.txt' removed 'python_gitlab-4.10.0.dist-info/METADATA' removed 'python_gitlab-4.10.0.dist-info/COPYING' removed 'python_gitlab-4.10.0.dist-info/AUTHORS' removed directory 'python_gitlab-4.10.0.dist-info/' + RPM_EC=0 ++ jobs -p + exit 0 Wrote: /builddir/build/SRPMS/python-gitlab-4.10.0-2.fc42.buildreqs.nosrc.rpm INFO: Going to install missing dynamic buildrequires Updating and loading repositories: fedora 100% | 831.8 KiB/s | 29.1 KiB | 00m00s Additional repo http_kojipkgs_fedorapr 100% | 70.9 KiB/s | 3.8 KiB | 00m00s Copr repository 100% | 34.9 KiB/s | 1.5 KiB | 00m00s Copr repository 100% | 23.7 MiB/s | 4.4 MiB | 00m00s Repositories loaded. Package "pyproject-rpm-macros-1.16.4-2.fc42.noarch" is already installed. Nothing to do. Package "python3-devel-3.14.0~a4-2.fc42.x86_64" is already installed. Package "python3-build-1.2.2-1.fc42.noarch" is already installed. Package "python3-coverage-7.3.2-6.fc42.x86_64" is already installed. Package "python3-packaging-24.2-2.fc42.noarch" is already installed. Package "python3-pip-24.3.1-2.fc42.noarch" is already installed. Package "python3-pytest-8.3.4-3.fc42.noarch" is already installed. Package "python3-pytest-cov-5.0.0-1.fc42.noarch" is already installed. Package "python3-pyyaml-6.0.2-2.fc42.x86_64" is already installed. Package "python3-requests-2.32.3-4.fc42.noarch" is already installed. Package "python3-requests-2.32.3-4.fc42.noarch" is already installed. Package "python3-requests-toolbelt-1.0.0-9.fc42.noarch" is already installed. Package "python3-requests-toolbelt-1.0.0-9.fc42.noarch" is already installed. Package "python3-responses-0.25.6-1.fc42.noarch" is already installed. Package "python3-setuptools-74.1.3-5.fc42.noarch" is already installed. Package "tox-4.23.2-2.fc42.noarch" is already installed. Package "python3-tox-current-env-0.0.14-1.fc42.noarch" is already installed. Package "python3-wheel-1:0.45.1-2.fc42.noarch" is already installed. Building target platforms: x86_64 Building for target x86_64 setting SOURCE_DATE_EPOCH=1737158400 Executing(%generate_buildrequires): /bin/sh -e /var/tmp/rpm-tmp.xgzkUj + umask 022 + cd /builddir/build/BUILD/python-gitlab-4.10.0-build + cd python_gitlab-4.10.0 + echo pyproject-rpm-macros + echo python3-devel + echo 'python3dist(packaging)' + echo 'python3dist(pip) >= 19' + '[' -f pyproject.toml ']' + echo '(python3dist(tomli) if python3-devel < 3.11)' + rm -rfv '*.dist-info/' + '[' -f /usr/bin/python3 ']' + mkdir -p /builddir/build/BUILD/python-gitlab-4.10.0-build/python_gitlab-4.10.0/.pyproject-builddir + echo -n + CFLAGS='-O2 -flto=auto -ffat-lto-objects -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=3 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -march=x86-64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -mtls-dialect=gnu2 -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer ' + CXXFLAGS='-O2 -flto=auto -ffat-lto-objects -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=3 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -march=x86-64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -mtls-dialect=gnu2 -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer ' + FFLAGS='-O2 -flto=auto -ffat-lto-objects -fexceptions -g -grecord-gcc-switches -pipe -Wall -Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=3 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -march=x86-64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -mtls-dialect=gnu2 -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer -I/usr/lib64/gfortran/modules ' + FCFLAGS='-O2 -flto=auto -ffat-lto-objects -fexceptions -g -grecord-gcc-switches -pipe -Wall -Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=3 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -march=x86-64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -mtls-dialect=gnu2 -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer -I/usr/lib64/gfortran/modules ' + VALAFLAGS=-g + RUSTFLAGS='-Copt-level=3 -Cdebuginfo=2 -Ccodegen-units=1 -Cstrip=none -Cforce-frame-pointers=yes --cap-lints=warn' + LDFLAGS='-Wl,-z,relro -Wl,--as-needed -Wl,-z,pack-relative-relocs -Wl,-z,now -specs=/usr/lib/rpm/redhat/redhat-hardened-ld -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -Wl,--build-id=sha1 ' + LT_SYS_LIBRARY_PATH=/usr/lib64: + CC=gcc + CXX=g++ + TMPDIR=/builddir/build/BUILD/python-gitlab-4.10.0-build/python_gitlab-4.10.0/.pyproject-builddir + RPM_TOXENV=py314 + HOSTNAME=rpmbuild + /usr/bin/python3 -Bs /usr/lib/rpm/redhat/pyproject_buildrequires.py --generate-extras --python3_pkgversion 3 --wheeldir /builddir/build/BUILD/python-gitlab-4.10.0-build/python_gitlab-4.10.0/pyproject-wheeldir --output /builddir/build/BUILD/python-gitlab-4.10.0-build/python-gitlab-4.10.0-2.fc42.x86_64-pyproject-buildrequires -t Handling setuptools>=61.0.0 from build-system.requires Requirement satisfied: setuptools>=61.0.0 (installed: setuptools 74.1.3) running egg_info writing python_gitlab.egg-info/PKG-INFO writing dependency_links to python_gitlab.egg-info/dependency_links.txt writing entry points to python_gitlab.egg-info/entry_points.txt writing requirements to python_gitlab.egg-info/requires.txt writing top-level names to python_gitlab.egg-info/top_level.txt reading manifest file 'python_gitlab.egg-info/SOURCES.txt' reading manifest template 'MANIFEST.in' adding license file 'COPYING' adding license file 'AUTHORS' writing manifest file 'python_gitlab.egg-info/SOURCES.txt' Handling tox-current-env >= 0.0.6 from tox itself Requirement satisfied: tox-current-env >= 0.0.6 (installed: tox-current-env 0.0.14) py314: OK (0.00 seconds) congratulations :) (0.14 seconds) Handling tox>=4.0 from tox --print-deps-only: py314 Requirement satisfied: tox>=4.0 (installed: tox 4.23.2) Handling requests from tox --print-deps-only: py314 Requirement satisfied: requests (installed: requests 2.32.3) Handling requests-toolbelt from tox --print-deps-only: py314 Requirement satisfied: requests-toolbelt (installed: requests-toolbelt 1.0.0) Handling requests from tox --print-deps-only: py314 Requirement satisfied: requests (installed: requests 2.32.3) Handling requests-toolbelt from tox --print-deps-only: py314 Requirement satisfied: requests-toolbelt (installed: requests-toolbelt 1.0.0) Handling build from tox --print-deps-only: py314 Requirement satisfied: build (installed: build 1.2.2) Handling coverage from tox --print-deps-only: py314 Requirement satisfied: coverage (installed: coverage 7.3.2) Handling pytest-cov from tox --print-deps-only: py314 Requirement satisfied: pytest-cov (installed: pytest-cov 5.0.0) Handling pytest from tox --print-deps-only: py314 Requirement satisfied: pytest (installed: pytest 8.3.4) Handling PyYaml from tox --print-deps-only: py314 Requirement satisfied: PyYaml (installed: PyYaml 6.0.2) Handling responses from tox --print-deps-only: py314 Requirement satisfied: responses (installed: responses 0.25.6) Handling wheel from tox --print-deps-only: py314 Requirement satisfied: wheel (installed: wheel 0.45.1) py314: OK (0.00 seconds) congratulations :) (0.13 seconds) running dist_info writing python_gitlab.egg-info/PKG-INFO writing dependency_links to python_gitlab.egg-info/dependency_links.txt writing entry points to python_gitlab.egg-info/entry_points.txt writing requirements to python_gitlab.egg-info/requires.txt writing top-level names to python_gitlab.egg-info/top_level.txt reading manifest file 'python_gitlab.egg-info/SOURCES.txt' reading manifest template 'MANIFEST.in' adding license file 'COPYING' adding license file 'AUTHORS' writing manifest file 'python_gitlab.egg-info/SOURCES.txt' creating '/builddir/build/BUILD/python-gitlab-4.10.0-build/python_gitlab-4.10.0/python_gitlab-4.10.0.dist-info' Handling requests>=2.32.0 from hook generated metadata: Requires-Dist (python-gitlab) Requirement satisfied: requests>=2.32.0 (installed: requests 2.32.3) Handling requests-toolbelt>=1.0.0 from hook generated metadata: Requires-Dist (python-gitlab) Requirement satisfied: requests-toolbelt>=1.0.0 (installed: requests-toolbelt 1.0.0) Handling argcomplete<3,>=1.10.0; extra == "autocompletion" from hook generated metadata: Requires-Dist (python-gitlab) Ignoring alien requirement: argcomplete<3,>=1.10.0; extra == "autocompletion" Handling PyYaml>=6.0.1; extra == "yaml" from hook generated metadata: Requires-Dist (python-gitlab) Ignoring alien requirement: PyYaml>=6.0.1; extra == "yaml" + cat /builddir/build/BUILD/python-gitlab-4.10.0-build/python-gitlab-4.10.0-2.fc42.x86_64-pyproject-buildrequires + rm -rfv python_gitlab-4.10.0.dist-info/ removed 'python_gitlab-4.10.0.dist-info/entry_points.txt' removed 'python_gitlab-4.10.0.dist-info/top_level.txt' removed 'python_gitlab-4.10.0.dist-info/METADATA' removed 'python_gitlab-4.10.0.dist-info/COPYING' removed 'python_gitlab-4.10.0.dist-info/AUTHORS' removed directory 'python_gitlab-4.10.0.dist-info/' + RPM_EC=0 ++ jobs -p + exit 0 Executing(%build): /bin/sh -e /var/tmp/rpm-tmp.Vqyhgv + umask 022 + cd /builddir/build/BUILD/python-gitlab-4.10.0-build + CFLAGS='-O2 -flto=auto -ffat-lto-objects -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=3 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -march=x86-64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -mtls-dialect=gnu2 -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 -m64 -march=x86-64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -mtls-dialect=gnu2 -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 -m64 -march=x86-64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -mtls-dialect=gnu2 -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer -I/usr/lib64/gfortran/modules ' + export FFLAGS + FCFLAGS='-O2 -flto=auto -ffat-lto-objects -fexceptions -g -grecord-gcc-switches -pipe -Wall -Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=3 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -march=x86-64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -mtls-dialect=gnu2 -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer -I/usr/lib64/gfortran/modules ' + export FCFLAGS + VALAFLAGS=-g + export VALAFLAGS + RUSTFLAGS='-Copt-level=3 -Cdebuginfo=2 -Ccodegen-units=1 -Cstrip=none -Cforce-frame-pointers=yes -Clink-arg=-specs=/usr/lib/rpm/redhat/redhat-package-notes --cap-lints=warn' + export RUSTFLAGS + LDFLAGS='-Wl,-z,relro -Wl,--as-needed -Wl,-z,pack-relative-relocs -Wl,-z,now -specs=/usr/lib/rpm/redhat/redhat-hardened-ld -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -Wl,--build-id=sha1 -specs=/usr/lib/rpm/redhat/redhat-package-notes ' + export LDFLAGS + LT_SYS_LIBRARY_PATH=/usr/lib64: + export LT_SYS_LIBRARY_PATH + CC=gcc + export CC + CXX=g++ + export CXX + cd python_gitlab-4.10.0 + mkdir -p /builddir/build/BUILD/python-gitlab-4.10.0-build/python_gitlab-4.10.0/.pyproject-builddir + CFLAGS='-O2 -flto=auto -ffat-lto-objects -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=3 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -march=x86-64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -mtls-dialect=gnu2 -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer ' + CXXFLAGS='-O2 -flto=auto -ffat-lto-objects -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=3 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -march=x86-64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -mtls-dialect=gnu2 -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer ' + FFLAGS='-O2 -flto=auto -ffat-lto-objects -fexceptions -g -grecord-gcc-switches -pipe -Wall -Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=3 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -march=x86-64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -mtls-dialect=gnu2 -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer -I/usr/lib64/gfortran/modules ' + FCFLAGS='-O2 -flto=auto -ffat-lto-objects -fexceptions -g -grecord-gcc-switches -pipe -Wall -Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=3 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -march=x86-64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -mtls-dialect=gnu2 -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer -I/usr/lib64/gfortran/modules ' + VALAFLAGS=-g + RUSTFLAGS='-Copt-level=3 -Cdebuginfo=2 -Ccodegen-units=1 -Cstrip=none -Cforce-frame-pointers=yes -Clink-arg=-specs=/usr/lib/rpm/redhat/redhat-package-notes --cap-lints=warn' + LDFLAGS='-Wl,-z,relro -Wl,--as-needed -Wl,-z,pack-relative-relocs -Wl,-z,now -specs=/usr/lib/rpm/redhat/redhat-hardened-ld -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -Wl,--build-id=sha1 -specs=/usr/lib/rpm/redhat/redhat-package-notes ' + LT_SYS_LIBRARY_PATH=/usr/lib64: + CC=gcc + CXX=g++ + TMPDIR=/builddir/build/BUILD/python-gitlab-4.10.0-build/python_gitlab-4.10.0/.pyproject-builddir + /usr/bin/python3 -Bs /usr/lib/rpm/redhat/pyproject_wheel.py /builddir/build/BUILD/python-gitlab-4.10.0-build/python_gitlab-4.10.0/pyproject-wheeldir Processing /builddir/build/BUILD/python-gitlab-4.10.0-build/python_gitlab-4.10.0 Preparing metadata (pyproject.toml): started Running command Preparing metadata (pyproject.toml) running dist_info creating /builddir/build/BUILD/python-gitlab-4.10.0-build/python_gitlab-4.10.0/.pyproject-builddir/pip-modern-metadata-9zim6o4u/python_gitlab.egg-info writing /builddir/build/BUILD/python-gitlab-4.10.0-build/python_gitlab-4.10.0/.pyproject-builddir/pip-modern-metadata-9zim6o4u/python_gitlab.egg-info/PKG-INFO writing dependency_links to /builddir/build/BUILD/python-gitlab-4.10.0-build/python_gitlab-4.10.0/.pyproject-builddir/pip-modern-metadata-9zim6o4u/python_gitlab.egg-info/dependency_links.txt writing entry points to /builddir/build/BUILD/python-gitlab-4.10.0-build/python_gitlab-4.10.0/.pyproject-builddir/pip-modern-metadata-9zim6o4u/python_gitlab.egg-info/entry_points.txt writing requirements to /builddir/build/BUILD/python-gitlab-4.10.0-build/python_gitlab-4.10.0/.pyproject-builddir/pip-modern-metadata-9zim6o4u/python_gitlab.egg-info/requires.txt writing top-level names to /builddir/build/BUILD/python-gitlab-4.10.0-build/python_gitlab-4.10.0/.pyproject-builddir/pip-modern-metadata-9zim6o4u/python_gitlab.egg-info/top_level.txt writing manifest file '/builddir/build/BUILD/python-gitlab-4.10.0-build/python_gitlab-4.10.0/.pyproject-builddir/pip-modern-metadata-9zim6o4u/python_gitlab.egg-info/SOURCES.txt' reading manifest file '/builddir/build/BUILD/python-gitlab-4.10.0-build/python_gitlab-4.10.0/.pyproject-builddir/pip-modern-metadata-9zim6o4u/python_gitlab.egg-info/SOURCES.txt' reading manifest template 'MANIFEST.in' adding license file 'COPYING' adding license file 'AUTHORS' writing manifest file '/builddir/build/BUILD/python-gitlab-4.10.0-build/python_gitlab-4.10.0/.pyproject-builddir/pip-modern-metadata-9zim6o4u/python_gitlab.egg-info/SOURCES.txt' creating '/builddir/build/BUILD/python-gitlab-4.10.0-build/python_gitlab-4.10.0/.pyproject-builddir/pip-modern-metadata-9zim6o4u/python_gitlab-4.10.0.dist-info' Preparing metadata (pyproject.toml): finished with status 'done' Building wheels for collected packages: python-gitlab Building wheel for python-gitlab (pyproject.toml): started Running command Building wheel for python-gitlab (pyproject.toml) running bdist_wheel running build running build_py creating build creating build/lib creating build/lib/gitlab copying gitlab/__init__.py -> build/lib/gitlab copying gitlab/__main__.py -> build/lib/gitlab copying gitlab/_version.py -> build/lib/gitlab copying gitlab/base.py -> build/lib/gitlab copying gitlab/cli.py -> build/lib/gitlab copying gitlab/client.py -> build/lib/gitlab copying gitlab/config.py -> build/lib/gitlab copying gitlab/const.py -> build/lib/gitlab copying gitlab/exceptions.py -> build/lib/gitlab copying gitlab/mixins.py -> build/lib/gitlab copying gitlab/types.py -> build/lib/gitlab copying gitlab/utils.py -> build/lib/gitlab creating build/lib/gitlab/_backends copying gitlab/_backends/__init__.py -> build/lib/gitlab/_backends copying gitlab/_backends/protocol.py -> build/lib/gitlab/_backends copying gitlab/_backends/requests_backend.py -> build/lib/gitlab/_backends creating build/lib/gitlab/v4 copying gitlab/v4/__init__.py -> build/lib/gitlab/v4 copying gitlab/v4/cli.py -> build/lib/gitlab/v4 creating build/lib/gitlab/v4/objects copying gitlab/v4/objects/__init__.py -> build/lib/gitlab/v4/objects copying gitlab/v4/objects/access_requests.py -> build/lib/gitlab/v4/objects copying gitlab/v4/objects/appearance.py -> build/lib/gitlab/v4/objects copying gitlab/v4/objects/applications.py -> build/lib/gitlab/v4/objects copying gitlab/v4/objects/artifacts.py -> build/lib/gitlab/v4/objects copying gitlab/v4/objects/audit_events.py -> build/lib/gitlab/v4/objects copying gitlab/v4/objects/award_emojis.py -> build/lib/gitlab/v4/objects copying gitlab/v4/objects/badges.py -> build/lib/gitlab/v4/objects copying gitlab/v4/objects/boards.py -> build/lib/gitlab/v4/objects copying gitlab/v4/objects/branches.py -> build/lib/gitlab/v4/objects copying gitlab/v4/objects/broadcast_messages.py -> build/lib/gitlab/v4/objects copying gitlab/v4/objects/bulk_imports.py -> build/lib/gitlab/v4/objects copying gitlab/v4/objects/ci_lint.py -> build/lib/gitlab/v4/objects copying gitlab/v4/objects/cluster_agents.py -> build/lib/gitlab/v4/objects copying gitlab/v4/objects/clusters.py -> build/lib/gitlab/v4/objects copying gitlab/v4/objects/commits.py -> build/lib/gitlab/v4/objects copying gitlab/v4/objects/container_registry.py -> build/lib/gitlab/v4/objects copying gitlab/v4/objects/custom_attributes.py -> build/lib/gitlab/v4/objects copying gitlab/v4/objects/deploy_keys.py -> build/lib/gitlab/v4/objects copying gitlab/v4/objects/deploy_tokens.py -> build/lib/gitlab/v4/objects copying gitlab/v4/objects/deployments.py -> build/lib/gitlab/v4/objects copying gitlab/v4/objects/discussions.py -> build/lib/gitlab/v4/objects copying gitlab/v4/objects/draft_notes.py -> build/lib/gitlab/v4/objects copying gitlab/v4/objects/environments.py -> build/lib/gitlab/v4/objects copying gitlab/v4/objects/epics.py -> build/lib/gitlab/v4/objects copying gitlab/v4/objects/events.py -> build/lib/gitlab/v4/objects copying gitlab/v4/objects/export_import.py -> build/lib/gitlab/v4/objects copying gitlab/v4/objects/features.py -> build/lib/gitlab/v4/objects copying gitlab/v4/objects/files.py -> build/lib/gitlab/v4/objects copying gitlab/v4/objects/geo_nodes.py -> build/lib/gitlab/v4/objects copying gitlab/v4/objects/group_access_tokens.py -> build/lib/gitlab/v4/objects copying gitlab/v4/objects/groups.py -> build/lib/gitlab/v4/objects copying gitlab/v4/objects/hooks.py -> build/lib/gitlab/v4/objects copying gitlab/v4/objects/integrations.py -> build/lib/gitlab/v4/objects copying gitlab/v4/objects/invitations.py -> build/lib/gitlab/v4/objects copying gitlab/v4/objects/issues.py -> build/lib/gitlab/v4/objects copying gitlab/v4/objects/iterations.py -> build/lib/gitlab/v4/objects copying gitlab/v4/objects/job_token_scope.py -> build/lib/gitlab/v4/objects copying gitlab/v4/objects/jobs.py -> build/lib/gitlab/v4/objects copying gitlab/v4/objects/keys.py -> build/lib/gitlab/v4/objects copying gitlab/v4/objects/labels.py -> build/lib/gitlab/v4/objects copying gitlab/v4/objects/ldap.py -> build/lib/gitlab/v4/objects copying gitlab/v4/objects/members.py -> build/lib/gitlab/v4/objects copying gitlab/v4/objects/merge_request_approvals.py -> build/lib/gitlab/v4/objects copying gitlab/v4/objects/merge_requests.py -> build/lib/gitlab/v4/objects copying gitlab/v4/objects/merge_trains.py -> build/lib/gitlab/v4/objects copying gitlab/v4/objects/milestones.py -> build/lib/gitlab/v4/objects copying gitlab/v4/objects/namespaces.py -> build/lib/gitlab/v4/objects copying gitlab/v4/objects/notes.py -> build/lib/gitlab/v4/objects copying gitlab/v4/objects/notification_settings.py -> build/lib/gitlab/v4/objects copying gitlab/v4/objects/package_protection_rules.py -> build/lib/gitlab/v4/objects copying gitlab/v4/objects/packages.py -> build/lib/gitlab/v4/objects copying gitlab/v4/objects/pages.py -> build/lib/gitlab/v4/objects copying gitlab/v4/objects/personal_access_tokens.py -> build/lib/gitlab/v4/objects copying gitlab/v4/objects/pipelines.py -> build/lib/gitlab/v4/objects copying gitlab/v4/objects/project_access_tokens.py -> build/lib/gitlab/v4/objects copying gitlab/v4/objects/projects.py -> build/lib/gitlab/v4/objects copying gitlab/v4/objects/push_rules.py -> build/lib/gitlab/v4/objects copying gitlab/v4/objects/registry_protection_rules.py -> build/lib/gitlab/v4/objects copying gitlab/v4/objects/releases.py -> build/lib/gitlab/v4/objects copying gitlab/v4/objects/repositories.py -> build/lib/gitlab/v4/objects copying gitlab/v4/objects/resource_groups.py -> build/lib/gitlab/v4/objects copying gitlab/v4/objects/reviewers.py -> build/lib/gitlab/v4/objects copying gitlab/v4/objects/runners.py -> build/lib/gitlab/v4/objects copying gitlab/v4/objects/secure_files.py -> build/lib/gitlab/v4/objects copying gitlab/v4/objects/service_accounts.py -> build/lib/gitlab/v4/objects copying gitlab/v4/objects/settings.py -> build/lib/gitlab/v4/objects copying gitlab/v4/objects/sidekiq.py -> build/lib/gitlab/v4/objects copying gitlab/v4/objects/snippets.py -> build/lib/gitlab/v4/objects copying gitlab/v4/objects/statistics.py -> build/lib/gitlab/v4/objects copying gitlab/v4/objects/tags.py -> build/lib/gitlab/v4/objects copying gitlab/v4/objects/templates.py -> build/lib/gitlab/v4/objects copying gitlab/v4/objects/todos.py -> build/lib/gitlab/v4/objects copying gitlab/v4/objects/topics.py -> build/lib/gitlab/v4/objects copying gitlab/v4/objects/triggers.py -> build/lib/gitlab/v4/objects copying gitlab/v4/objects/users.py -> build/lib/gitlab/v4/objects copying gitlab/v4/objects/variables.py -> build/lib/gitlab/v4/objects copying gitlab/v4/objects/wikis.py -> build/lib/gitlab/v4/objects running egg_info writing python_gitlab.egg-info/PKG-INFO writing dependency_links to python_gitlab.egg-info/dependency_links.txt writing entry points to python_gitlab.egg-info/entry_points.txt writing requirements to python_gitlab.egg-info/requires.txt writing top-level names to python_gitlab.egg-info/top_level.txt reading manifest file 'python_gitlab.egg-info/SOURCES.txt' reading manifest template 'MANIFEST.in' adding license file 'COPYING' adding license file 'AUTHORS' writing manifest file 'python_gitlab.egg-info/SOURCES.txt' copying gitlab/py.typed -> build/lib/gitlab installing to build/bdist.linux-x86_64/wheel running install running install_lib creating build/bdist.linux-x86_64 creating build/bdist.linux-x86_64/wheel creating build/bdist.linux-x86_64/wheel/gitlab copying build/lib/gitlab/__init__.py -> build/bdist.linux-x86_64/wheel/./gitlab copying build/lib/gitlab/__main__.py -> build/bdist.linux-x86_64/wheel/./gitlab copying build/lib/gitlab/_version.py -> build/bdist.linux-x86_64/wheel/./gitlab copying build/lib/gitlab/base.py -> build/bdist.linux-x86_64/wheel/./gitlab copying build/lib/gitlab/cli.py -> build/bdist.linux-x86_64/wheel/./gitlab copying build/lib/gitlab/client.py -> build/bdist.linux-x86_64/wheel/./gitlab copying build/lib/gitlab/config.py -> build/bdist.linux-x86_64/wheel/./gitlab copying build/lib/gitlab/const.py -> build/bdist.linux-x86_64/wheel/./gitlab copying build/lib/gitlab/exceptions.py -> build/bdist.linux-x86_64/wheel/./gitlab copying build/lib/gitlab/mixins.py -> build/bdist.linux-x86_64/wheel/./gitlab copying build/lib/gitlab/types.py -> build/bdist.linux-x86_64/wheel/./gitlab copying build/lib/gitlab/utils.py -> build/bdist.linux-x86_64/wheel/./gitlab creating build/bdist.linux-x86_64/wheel/gitlab/_backends copying build/lib/gitlab/_backends/__init__.py -> build/bdist.linux-x86_64/wheel/./gitlab/_backends copying build/lib/gitlab/_backends/protocol.py -> build/bdist.linux-x86_64/wheel/./gitlab/_backends copying build/lib/gitlab/_backends/requests_backend.py -> build/bdist.linux-x86_64/wheel/./gitlab/_backends creating build/bdist.linux-x86_64/wheel/gitlab/v4 copying build/lib/gitlab/v4/__init__.py -> build/bdist.linux-x86_64/wheel/./gitlab/v4 copying build/lib/gitlab/v4/cli.py -> build/bdist.linux-x86_64/wheel/./gitlab/v4 creating build/bdist.linux-x86_64/wheel/gitlab/v4/objects copying build/lib/gitlab/v4/objects/__init__.py -> build/bdist.linux-x86_64/wheel/./gitlab/v4/objects copying build/lib/gitlab/v4/objects/access_requests.py -> build/bdist.linux-x86_64/wheel/./gitlab/v4/objects copying build/lib/gitlab/v4/objects/appearance.py -> build/bdist.linux-x86_64/wheel/./gitlab/v4/objects copying build/lib/gitlab/v4/objects/applications.py -> build/bdist.linux-x86_64/wheel/./gitlab/v4/objects copying build/lib/gitlab/v4/objects/artifacts.py -> build/bdist.linux-x86_64/wheel/./gitlab/v4/objects copying build/lib/gitlab/v4/objects/audit_events.py -> build/bdist.linux-x86_64/wheel/./gitlab/v4/objects copying build/lib/gitlab/v4/objects/award_emojis.py -> build/bdist.linux-x86_64/wheel/./gitlab/v4/objects copying build/lib/gitlab/v4/objects/badges.py -> build/bdist.linux-x86_64/wheel/./gitlab/v4/objects copying build/lib/gitlab/v4/objects/boards.py -> build/bdist.linux-x86_64/wheel/./gitlab/v4/objects copying build/lib/gitlab/v4/objects/branches.py -> build/bdist.linux-x86_64/wheel/./gitlab/v4/objects copying build/lib/gitlab/v4/objects/broadcast_messages.py -> build/bdist.linux-x86_64/wheel/./gitlab/v4/objects copying build/lib/gitlab/v4/objects/bulk_imports.py -> build/bdist.linux-x86_64/wheel/./gitlab/v4/objects copying build/lib/gitlab/v4/objects/ci_lint.py -> build/bdist.linux-x86_64/wheel/./gitlab/v4/objects copying build/lib/gitlab/v4/objects/cluster_agents.py -> build/bdist.linux-x86_64/wheel/./gitlab/v4/objects copying build/lib/gitlab/v4/objects/clusters.py -> build/bdist.linux-x86_64/wheel/./gitlab/v4/objects copying build/lib/gitlab/v4/objects/commits.py -> build/bdist.linux-x86_64/wheel/./gitlab/v4/objects copying build/lib/gitlab/v4/objects/container_registry.py -> build/bdist.linux-x86_64/wheel/./gitlab/v4/objects copying build/lib/gitlab/v4/objects/custom_attributes.py -> build/bdist.linux-x86_64/wheel/./gitlab/v4/objects copying build/lib/gitlab/v4/objects/deploy_keys.py -> build/bdist.linux-x86_64/wheel/./gitlab/v4/objects copying build/lib/gitlab/v4/objects/deploy_tokens.py -> build/bdist.linux-x86_64/wheel/./gitlab/v4/objects copying build/lib/gitlab/v4/objects/deployments.py -> build/bdist.linux-x86_64/wheel/./gitlab/v4/objects copying build/lib/gitlab/v4/objects/discussions.py -> build/bdist.linux-x86_64/wheel/./gitlab/v4/objects copying build/lib/gitlab/v4/objects/draft_notes.py -> build/bdist.linux-x86_64/wheel/./gitlab/v4/objects copying build/lib/gitlab/v4/objects/environments.py -> build/bdist.linux-x86_64/wheel/./gitlab/v4/objects copying build/lib/gitlab/v4/objects/epics.py -> build/bdist.linux-x86_64/wheel/./gitlab/v4/objects copying build/lib/gitlab/v4/objects/events.py -> build/bdist.linux-x86_64/wheel/./gitlab/v4/objects copying build/lib/gitlab/v4/objects/export_import.py -> build/bdist.linux-x86_64/wheel/./gitlab/v4/objects copying build/lib/gitlab/v4/objects/features.py -> build/bdist.linux-x86_64/wheel/./gitlab/v4/objects copying build/lib/gitlab/v4/objects/files.py -> build/bdist.linux-x86_64/wheel/./gitlab/v4/objects copying build/lib/gitlab/v4/objects/geo_nodes.py -> build/bdist.linux-x86_64/wheel/./gitlab/v4/objects copying build/lib/gitlab/v4/objects/group_access_tokens.py -> build/bdist.linux-x86_64/wheel/./gitlab/v4/objects copying build/lib/gitlab/v4/objects/groups.py -> build/bdist.linux-x86_64/wheel/./gitlab/v4/objects copying build/lib/gitlab/v4/objects/hooks.py -> build/bdist.linux-x86_64/wheel/./gitlab/v4/objects copying build/lib/gitlab/v4/objects/integrations.py -> build/bdist.linux-x86_64/wheel/./gitlab/v4/objects copying build/lib/gitlab/v4/objects/invitations.py -> build/bdist.linux-x86_64/wheel/./gitlab/v4/objects copying build/lib/gitlab/v4/objects/issues.py -> build/bdist.linux-x86_64/wheel/./gitlab/v4/objects copying build/lib/gitlab/v4/objects/iterations.py -> build/bdist.linux-x86_64/wheel/./gitlab/v4/objects copying build/lib/gitlab/v4/objects/job_token_scope.py -> build/bdist.linux-x86_64/wheel/./gitlab/v4/objects copying build/lib/gitlab/v4/objects/jobs.py -> build/bdist.linux-x86_64/wheel/./gitlab/v4/objects copying build/lib/gitlab/v4/objects/keys.py -> build/bdist.linux-x86_64/wheel/./gitlab/v4/objects copying build/lib/gitlab/v4/objects/labels.py -> build/bdist.linux-x86_64/wheel/./gitlab/v4/objects copying build/lib/gitlab/v4/objects/ldap.py -> build/bdist.linux-x86_64/wheel/./gitlab/v4/objects copying build/lib/gitlab/v4/objects/members.py -> build/bdist.linux-x86_64/wheel/./gitlab/v4/objects copying build/lib/gitlab/v4/objects/merge_request_approvals.py -> build/bdist.linux-x86_64/wheel/./gitlab/v4/objects copying build/lib/gitlab/v4/objects/merge_requests.py -> build/bdist.linux-x86_64/wheel/./gitlab/v4/objects copying build/lib/gitlab/v4/objects/merge_trains.py -> build/bdist.linux-x86_64/wheel/./gitlab/v4/objects copying build/lib/gitlab/v4/objects/milestones.py -> build/bdist.linux-x86_64/wheel/./gitlab/v4/objects copying build/lib/gitlab/v4/objects/namespaces.py -> build/bdist.linux-x86_64/wheel/./gitlab/v4/objects copying build/lib/gitlab/v4/objects/notes.py -> build/bdist.linux-x86_64/wheel/./gitlab/v4/objects copying build/lib/gitlab/v4/objects/notification_settings.py -> build/bdist.linux-x86_64/wheel/./gitlab/v4/objects copying build/lib/gitlab/v4/objects/package_protection_rules.py -> build/bdist.linux-x86_64/wheel/./gitlab/v4/objects copying build/lib/gitlab/v4/objects/packages.py -> build/bdist.linux-x86_64/wheel/./gitlab/v4/objects copying build/lib/gitlab/v4/objects/pages.py -> build/bdist.linux-x86_64/wheel/./gitlab/v4/objects copying build/lib/gitlab/v4/objects/personal_access_tokens.py -> build/bdist.linux-x86_64/wheel/./gitlab/v4/objects copying build/lib/gitlab/v4/objects/pipelines.py -> build/bdist.linux-x86_64/wheel/./gitlab/v4/objects copying build/lib/gitlab/v4/objects/project_access_tokens.py -> build/bdist.linux-x86_64/wheel/./gitlab/v4/objects copying build/lib/gitlab/v4/objects/projects.py -> build/bdist.linux-x86_64/wheel/./gitlab/v4/objects copying build/lib/gitlab/v4/objects/push_rules.py -> build/bdist.linux-x86_64/wheel/./gitlab/v4/objects copying build/lib/gitlab/v4/objects/registry_protection_rules.py -> build/bdist.linux-x86_64/wheel/./gitlab/v4/objects copying build/lib/gitlab/v4/objects/releases.py -> build/bdist.linux-x86_64/wheel/./gitlab/v4/objects copying build/lib/gitlab/v4/objects/repositories.py -> build/bdist.linux-x86_64/wheel/./gitlab/v4/objects copying build/lib/gitlab/v4/objects/resource_groups.py -> build/bdist.linux-x86_64/wheel/./gitlab/v4/objects copying build/lib/gitlab/v4/objects/reviewers.py -> build/bdist.linux-x86_64/wheel/./gitlab/v4/objects copying build/lib/gitlab/v4/objects/runners.py -> build/bdist.linux-x86_64/wheel/./gitlab/v4/objects copying build/lib/gitlab/v4/objects/secure_files.py -> build/bdist.linux-x86_64/wheel/./gitlab/v4/objects copying build/lib/gitlab/v4/objects/service_accounts.py -> build/bdist.linux-x86_64/wheel/./gitlab/v4/objects copying build/lib/gitlab/v4/objects/settings.py -> build/bdist.linux-x86_64/wheel/./gitlab/v4/objects copying build/lib/gitlab/v4/objects/sidekiq.py -> build/bdist.linux-x86_64/wheel/./gitlab/v4/objects copying build/lib/gitlab/v4/objects/snippets.py -> build/bdist.linux-x86_64/wheel/./gitlab/v4/objects copying build/lib/gitlab/v4/objects/statistics.py -> build/bdist.linux-x86_64/wheel/./gitlab/v4/objects copying build/lib/gitlab/v4/objects/tags.py -> build/bdist.linux-x86_64/wheel/./gitlab/v4/objects copying build/lib/gitlab/v4/objects/templates.py -> build/bdist.linux-x86_64/wheel/./gitlab/v4/objects copying build/lib/gitlab/v4/objects/todos.py -> build/bdist.linux-x86_64/wheel/./gitlab/v4/objects copying build/lib/gitlab/v4/objects/topics.py -> build/bdist.linux-x86_64/wheel/./gitlab/v4/objects copying build/lib/gitlab/v4/objects/triggers.py -> build/bdist.linux-x86_64/wheel/./gitlab/v4/objects copying build/lib/gitlab/v4/objects/users.py -> build/bdist.linux-x86_64/wheel/./gitlab/v4/objects copying build/lib/gitlab/v4/objects/variables.py -> build/bdist.linux-x86_64/wheel/./gitlab/v4/objects copying build/lib/gitlab/v4/objects/wikis.py -> build/bdist.linux-x86_64/wheel/./gitlab/v4/objects copying build/lib/gitlab/py.typed -> build/bdist.linux-x86_64/wheel/./gitlab running install_egg_info Copying python_gitlab.egg-info to build/bdist.linux-x86_64/wheel/./python_gitlab-4.10.0-py3.14.egg-info running install_scripts creating build/bdist.linux-x86_64/wheel/python_gitlab-4.10.0.dist-info/WHEEL creating '/builddir/build/BUILD/python-gitlab-4.10.0-build/python_gitlab-4.10.0/.pyproject-builddir/pip-wheel-e76m55t8/.tmp-hn2kqh49/python_gitlab-4.10.0-py3-none-any.whl' and adding 'build/bdist.linux-x86_64/wheel' to it adding 'gitlab/__init__.py' adding 'gitlab/__main__.py' adding 'gitlab/_version.py' adding 'gitlab/base.py' adding 'gitlab/cli.py' adding 'gitlab/client.py' adding 'gitlab/config.py' adding 'gitlab/const.py' adding 'gitlab/exceptions.py' adding 'gitlab/mixins.py' adding 'gitlab/py.typed' adding 'gitlab/types.py' adding 'gitlab/utils.py' adding 'gitlab/_backends/__init__.py' adding 'gitlab/_backends/protocol.py' adding 'gitlab/_backends/requests_backend.py' adding 'gitlab/v4/__init__.py' adding 'gitlab/v4/cli.py' adding 'gitlab/v4/objects/__init__.py' adding 'gitlab/v4/objects/access_requests.py' adding 'gitlab/v4/objects/appearance.py' adding 'gitlab/v4/objects/applications.py' adding 'gitlab/v4/objects/artifacts.py' adding 'gitlab/v4/objects/audit_events.py' adding 'gitlab/v4/objects/award_emojis.py' adding 'gitlab/v4/objects/badges.py' adding 'gitlab/v4/objects/boards.py' adding 'gitlab/v4/objects/branches.py' adding 'gitlab/v4/objects/broadcast_messages.py' adding 'gitlab/v4/objects/bulk_imports.py' adding 'gitlab/v4/objects/ci_lint.py' adding 'gitlab/v4/objects/cluster_agents.py' adding 'gitlab/v4/objects/clusters.py' adding 'gitlab/v4/objects/commits.py' adding 'gitlab/v4/objects/container_registry.py' adding 'gitlab/v4/objects/custom_attributes.py' adding 'gitlab/v4/objects/deploy_keys.py' adding 'gitlab/v4/objects/deploy_tokens.py' adding 'gitlab/v4/objects/deployments.py' adding 'gitlab/v4/objects/discussions.py' adding 'gitlab/v4/objects/draft_notes.py' adding 'gitlab/v4/objects/environments.py' adding 'gitlab/v4/objects/epics.py' adding 'gitlab/v4/objects/events.py' adding 'gitlab/v4/objects/export_import.py' adding 'gitlab/v4/objects/features.py' adding 'gitlab/v4/objects/files.py' adding 'gitlab/v4/objects/geo_nodes.py' adding 'gitlab/v4/objects/group_access_tokens.py' adding 'gitlab/v4/objects/groups.py' adding 'gitlab/v4/objects/hooks.py' adding 'gitlab/v4/objects/integrations.py' adding 'gitlab/v4/objects/invitations.py' adding 'gitlab/v4/objects/issues.py' adding 'gitlab/v4/objects/iterations.py' adding 'gitlab/v4/objects/job_token_scope.py' adding 'gitlab/v4/objects/jobs.py' adding 'gitlab/v4/objects/keys.py' adding 'gitlab/v4/objects/labels.py' adding 'gitlab/v4/objects/ldap.py' adding 'gitlab/v4/objects/members.py' adding 'gitlab/v4/objects/merge_request_approvals.py' adding 'gitlab/v4/objects/merge_requests.py' adding 'gitlab/v4/objects/merge_trains.py' adding 'gitlab/v4/objects/milestones.py' adding 'gitlab/v4/objects/namespaces.py' adding 'gitlab/v4/objects/notes.py' adding 'gitlab/v4/objects/notification_settings.py' adding 'gitlab/v4/objects/package_protection_rules.py' adding 'gitlab/v4/objects/packages.py' adding 'gitlab/v4/objects/pages.py' adding 'gitlab/v4/objects/personal_access_tokens.py' adding 'gitlab/v4/objects/pipelines.py' adding 'gitlab/v4/objects/project_access_tokens.py' adding 'gitlab/v4/objects/projects.py' adding 'gitlab/v4/objects/push_rules.py' adding 'gitlab/v4/objects/registry_protection_rules.py' adding 'gitlab/v4/objects/releases.py' adding 'gitlab/v4/objects/repositories.py' adding 'gitlab/v4/objects/resource_groups.py' adding 'gitlab/v4/objects/reviewers.py' adding 'gitlab/v4/objects/runners.py' adding 'gitlab/v4/objects/secure_files.py' adding 'gitlab/v4/objects/service_accounts.py' adding 'gitlab/v4/objects/settings.py' adding 'gitlab/v4/objects/sidekiq.py' adding 'gitlab/v4/objects/snippets.py' adding 'gitlab/v4/objects/statistics.py' adding 'gitlab/v4/objects/tags.py' adding 'gitlab/v4/objects/templates.py' adding 'gitlab/v4/objects/todos.py' adding 'gitlab/v4/objects/topics.py' adding 'gitlab/v4/objects/triggers.py' adding 'gitlab/v4/objects/users.py' adding 'gitlab/v4/objects/variables.py' adding 'gitlab/v4/objects/wikis.py' adding 'python_gitlab-4.10.0.dist-info/AUTHORS' adding 'python_gitlab-4.10.0.dist-info/COPYING' adding 'python_gitlab-4.10.0.dist-info/METADATA' adding 'python_gitlab-4.10.0.dist-info/WHEEL' adding 'python_gitlab-4.10.0.dist-info/entry_points.txt' adding 'python_gitlab-4.10.0.dist-info/top_level.txt' adding 'python_gitlab-4.10.0.dist-info/RECORD' removing build/bdist.linux-x86_64/wheel Building wheel for python-gitlab (pyproject.toml): finished with status 'done' Created wheel for python-gitlab: filename=python_gitlab-4.10.0-py3-none-any.whl size=142721 sha256=15ba05f4f34a072e8c052d58d954e9e768f03dc033cdd03aa208ca5b9ea8d0a2 Stored in directory: /builddir/.cache/pip/wheels/96/e5/14/623ce71461c3abee398f3cef6f8df79216dba046b4ee794817 Successfully built python-gitlab + RPM_EC=0 ++ jobs -p + exit 0 Executing(%install): /bin/sh -e /var/tmp/rpm-tmp.g9hGRB + umask 022 + cd /builddir/build/BUILD/python-gitlab-4.10.0-build + '[' /builddir/build/BUILD/python-gitlab-4.10.0-build/BUILDROOT '!=' / ']' + rm -rf /builddir/build/BUILD/python-gitlab-4.10.0-build/BUILDROOT ++ dirname /builddir/build/BUILD/python-gitlab-4.10.0-build/BUILDROOT + mkdir -p /builddir/build/BUILD/python-gitlab-4.10.0-build + mkdir /builddir/build/BUILD/python-gitlab-4.10.0-build/BUILDROOT + CFLAGS='-O2 -flto=auto -ffat-lto-objects -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=3 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -march=x86-64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -mtls-dialect=gnu2 -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 -m64 -march=x86-64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -mtls-dialect=gnu2 -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 -m64 -march=x86-64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -mtls-dialect=gnu2 -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer -I/usr/lib64/gfortran/modules ' + export FFLAGS + FCFLAGS='-O2 -flto=auto -ffat-lto-objects -fexceptions -g -grecord-gcc-switches -pipe -Wall -Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=3 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -march=x86-64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -mtls-dialect=gnu2 -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer -I/usr/lib64/gfortran/modules ' + export FCFLAGS + VALAFLAGS=-g + export VALAFLAGS + RUSTFLAGS='-Copt-level=3 -Cdebuginfo=2 -Ccodegen-units=1 -Cstrip=none -Cforce-frame-pointers=yes -Clink-arg=-specs=/usr/lib/rpm/redhat/redhat-package-notes --cap-lints=warn' + export RUSTFLAGS + LDFLAGS='-Wl,-z,relro -Wl,--as-needed -Wl,-z,pack-relative-relocs -Wl,-z,now -specs=/usr/lib/rpm/redhat/redhat-hardened-ld -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -Wl,--build-id=sha1 -specs=/usr/lib/rpm/redhat/redhat-package-notes ' + export LDFLAGS + LT_SYS_LIBRARY_PATH=/usr/lib64: + export LT_SYS_LIBRARY_PATH + CC=gcc + export CC + CXX=g++ + export CXX + cd python_gitlab-4.10.0 ++ ls /builddir/build/BUILD/python-gitlab-4.10.0-build/python_gitlab-4.10.0/pyproject-wheeldir/python_gitlab-4.10.0-py3-none-any.whl ++ xargs basename --multiple ++ sed -E 's/([^-]+)-([^-]+)-.+\.whl/\1==\2/' + specifier=python_gitlab==4.10.0 + '[' -z python_gitlab==4.10.0 ']' + TMPDIR=/builddir/build/BUILD/python-gitlab-4.10.0-build/python_gitlab-4.10.0/.pyproject-builddir + /usr/bin/python3 -m pip install --root /builddir/build/BUILD/python-gitlab-4.10.0-build/BUILDROOT --prefix /usr --no-deps --disable-pip-version-check --progress-bar off --verbose --ignore-installed --no-warn-script-location --no-index --no-cache-dir --find-links /builddir/build/BUILD/python-gitlab-4.10.0-build/python_gitlab-4.10.0/pyproject-wheeldir python_gitlab==4.10.0 Using pip 24.3.1 from /usr/lib/python3.14/site-packages/pip (python 3.14) Looking in links: /builddir/build/BUILD/python-gitlab-4.10.0-build/python_gitlab-4.10.0/pyproject-wheeldir Processing ./pyproject-wheeldir/python_gitlab-4.10.0-py3-none-any.whl Installing collected packages: python_gitlab Creating /builddir/build/BUILD/python-gitlab-4.10.0-build/BUILDROOT/usr/bin changing mode of /builddir/build/BUILD/python-gitlab-4.10.0-build/BUILDROOT/usr/bin/gitlab to 755 Successfully installed python_gitlab-4.10.0 + '[' -d /builddir/build/BUILD/python-gitlab-4.10.0-build/BUILDROOT/usr/bin ']' + '[' -z sP ']' + shebang_flags=-kasP + /usr/bin/python3 -B /usr/lib/rpm/redhat/pathfix.py -pni /usr/bin/python3 -kasP /builddir/build/BUILD/python-gitlab-4.10.0-build/BUILDROOT/usr/bin/gitlab /builddir/build/BUILD/python-gitlab-4.10.0-build/BUILDROOT/usr/bin/gitlab: updating + rm -rfv /builddir/build/BUILD/python-gitlab-4.10.0-build/BUILDROOT/usr/bin/__pycache__ + rm -f /builddir/build/BUILD/python-gitlab-4.10.0-build/python-gitlab-4.10.0-2.fc42.x86_64-pyproject-ghost-distinfo + site_dirs=() + '[' -d /builddir/build/BUILD/python-gitlab-4.10.0-build/BUILDROOT/usr/lib/python3.14/site-packages ']' + site_dirs+=("/usr/lib/python3.14/site-packages") + '[' /builddir/build/BUILD/python-gitlab-4.10.0-build/BUILDROOT/usr/lib64/python3.14/site-packages '!=' /builddir/build/BUILD/python-gitlab-4.10.0-build/BUILDROOT/usr/lib/python3.14/site-packages ']' + '[' -d /builddir/build/BUILD/python-gitlab-4.10.0-build/BUILDROOT/usr/lib64/python3.14/site-packages ']' + for site_dir in ${site_dirs[@]} + for distinfo in /builddir/build/BUILD/python-gitlab-4.10.0-build/BUILDROOT$site_dir/*.dist-info + echo '%ghost /usr/lib/python3.14/site-packages/python_gitlab-4.10.0.dist-info' + sed -i s/pip/rpm/ /builddir/build/BUILD/python-gitlab-4.10.0-build/BUILDROOT/usr/lib/python3.14/site-packages/python_gitlab-4.10.0.dist-info/INSTALLER + PYTHONPATH=/usr/lib/rpm/redhat + /usr/bin/python3 -B /usr/lib/rpm/redhat/pyproject_preprocess_record.py --buildroot /builddir/build/BUILD/python-gitlab-4.10.0-build/BUILDROOT --record /builddir/build/BUILD/python-gitlab-4.10.0-build/BUILDROOT/usr/lib/python3.14/site-packages/python_gitlab-4.10.0.dist-info/RECORD --output /builddir/build/BUILD/python-gitlab-4.10.0-build/python-gitlab-4.10.0-2.fc42.x86_64-pyproject-record + rm -fv /builddir/build/BUILD/python-gitlab-4.10.0-build/BUILDROOT/usr/lib/python3.14/site-packages/python_gitlab-4.10.0.dist-info/RECORD removed '/builddir/build/BUILD/python-gitlab-4.10.0-build/BUILDROOT/usr/lib/python3.14/site-packages/python_gitlab-4.10.0.dist-info/RECORD' + rm -fv /builddir/build/BUILD/python-gitlab-4.10.0-build/BUILDROOT/usr/lib/python3.14/site-packages/python_gitlab-4.10.0.dist-info/REQUESTED removed '/builddir/build/BUILD/python-gitlab-4.10.0-build/BUILDROOT/usr/lib/python3.14/site-packages/python_gitlab-4.10.0.dist-info/REQUESTED' ++ wc -l /builddir/build/BUILD/python-gitlab-4.10.0-build/python-gitlab-4.10.0-2.fc42.x86_64-pyproject-ghost-distinfo ++ cut -f1 '-d ' + lines=1 + '[' 1 -ne 1 ']' + RPM_FILES_ESCAPE=4.19 + /usr/bin/python3 /usr/lib/rpm/redhat/pyproject_save_files.py --output-files /builddir/build/BUILD/python-gitlab-4.10.0-build/python-gitlab-4.10.0-2.fc42.x86_64-pyproject-files --output-modules /builddir/build/BUILD/python-gitlab-4.10.0-build/python-gitlab-4.10.0-2.fc42.x86_64-pyproject-modules --buildroot /builddir/build/BUILD/python-gitlab-4.10.0-build/BUILDROOT --sitelib /usr/lib/python3.14/site-packages --sitearch /usr/lib64/python3.14/site-packages --python-version 3.14 --pyproject-record /builddir/build/BUILD/python-gitlab-4.10.0-build/python-gitlab-4.10.0-2.fc42.x86_64-pyproject-record --prefix /usr gitlab + /usr/lib/rpm/check-buildroot + /usr/lib/rpm/redhat/brp-ldconfig + /usr/lib/rpm/brp-compress + /usr/lib/rpm/brp-strip /usr/bin/strip + /usr/lib/rpm/brp-strip-comment-note /usr/bin/strip /usr/bin/objdump + /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 + /usr/lib/rpm/brp-remove-la-files + env /usr/lib/rpm/redhat/brp-python-bytecompile '' 1 0 -j2 Bytecompiling .py files below /builddir/build/BUILD/python-gitlab-4.10.0-build/BUILDROOT/usr/lib/python3.14 using python3.14 + /usr/lib/rpm/redhat/brp-python-hardlink + /usr/bin/add-determinism --brp -j2 /builddir/build/BUILD/python-gitlab-4.10.0-build/BUILDROOT /builddir/build/BUILD/python-gitlab-4.10.0-build/BUILDROOT/usr/lib/python3.14/site-packages/gitlab/_backends/__pycache__/__init__.cpython-314.pyc: rewriting with normalized contents /builddir/build/BUILD/python-gitlab-4.10.0-build/BUILDROOT/usr/lib/python3.14/site-packages/gitlab/_backends/__pycache__/protocol.cpython-314.pyc: rewriting with normalized contents /builddir/build/BUILD/python-gitlab-4.10.0-build/BUILDROOT/usr/lib/python3.14/site-packages/gitlab/_backends/__pycache__/requests_backend.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/python-gitlab-4.10.0-build/BUILDROOT/usr/lib/python3.14/site-packages/gitlab/v4/objects/__pycache__/__init__.cpython-314.pyc: rewriting with normalized contents /builddir/build/BUILD/python-gitlab-4.10.0-build/BUILDROOT/usr/lib/python3.14/site-packages/gitlab/v4/objects/__pycache__/access_requests.cpython-314.pyc: rewriting with normalized contents /builddir/build/BUILD/python-gitlab-4.10.0-build/BUILDROOT/usr/lib/python3.14/site-packages/gitlab/v4/objects/__pycache__/appearance.cpython-314.pyc: rewriting with normalized contents /builddir/build/BUILD/python-gitlab-4.10.0-build/BUILDROOT/usr/lib/python3.14/site-packages/gitlab/_backends/__pycache__/requests_backend.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/python-gitlab-4.10.0-build/BUILDROOT/usr/lib/python3.14/site-packages/gitlab/v4/objects/__pycache__/applications.cpython-314.pyc: rewriting with normalized contents /builddir/build/BUILD/python-gitlab-4.10.0-build/BUILDROOT/usr/lib/python3.14/site-packages/gitlab/v4/objects/__pycache__/audit_events.cpython-314.pyc: rewriting with normalized contents /builddir/build/BUILD/python-gitlab-4.10.0-build/BUILDROOT/usr/lib/python3.14/site-packages/gitlab/v4/objects/__pycache__/artifacts.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/python-gitlab-4.10.0-build/BUILDROOT/usr/lib/python3.14/site-packages/gitlab/v4/objects/__pycache__/badges.cpython-314.pyc: rewriting with normalized contents /builddir/build/BUILD/python-gitlab-4.10.0-build/BUILDROOT/usr/lib/python3.14/site-packages/gitlab/v4/objects/__pycache__/boards.cpython-314.pyc: rewriting with normalized contents /builddir/build/BUILD/python-gitlab-4.10.0-build/BUILDROOT/usr/lib/python3.14/site-packages/gitlab/v4/objects/__pycache__/award_emojis.cpython-314.pyc: rewriting with normalized contents /builddir/build/BUILD/python-gitlab-4.10.0-build/BUILDROOT/usr/lib/python3.14/site-packages/gitlab/v4/objects/__pycache__/branches.cpython-314.pyc: rewriting with normalized contents /builddir/build/BUILD/python-gitlab-4.10.0-build/BUILDROOT/usr/lib/python3.14/site-packages/gitlab/v4/objects/__pycache__/broadcast_messages.cpython-314.pyc: rewriting with normalized contents /builddir/build/BUILD/python-gitlab-4.10.0-build/BUILDROOT/usr/lib/python3.14/site-packages/gitlab/v4/objects/__pycache__/bulk_imports.cpython-314.pyc: rewriting with normalized contents /builddir/build/BUILD/python-gitlab-4.10.0-build/BUILDROOT/usr/lib/python3.14/site-packages/gitlab/v4/objects/__pycache__/cluster_agents.cpython-314.pyc: rewriting with normalized contents /builddir/build/BUILD/python-gitlab-4.10.0-build/BUILDROOT/usr/lib/python3.14/site-packages/gitlab/v4/objects/__pycache__/ci_lint.cpython-314.pyc: rewriting with normalized contents /builddir/build/BUILD/python-gitlab-4.10.0-build/BUILDROOT/usr/lib/python3.14/site-packages/gitlab/v4/objects/__pycache__/clusters.cpython-314.pyc: rewriting with normalized contents /builddir/build/BUILD/python-gitlab-4.10.0-build/BUILDROOT/usr/lib/python3.14/site-packages/gitlab/v4/objects/__pycache__/container_registry.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/python-gitlab-4.10.0-build/BUILDROOT/usr/lib/python3.14/site-packages/gitlab/v4/objects/__pycache__/commits.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/python-gitlab-4.10.0-build/BUILDROOT/usr/lib/python3.14/site-packages/gitlab/v4/objects/__pycache__/custom_attributes.cpython-314.pyc: rewriting with normalized contents /builddir/build/BUILD/python-gitlab-4.10.0-build/BUILDROOT/usr/lib/python3.14/site-packages/gitlab/v4/objects/__pycache__/deploy_tokens.cpython-314.pyc: rewriting with normalized contents /builddir/build/BUILD/python-gitlab-4.10.0-build/BUILDROOT/usr/lib/python3.14/site-packages/gitlab/v4/objects/__pycache__/deploy_keys.cpython-314.pyc: rewriting with normalized contents /builddir/build/BUILD/python-gitlab-4.10.0-build/BUILDROOT/usr/lib/python3.14/site-packages/gitlab/v4/objects/__pycache__/deployments.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/python-gitlab-4.10.0-build/BUILDROOT/usr/lib/python3.14/site-packages/gitlab/v4/objects/__pycache__/discussions.cpython-314.pyc: rewriting with normalized contents /builddir/build/BUILD/python-gitlab-4.10.0-build/BUILDROOT/usr/lib/python3.14/site-packages/gitlab/v4/objects/__pycache__/draft_notes.cpython-314.pyc: rewriting with normalized contents /builddir/build/BUILD/python-gitlab-4.10.0-build/BUILDROOT/usr/lib/python3.14/site-packages/gitlab/v4/objects/__pycache__/environments.cpython-314.pyc: rewriting with normalized contents /builddir/build/BUILD/python-gitlab-4.10.0-build/BUILDROOT/usr/lib/python3.14/site-packages/gitlab/v4/objects/__pycache__/epics.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/python-gitlab-4.10.0-build/BUILDROOT/usr/lib/python3.14/site-packages/gitlab/v4/objects/__pycache__/export_import.cpython-314.pyc: rewriting with normalized contents /builddir/build/BUILD/python-gitlab-4.10.0-build/BUILDROOT/usr/lib/python3.14/site-packages/gitlab/v4/objects/__pycache__/features.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/python-gitlab-4.10.0-build/BUILDROOT/usr/lib/python3.14/site-packages/gitlab/v4/objects/__pycache__/events.cpython-314.pyc: rewriting with normalized contents /builddir/build/BUILD/python-gitlab-4.10.0-build/BUILDROOT/usr/lib/python3.14/site-packages/gitlab/v4/objects/__pycache__/geo_nodes.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/python-gitlab-4.10.0-build/BUILDROOT/usr/lib/python3.14/site-packages/gitlab/v4/objects/__pycache__/group_access_tokens.cpython-314.pyc: rewriting with normalized contents /builddir/build/BUILD/python-gitlab-4.10.0-build/BUILDROOT/usr/lib/python3.14/site-packages/gitlab/v4/objects/__pycache__/files.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/python-gitlab-4.10.0-build/BUILDROOT/usr/lib/python3.14/site-packages/gitlab/v4/objects/__pycache__/hooks.cpython-314.pyc: rewriting with normalized contents /builddir/build/BUILD/python-gitlab-4.10.0-build/BUILDROOT/usr/lib/python3.14/site-packages/gitlab/v4/objects/__pycache__/integrations.cpython-314.pyc: rewriting with normalized contents /builddir/build/BUILD/python-gitlab-4.10.0-build/BUILDROOT/usr/lib/python3.14/site-packages/gitlab/v4/objects/__pycache__/invitations.cpython-314.pyc: rewriting with normalized contents /builddir/build/BUILD/python-gitlab-4.10.0-build/BUILDROOT/usr/lib/python3.14/site-packages/gitlab/v4/objects/__pycache__/groups.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/python-gitlab-4.10.0-build/BUILDROOT/usr/lib/python3.14/site-packages/gitlab/v4/objects/__pycache__/iterations.cpython-314.pyc: rewriting with normalized contents /builddir/build/BUILD/python-gitlab-4.10.0-build/BUILDROOT/usr/lib/python3.14/site-packages/gitlab/v4/objects/__pycache__/job_token_scope.cpython-314.pyc: rewriting with normalized contents /builddir/build/BUILD/python-gitlab-4.10.0-build/BUILDROOT/usr/lib/python3.14/site-packages/gitlab/v4/objects/__pycache__/issues.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/python-gitlab-4.10.0-build/BUILDROOT/usr/lib/python3.14/site-packages/gitlab/v4/objects/__pycache__/keys.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/python-gitlab-4.10.0-build/BUILDROOT/usr/lib/python3.14/site-packages/gitlab/v4/objects/__pycache__/jobs.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/python-gitlab-4.10.0-build/BUILDROOT/usr/lib/python3.14/site-packages/gitlab/v4/objects/__pycache__/ldap.cpython-314.pyc: rewriting with normalized contents /builddir/build/BUILD/python-gitlab-4.10.0-build/BUILDROOT/usr/lib/python3.14/site-packages/gitlab/v4/objects/__pycache__/labels.cpython-314.pyc: rewriting with normalized contents /builddir/build/BUILD/python-gitlab-4.10.0-build/BUILDROOT/usr/lib/python3.14/site-packages/gitlab/v4/objects/__pycache__/members.cpython-314.pyc: rewriting with normalized contents /builddir/build/BUILD/python-gitlab-4.10.0-build/BUILDROOT/usr/lib/python3.14/site-packages/gitlab/v4/objects/__pycache__/merge_request_approvals.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/python-gitlab-4.10.0-build/BUILDROOT/usr/lib/python3.14/site-packages/gitlab/v4/objects/__pycache__/merge_trains.cpython-314.pyc: rewriting with normalized contents /builddir/build/BUILD/python-gitlab-4.10.0-build/BUILDROOT/usr/lib/python3.14/site-packages/gitlab/v4/objects/__pycache__/milestones.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/python-gitlab-4.10.0-build/BUILDROOT/usr/lib/python3.14/site-packages/gitlab/v4/objects/__pycache__/namespaces.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/python-gitlab-4.10.0-build/BUILDROOT/usr/lib/python3.14/site-packages/gitlab/v4/objects/__pycache__/merge_requests.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/python-gitlab-4.10.0-build/BUILDROOT/usr/lib/python3.14/site-packages/gitlab/v4/objects/__pycache__/notification_settings.cpython-314.pyc: rewriting with normalized contents /builddir/build/BUILD/python-gitlab-4.10.0-build/BUILDROOT/usr/lib/python3.14/site-packages/gitlab/v4/objects/__pycache__/package_protection_rules.cpython-314.pyc: rewriting with normalized contents /builddir/build/BUILD/python-gitlab-4.10.0-build/BUILDROOT/usr/lib/python3.14/site-packages/gitlab/v4/objects/__pycache__/notes.cpython-314.pyc: rewriting with normalized contents /builddir/build/BUILD/python-gitlab-4.10.0-build/BUILDROOT/usr/lib/python3.14/site-packages/gitlab/v4/objects/__pycache__/pages.cpython-314.pyc: rewriting with normalized contents /builddir/build/BUILD/python-gitlab-4.10.0-build/BUILDROOT/usr/lib/python3.14/site-packages/gitlab/v4/objects/__pycache__/personal_access_tokens.cpython-314.pyc: rewriting with normalized contents /builddir/build/BUILD/python-gitlab-4.10.0-build/BUILDROOT/usr/lib/python3.14/site-packages/gitlab/v4/objects/__pycache__/packages.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/python-gitlab-4.10.0-build/BUILDROOT/usr/lib/python3.14/site-packages/gitlab/v4/objects/__pycache__/project_access_tokens.cpython-314.pyc: rewriting with normalized contents /builddir/build/BUILD/python-gitlab-4.10.0-build/BUILDROOT/usr/lib/python3.14/site-packages/gitlab/v4/objects/__pycache__/pipelines.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/python-gitlab-4.10.0-build/BUILDROOT/usr/lib/python3.14/site-packages/gitlab/v4/objects/__pycache__/push_rules.cpython-314.pyc: rewriting with normalized contents /builddir/build/BUILD/python-gitlab-4.10.0-build/BUILDROOT/usr/lib/python3.14/site-packages/gitlab/v4/objects/__pycache__/registry_protection_rules.cpython-314.pyc: rewriting with normalized contents /builddir/build/BUILD/python-gitlab-4.10.0-build/BUILDROOT/usr/lib/python3.14/site-packages/gitlab/v4/objects/__pycache__/releases.cpython-314.pyc: rewriting with normalized contents /builddir/build/BUILD/python-gitlab-4.10.0-build/BUILDROOT/usr/lib/python3.14/site-packages/gitlab/v4/objects/__pycache__/repositories.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/python-gitlab-4.10.0-build/BUILDROOT/usr/lib/python3.14/site-packages/gitlab/v4/objects/__pycache__/resource_groups.cpython-314.pyc: rewriting with normalized contents /builddir/build/BUILD/python-gitlab-4.10.0-build/BUILDROOT/usr/lib/python3.14/site-packages/gitlab/v4/objects/__pycache__/reviewers.cpython-314.pyc: rewriting with normalized contents /builddir/build/BUILD/python-gitlab-4.10.0-build/BUILDROOT/usr/lib/python3.14/site-packages/gitlab/v4/objects/__pycache__/runners.cpython-314.pyc: rewriting with normalized contents /builddir/build/BUILD/python-gitlab-4.10.0-build/BUILDROOT/usr/lib/python3.14/site-packages/gitlab/v4/objects/__pycache__/projects.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/python-gitlab-4.10.0-build/BUILDROOT/usr/lib/python3.14/site-packages/gitlab/v4/objects/__pycache__/service_accounts.cpython-314.pyc: rewriting with normalized contents /builddir/build/BUILD/python-gitlab-4.10.0-build/BUILDROOT/usr/lib/python3.14/site-packages/gitlab/v4/objects/__pycache__/secure_files.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/python-gitlab-4.10.0-build/BUILDROOT/usr/lib/python3.14/site-packages/gitlab/v4/objects/__pycache__/settings.cpython-314.pyc: rewriting with normalized contents /builddir/build/BUILD/python-gitlab-4.10.0-build/BUILDROOT/usr/lib/python3.14/site-packages/gitlab/v4/objects/__pycache__/sidekiq.cpython-314.pyc: rewriting with normalized contents /builddir/build/BUILD/python-gitlab-4.10.0-build/BUILDROOT/usr/lib/python3.14/site-packages/gitlab/v4/objects/__pycache__/statistics.cpython-314.pyc: rewriting with normalized contents /builddir/build/BUILD/python-gitlab-4.10.0-build/BUILDROOT/usr/lib/python3.14/site-packages/gitlab/v4/objects/__pycache__/tags.cpython-314.pyc: rewriting with normalized contents /builddir/build/BUILD/python-gitlab-4.10.0-build/BUILDROOT/usr/lib/python3.14/site-packages/gitlab/v4/objects/__pycache__/snippets.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/python-gitlab-4.10.0-build/BUILDROOT/usr/lib/python3.14/site-packages/gitlab/v4/objects/__pycache__/todos.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/python-gitlab-4.10.0-build/BUILDROOT/usr/lib/python3.14/site-packages/gitlab/v4/objects/__pycache__/templates.cpython-314.pyc: rewriting with normalized contents /builddir/build/BUILD/python-gitlab-4.10.0-build/BUILDROOT/usr/lib/python3.14/site-packages/gitlab/v4/objects/__pycache__/topics.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/python-gitlab-4.10.0-build/BUILDROOT/usr/lib/python3.14/site-packages/gitlab/v4/objects/__pycache__/triggers.cpython-314.pyc: rewriting with normalized contents /builddir/build/BUILD/python-gitlab-4.10.0-build/BUILDROOT/usr/lib/python3.14/site-packages/gitlab/v4/objects/__pycache__/variables.cpython-314.pyc: rewriting with normalized contents /builddir/build/BUILD/python-gitlab-4.10.0-build/BUILDROOT/usr/lib/python3.14/site-packages/gitlab/v4/objects/__pycache__/wikis.cpython-314.pyc: rewriting with normalized contents /builddir/build/BUILD/python-gitlab-4.10.0-build/BUILDROOT/usr/lib/python3.14/site-packages/gitlab/v4/objects/__pycache__/artifacts.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/python-gitlab-4.10.0-build/BUILDROOT/usr/lib/python3.14/site-packages/gitlab/v4/objects/__pycache__/deployments.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/python-gitlab-4.10.0-build/BUILDROOT/usr/lib/python3.14/site-packages/gitlab/v4/objects/__pycache__/commits.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/python-gitlab-4.10.0-build/BUILDROOT/usr/lib/python3.14/site-packages/gitlab/v4/objects/__pycache__/container_registry.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/python-gitlab-4.10.0-build/BUILDROOT/usr/lib/python3.14/site-packages/gitlab/v4/objects/__pycache__/users.cpython-314.pyc: rewriting with normalized contents /builddir/build/BUILD/python-gitlab-4.10.0-build/BUILDROOT/usr/lib/python3.14/site-packages/gitlab/v4/objects/__pycache__/features.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/python-gitlab-4.10.0-build/BUILDROOT/usr/lib/python3.14/site-packages/gitlab/v4/objects/__pycache__/epics.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/python-gitlab-4.10.0-build/BUILDROOT/usr/lib/python3.14/site-packages/gitlab/v4/objects/__pycache__/files.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/python-gitlab-4.10.0-build/BUILDROOT/usr/lib/python3.14/site-packages/gitlab/v4/objects/__pycache__/geo_nodes.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/python-gitlab-4.10.0-build/BUILDROOT/usr/lib/python3.14/site-packages/gitlab/v4/objects/__pycache__/issues.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/python-gitlab-4.10.0-build/BUILDROOT/usr/lib/python3.14/site-packages/gitlab/v4/objects/__pycache__/groups.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/python-gitlab-4.10.0-build/BUILDROOT/usr/lib/python3.14/site-packages/gitlab/v4/objects/__pycache__/keys.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/python-gitlab-4.10.0-build/BUILDROOT/usr/lib/python3.14/site-packages/gitlab/v4/objects/__pycache__/jobs.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/python-gitlab-4.10.0-build/BUILDROOT/usr/lib/python3.14/site-packages/gitlab/v4/objects/__pycache__/merge_request_approvals.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/python-gitlab-4.10.0-build/BUILDROOT/usr/lib/python3.14/site-packages/gitlab/v4/objects/__pycache__/milestones.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/python-gitlab-4.10.0-build/BUILDROOT/usr/lib/python3.14/site-packages/gitlab/v4/objects/__pycache__/namespaces.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/python-gitlab-4.10.0-build/BUILDROOT/usr/lib/python3.14/site-packages/gitlab/v4/objects/__pycache__/packages.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/python-gitlab-4.10.0-build/BUILDROOT/usr/lib/python3.14/site-packages/gitlab/v4/objects/__pycache__/merge_requests.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/python-gitlab-4.10.0-build/BUILDROOT/usr/lib/python3.14/site-packages/gitlab/v4/objects/__pycache__/pipelines.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/python-gitlab-4.10.0-build/BUILDROOT/usr/lib/python3.14/site-packages/gitlab/v4/objects/__pycache__/secure_files.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/python-gitlab-4.10.0-build/BUILDROOT/usr/lib/python3.14/site-packages/gitlab/v4/objects/__pycache__/repositories.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/python-gitlab-4.10.0-build/BUILDROOT/usr/lib/python3.14/site-packages/gitlab/v4/objects/__pycache__/snippets.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/python-gitlab-4.10.0-build/BUILDROOT/usr/lib/python3.14/site-packages/gitlab/v4/objects/__pycache__/todos.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/python-gitlab-4.10.0-build/BUILDROOT/usr/lib/python3.14/site-packages/gitlab/v4/objects/__pycache__/topics.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/python-gitlab-4.10.0-build/BUILDROOT/usr/lib/python3.14/site-packages/gitlab/v4/__pycache__/__init__.cpython-314.pyc: rewriting with normalized contents /builddir/build/BUILD/python-gitlab-4.10.0-build/BUILDROOT/usr/lib/python3.14/site-packages/gitlab/v4/objects/__pycache__/projects.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/python-gitlab-4.10.0-build/BUILDROOT/usr/lib/python3.14/site-packages/gitlab/v4/__pycache__/cli.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/python-gitlab-4.10.0-build/BUILDROOT/usr/lib/python3.14/site-packages/gitlab/__pycache__/__init__.cpython-314.pyc: rewriting with normalized contents /builddir/build/BUILD/python-gitlab-4.10.0-build/BUILDROOT/usr/lib/python3.14/site-packages/gitlab/__pycache__/__main__.cpython-314.pyc: rewriting with normalized contents /builddir/build/BUILD/python-gitlab-4.10.0-build/BUILDROOT/usr/lib/python3.14/site-packages/gitlab/__pycache__/_version.cpython-314.pyc: rewriting with normalized contents /builddir/build/BUILD/python-gitlab-4.10.0-build/BUILDROOT/usr/lib/python3.14/site-packages/gitlab/v4/__pycache__/cli.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/python-gitlab-4.10.0-build/BUILDROOT/usr/lib/python3.14/site-packages/gitlab/__pycache__/cli.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/python-gitlab-4.10.0-build/BUILDROOT/usr/lib/python3.14/site-packages/gitlab/__pycache__/base.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/python-gitlab-4.10.0-build/BUILDROOT/usr/lib/python3.14/site-packages/gitlab/__pycache__/config.cpython-314.pyc: rewriting with normalized contents /builddir/build/BUILD/python-gitlab-4.10.0-build/BUILDROOT/usr/lib/python3.14/site-packages/gitlab/__pycache__/const.cpython-314.pyc: rewriting with normalized contents /builddir/build/BUILD/python-gitlab-4.10.0-build/BUILDROOT/usr/lib/python3.14/site-packages/gitlab/__pycache__/exceptions.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/python-gitlab-4.10.0-build/BUILDROOT/usr/lib/python3.14/site-packages/gitlab/__pycache__/client.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/python-gitlab-4.10.0-build/BUILDROOT/usr/lib/python3.14/site-packages/gitlab/__pycache__/types.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/python-gitlab-4.10.0-build/BUILDROOT/usr/lib/python3.14/site-packages/gitlab/__pycache__/utils.cpython-314.pyc: rewriting with normalized contents /builddir/build/BUILD/python-gitlab-4.10.0-build/BUILDROOT/usr/lib/python3.14/site-packages/gitlab/__pycache__/mixins.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/python-gitlab-4.10.0-build/BUILDROOT/usr/lib/python3.14/site-packages/gitlab/__pycache__/base.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/python-gitlab-4.10.0-build/BUILDROOT/usr/lib/python3.14/site-packages/gitlab/__pycache__/cli.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/python-gitlab-4.10.0-build/BUILDROOT/usr/lib/python3.14/site-packages/gitlab/__pycache__/exceptions.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/python-gitlab-4.10.0-build/BUILDROOT/usr/lib/python3.14/site-packages/gitlab/__pycache__/client.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/python-gitlab-4.10.0-build/BUILDROOT/usr/lib/python3.14/site-packages/gitlab/__pycache__/types.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/python-gitlab-4.10.0-build/BUILDROOT/usr/lib/python3.14/site-packages/gitlab/__pycache__/mixins.cpython-314.opt-1.pyc: replacing with normalized version Scanned 15 directories and 294 files, processed 127 inodes, 127 modified (64 replaced + 63 rewritten), 0 unsupported format, 0 errors Executing(%check): /bin/sh -e /var/tmp/rpm-tmp.xFwrE8 + umask 022 + cd /builddir/build/BUILD/python-gitlab-4.10.0-build + CFLAGS='-O2 -flto=auto -ffat-lto-objects -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=3 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -march=x86-64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -mtls-dialect=gnu2 -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 -m64 -march=x86-64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -mtls-dialect=gnu2 -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 -m64 -march=x86-64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -mtls-dialect=gnu2 -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer -I/usr/lib64/gfortran/modules ' + export FFLAGS + FCFLAGS='-O2 -flto=auto -ffat-lto-objects -fexceptions -g -grecord-gcc-switches -pipe -Wall -Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=3 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -march=x86-64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -mtls-dialect=gnu2 -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer -I/usr/lib64/gfortran/modules ' + export FCFLAGS + VALAFLAGS=-g + export VALAFLAGS + RUSTFLAGS='-Copt-level=3 -Cdebuginfo=2 -Ccodegen-units=1 -Cstrip=none -Cforce-frame-pointers=yes -Clink-arg=-specs=/usr/lib/rpm/redhat/redhat-package-notes --cap-lints=warn' + export RUSTFLAGS + LDFLAGS='-Wl,-z,relro -Wl,--as-needed -Wl,-z,pack-relative-relocs -Wl,-z,now -specs=/usr/lib/rpm/redhat/redhat-hardened-ld -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -Wl,--build-id=sha1 -specs=/usr/lib/rpm/redhat/redhat-package-notes ' + export LDFLAGS + LT_SYS_LIBRARY_PATH=/usr/lib64: + export LT_SYS_LIBRARY_PATH + CC=gcc + export CC + CXX=g++ + export CXX + cd python_gitlab-4.10.0 + TOX_TESTENV_PASSENV='*' + CFLAGS='-O2 -flto=auto -ffat-lto-objects -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=3 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -march=x86-64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -mtls-dialect=gnu2 -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer ' + LDFLAGS='-Wl,-z,relro -Wl,--as-needed -Wl,-z,pack-relative-relocs -Wl,-z,now -specs=/usr/lib/rpm/redhat/redhat-hardened-ld -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -Wl,--build-id=sha1 -specs=/usr/lib/rpm/redhat/redhat-package-notes ' + PATH=/builddir/build/BUILD/python-gitlab-4.10.0-build/BUILDROOT/usr/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/sbin + PYTHONPATH=/builddir/build/BUILD/python-gitlab-4.10.0-build/BUILDROOT/usr/lib64/python3.14/site-packages:/builddir/build/BUILD/python-gitlab-4.10.0-build/BUILDROOT/usr/lib/python3.14/site-packages + PYTHONDONTWRITEBYTECODE=1 + PYTEST_ADDOPTS=' --ignore=/builddir/build/BUILD/python-gitlab-4.10.0-build/python_gitlab-4.10.0/.pyproject-builddir' + PYTEST_XDIST_AUTO_NUM_WORKERS=2 + HOSTNAME=rpmbuild + /usr/bin/python3 -m tox --current-env -q --recreate -e py314 ============================= test session starts ============================== platform linux -- Python 3.14.0a4, pytest-8.3.4, pluggy-1.5.0 cachedir: .tox/py314/.pytest_cache rootdir: /builddir/build/BUILD/python-gitlab-4.10.0-build/python_gitlab-4.10.0 configfile: pyproject.toml plugins: cov-5.0.0 collected 1072 items tests/unit/_backends/test_requests_backend.py ......... [ 0%] tests/unit/base/test_rest_manager.py .F. [ 1%] tests/unit/base/test_rest_object.py F.FFFFFFFFFFFFFFFFFFFFFFFFFFFFEEEEEE [ 4%] EEE [ 4%] tests/unit/meta/test_ensure_type_hints.py .............................. [ 7%] ........................................................................ [ 14%] ........................................................................ [ 20%] ........................................................................ [ 27%] ........................................................................ [ 34%] ........................................................................ [ 41%] .......................................................... [ 46%] tests/unit/meta/test_imports.py .. [ 46%] tests/unit/meta/test_mro.py .. [ 46%] tests/unit/mixins/test_meta_mixins.py ... [ 47%] tests/unit/mixins/test_mixin_methods.py FFF.FFF.F.FFF.....FFFFFFF [ 49%] tests/unit/mixins/test_object_mixins_attributes.py ...... [ 50%] tests/unit/objects/test_appearance.py F. [ 50%] tests/unit/objects/test_applications.py F [ 50%] tests/unit/objects/test_audit_events.py FFEEEE [ 50%] tests/unit/objects/test_badges.py EEEEEEEEEEEE [ 52%] tests/unit/objects/test_bridges.py E [ 52%] tests/unit/objects/test_bulk_imports.py FFFFEE [ 52%] tests/unit/objects/test_ci_lint.py FFFEE [ 53%] tests/unit/objects/test_cluster_agents.py EEEE [ 53%] tests/unit/objects/test_commits.py EEEEE [ 54%] tests/unit/objects/test_deploy_tokens.py FE [ 54%] tests/unit/objects/test_deployments.py EEE [ 54%] tests/unit/objects/test_draft_notes.py EEEEEEE [ 55%] tests/unit/objects/test_environments.py EE [ 55%] tests/unit/objects/test_group_access_tokens.py FEFFE [ 55%] tests/unit/objects/test_groups.py FFEEEEEEsE.sFEEEEEEEEEEE [ 57%] tests/unit/objects/test_hooks.py FFFFEEEEEEEEEEEEE [ 59%] tests/unit/objects/test_invitations.py EEEEEEEEEE [ 60%] tests/unit/objects/test_issues.py FFEFEE [ 60%] tests/unit/objects/test_iterations.py EE [ 61%] tests/unit/objects/test_job_artifacts.py FEFE [ 61%] tests/unit/objects/test_job_token_scope.py EEEEEEEE [ 61%] tests/unit/objects/test_jobs.py EEEE [ 62%] tests/unit/objects/test_keys.py FF. [ 62%] tests/unit/objects/test_members.py EEE [ 62%] tests/unit/objects/test_merge_request_pipelines.py EE [ 63%] tests/unit/objects/test_merge_requests.py EEE [ 63%] tests/unit/objects/test_merge_trains.py E [ 63%] tests/unit/objects/test_package_protection_rules.py EEEE [ 63%] tests/unit/objects/test_packages.py EEEEEEEEEEEEEEE [ 65%] tests/unit/objects/test_personal_access_tokens.py FEFFFFFE.FE [ 65%] tests/unit/objects/test_pipeline_schedules.py EEE [ 66%] tests/unit/objects/test_pipelines.py EEEEEEE [ 66%] tests/unit/objects/test_project_access_tokens.py FEFFE [ 67%] tests/unit/objects/test_project_import_export.py ....E..EEE [ 68%] tests/unit/objects/test_project_merge_request_approvals.py EEEEEEEEE [ 69%] tests/unit/objects/test_project_statistics.py E [ 69%] tests/unit/objects/test_projects.py FFEEEFEEEEEEsEEEEEEEEEEEEEEEEEEEEEEE [ 72%] EE [ 72%] tests/unit/objects/test_registry_protection_rules.py EEE [ 73%] tests/unit/objects/test_registry_repositories.py EEEF [ 73%] tests/unit/objects/test_releases.py EEEEEE [ 73%] tests/unit/objects/test_remote_mirrors.py EEEE [ 74%] tests/unit/objects/test_repositories.py E [ 74%] tests/unit/objects/test_resource_groups.py EEE [ 74%] tests/unit/objects/test_resource_iteration_events.py EE [ 74%] tests/unit/objects/test_resource_label_events.py EEE [ 75%] tests/unit/objects/test_resource_milestone_events.py EE [ 75%] tests/unit/objects/test_resource_state_events.py EEEE [ 75%] tests/unit/objects/test_runners.py FFEFEFFFFEFE.FEFE.FE [ 76%] tests/unit/objects/test_secure_files.py EEEE [ 77%] tests/unit/objects/test_services.py EEEEE [ 77%] tests/unit/objects/test_snippets.py EEE [ 78%] tests/unit/objects/test_statistics.py F [ 78%] tests/unit/objects/test_submodules.py E [ 78%] tests/unit/objects/test_todos.py F. [ 78%] tests/unit/objects/test_topics.py FFFFEFE. [ 79%] tests/unit/objects/test_users.py FEEEEEEEEEEEE [ 80%] tests/unit/objects/test_variables.py FFFFEFEEEEEEEEEEE [ 81%] tests/unit/test_cli.py .....................EE [ 83%] tests/unit/test_config.py .................. [ 85%] tests/unit/test_exceptions.py ... [ 85%] tests/unit/test_gitlab.py .................FF........................ [ 89%] tests/unit/test_gitlab_auth.py ............. [ 90%] tests/unit/test_gitlab_http_methods.py ................................. [ 94%] ........................ [ 96%] tests/unit/test_types.py ................ [ 97%] tests/unit/test_utils.py ........................ [100%] ==================================== ERRORS ==================================== ____________________ ERROR at setup of test_attributes_get _____________________ fake_manager = @pytest.fixture def fake_object(fake_manager): > return helpers.FakeObject(fake_manager, {"attr1": "foo", "alist": [1, 2, 3]}) tests/unit/conftest.py:22: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'FakeObject' object has no attribute '__annotations__'. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError _______________ ERROR at setup of test_attributes_shows_updates ________________ fake_manager = @pytest.fixture def fake_object(fake_manager): > return helpers.FakeObject(fake_manager, {"attr1": "foo", "alist": [1, 2, 3]}) tests/unit/conftest.py:22: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'FakeObject' object has no attribute '__annotations__'. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError __________________ ERROR at setup of test_attributes_is_copy ___________________ fake_manager = @pytest.fixture def fake_object(fake_manager): > return helpers.FakeObject(fake_manager, {"attr1": "foo", "alist": [1, 2, 3]}) tests/unit/conftest.py:22: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'FakeObject' object has no attribute '__annotations__'. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError ______________ ERROR at setup of test_attributes_has_parent_attrs ______________ gl = fake_manager = @pytest.fixture def fake_manager_with_parent(gl, fake_manager): return helpers.FakeManagerWithParent( > gl, parent=helpers.FakeParent(manager=fake_manager, attrs={}) ) tests/unit/conftest.py:16: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'FakeParent' object has no attribute '__annotations__'. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError ________________________ ERROR at setup of test_asdict _________________________ fake_manager = @pytest.fixture def fake_object(fake_manager): > return helpers.FakeObject(fake_manager, {"attr1": "foo", "alist": [1, 2, 3]}) tests/unit/conftest.py:22: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'FakeObject' object has no attribute '__annotations__'. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError ________________ ERROR at setup of test_asdict_no_parent_attrs _________________ gl = fake_manager = @pytest.fixture def fake_manager_with_parent(gl, fake_manager): return helpers.FakeManagerWithParent( > gl, parent=helpers.FakeParent(manager=fake_manager, attrs={}) ) tests/unit/conftest.py:16: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'FakeParent' object has no attribute '__annotations__'. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError _______ ERROR at setup of test_asdict_modify_dict_does_not_change_object _______ fake_manager = @pytest.fixture def fake_object(fake_manager): > return helpers.FakeObject(fake_manager, {"attr1": "foo", "alist": [1, 2, 3]}) tests/unit/conftest.py:22: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'FakeObject' object has no attribute '__annotations__'. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError ______ ERROR at setup of test_asdict_modify_dict_does_not_change_object2 _______ fake_manager = @pytest.fixture def fake_object(fake_manager): > return helpers.FakeObject(fake_manager, {"attr1": "foo", "alist": [1, 2, 3]}) tests/unit/conftest.py:22: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'FakeObject' object has no attribute '__annotations__'. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError _________________ ERROR at setup of test_asdict_modify_object __________________ fake_manager = @pytest.fixture def fake_object(fake_manager): > return helpers.FakeObject(fake_manager, {"attr1": "foo", "alist": [1, 2, 3]}) tests/unit/conftest.py:22: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'FakeObject' object has no attribute '__annotations__'. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError ________________ ERROR at setup of test_list_group_audit_events ________________ gl = @pytest.fixture def group(gl): > return gl.groups.get(1, lazy=True) tests/unit/conftest.py:112: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/v4/objects/groups.py:321: in get return cast(Group, super().get(id=id, lazy=lazy, **kwargs)) gitlab/exceptions.py:344: in wrapped_f return f(*args, **kwargs) gitlab/mixins.py:122: in get return self._obj_cls(self, {self._obj_cls._id_attr: id}, lazy=lazy) gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'Group' object has no attribute '__annotations__' E E If you tried to access object attributes returned from the server, E note that was created as a E `lazy` object and was not initialized with any data.. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError ________________ ERROR at setup of test_get_group_audit_events _________________ gl = @pytest.fixture def group(gl): > return gl.groups.get(1, lazy=True) tests/unit/conftest.py:112: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/v4/objects/groups.py:321: in get return cast(Group, super().get(id=id, lazy=lazy, **kwargs)) gitlab/exceptions.py:344: in wrapped_f return f(*args, **kwargs) gitlab/mixins.py:122: in get return self._obj_cls(self, {self._obj_cls._id_attr: id}, lazy=lazy) gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'Group' object has no attribute '__annotations__' E E If you tried to access object attributes returned from the server, E note that was created as a E `lazy` object and was not initialized with any data.. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError _______________ ERROR at setup of test_list_project_audit_events _______________ gl = @pytest.fixture def project(gl): > return gl.projects.get(1, lazy=True) tests/unit/conftest.py:117: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/v4/objects/projects.py:795: in get return cast(Project, super().get(id=id, lazy=lazy, **kwargs)) gitlab/exceptions.py:344: in wrapped_f return f(*args, **kwargs) gitlab/mixins.py:122: in get return self._obj_cls(self, {self._obj_cls._id_attr: id}, lazy=lazy) gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'Project' object has no attribute '__annotations__' E E If you tried to access object attributes returned from the server, E note that was created as E a `lazy` object and was not initialized with any data.. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError _______________ ERROR at setup of test_get_project_audit_events ________________ gl = @pytest.fixture def project(gl): > return gl.projects.get(1, lazy=True) tests/unit/conftest.py:117: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/v4/objects/projects.py:795: in get return cast(Project, super().get(id=id, lazy=lazy, **kwargs)) gitlab/exceptions.py:344: in wrapped_f return f(*args, **kwargs) gitlab/mixins.py:122: in get return self._obj_cls(self, {self._obj_cls._id_attr: id}, lazy=lazy) gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'Project' object has no attribute '__annotations__' E E If you tried to access object attributes returned from the server, E note that was created as E a `lazy` object and was not initialized with any data.. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError __________________ ERROR at setup of test_list_project_badges __________________ gl = @pytest.fixture def project(gl): > return gl.projects.get(1, lazy=True) tests/unit/conftest.py:117: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/v4/objects/projects.py:795: in get return cast(Project, super().get(id=id, lazy=lazy, **kwargs)) gitlab/exceptions.py:344: in wrapped_f return f(*args, **kwargs) gitlab/mixins.py:122: in get return self._obj_cls(self, {self._obj_cls._id_attr: id}, lazy=lazy) gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'Project' object has no attribute '__annotations__' E E If you tried to access object attributes returned from the server, E note that was created as E a `lazy` object and was not initialized with any data.. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError ___________________ ERROR at setup of test_list_group_badges ___________________ gl = @pytest.fixture def group(gl): > return gl.groups.get(1, lazy=True) tests/unit/conftest.py:112: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/v4/objects/groups.py:321: in get return cast(Group, super().get(id=id, lazy=lazy, **kwargs)) gitlab/exceptions.py:344: in wrapped_f return f(*args, **kwargs) gitlab/mixins.py:122: in get return self._obj_cls(self, {self._obj_cls._id_attr: id}, lazy=lazy) gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'Group' object has no attribute '__annotations__' E E If you tried to access object attributes returned from the server, E note that was created as a E `lazy` object and was not initialized with any data.. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError ___________________ ERROR at setup of test_get_project_badge ___________________ gl = @pytest.fixture def project(gl): > return gl.projects.get(1, lazy=True) tests/unit/conftest.py:117: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/v4/objects/projects.py:795: in get return cast(Project, super().get(id=id, lazy=lazy, **kwargs)) gitlab/exceptions.py:344: in wrapped_f return f(*args, **kwargs) gitlab/mixins.py:122: in get return self._obj_cls(self, {self._obj_cls._id_attr: id}, lazy=lazy) gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'Project' object has no attribute '__annotations__' E E If you tried to access object attributes returned from the server, E note that was created as E a `lazy` object and was not initialized with any data.. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError ____________________ ERROR at setup of test_get_group_badge ____________________ gl = @pytest.fixture def group(gl): > return gl.groups.get(1, lazy=True) tests/unit/conftest.py:112: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/v4/objects/groups.py:321: in get return cast(Group, super().get(id=id, lazy=lazy, **kwargs)) gitlab/exceptions.py:344: in wrapped_f return f(*args, **kwargs) gitlab/mixins.py:122: in get return self._obj_cls(self, {self._obj_cls._id_attr: id}, lazy=lazy) gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'Group' object has no attribute '__annotations__' E E If you tried to access object attributes returned from the server, E note that was created as a E `lazy` object and was not initialized with any data.. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError _________________ ERROR at setup of test_delete_project_badge __________________ gl = @pytest.fixture def project(gl): > return gl.projects.get(1, lazy=True) tests/unit/conftest.py:117: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/v4/objects/projects.py:795: in get return cast(Project, super().get(id=id, lazy=lazy, **kwargs)) gitlab/exceptions.py:344: in wrapped_f return f(*args, **kwargs) gitlab/mixins.py:122: in get return self._obj_cls(self, {self._obj_cls._id_attr: id}, lazy=lazy) gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'Project' object has no attribute '__annotations__' E E If you tried to access object attributes returned from the server, E note that was created as E a `lazy` object and was not initialized with any data.. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError __________________ ERROR at setup of test_delete_group_badge ___________________ gl = @pytest.fixture def group(gl): > return gl.groups.get(1, lazy=True) tests/unit/conftest.py:112: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/v4/objects/groups.py:321: in get return cast(Group, super().get(id=id, lazy=lazy, **kwargs)) gitlab/exceptions.py:344: in wrapped_f return f(*args, **kwargs) gitlab/mixins.py:122: in get return self._obj_cls(self, {self._obj_cls._id_attr: id}, lazy=lazy) gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'Group' object has no attribute '__annotations__' E E If you tried to access object attributes returned from the server, E note that was created as a E `lazy` object and was not initialized with any data.. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError _________________ ERROR at setup of test_create_project_badge __________________ gl = @pytest.fixture def project(gl): > return gl.projects.get(1, lazy=True) tests/unit/conftest.py:117: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/v4/objects/projects.py:795: in get return cast(Project, super().get(id=id, lazy=lazy, **kwargs)) gitlab/exceptions.py:344: in wrapped_f return f(*args, **kwargs) gitlab/mixins.py:122: in get return self._obj_cls(self, {self._obj_cls._id_attr: id}, lazy=lazy) gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'Project' object has no attribute '__annotations__' E E If you tried to access object attributes returned from the server, E note that was created as E a `lazy` object and was not initialized with any data.. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError __________________ ERROR at setup of test_create_group_badge ___________________ gl = @pytest.fixture def group(gl): > return gl.groups.get(1, lazy=True) tests/unit/conftest.py:112: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/v4/objects/groups.py:321: in get return cast(Group, super().get(id=id, lazy=lazy, **kwargs)) gitlab/exceptions.py:344: in wrapped_f return f(*args, **kwargs) gitlab/mixins.py:122: in get return self._obj_cls(self, {self._obj_cls._id_attr: id}, lazy=lazy) gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'Group' object has no attribute '__annotations__' E E If you tried to access object attributes returned from the server, E note that was created as a E `lazy` object and was not initialized with any data.. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError _________________ ERROR at setup of test_preview_project_badge _________________ gl = @pytest.fixture def project(gl): > return gl.projects.get(1, lazy=True) tests/unit/conftest.py:117: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/v4/objects/projects.py:795: in get return cast(Project, super().get(id=id, lazy=lazy, **kwargs)) gitlab/exceptions.py:344: in wrapped_f return f(*args, **kwargs) gitlab/mixins.py:122: in get return self._obj_cls(self, {self._obj_cls._id_attr: id}, lazy=lazy) gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'Project' object has no attribute '__annotations__' E E If you tried to access object attributes returned from the server, E note that was created as E a `lazy` object and was not initialized with any data.. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError __________________ ERROR at setup of test_preview_group_badge __________________ gl = @pytest.fixture def group(gl): > return gl.groups.get(1, lazy=True) tests/unit/conftest.py:112: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/v4/objects/groups.py:321: in get return cast(Group, super().get(id=id, lazy=lazy, **kwargs)) gitlab/exceptions.py:344: in wrapped_f return f(*args, **kwargs) gitlab/mixins.py:122: in get return self._obj_cls(self, {self._obj_cls._id_attr: id}, lazy=lazy) gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'Group' object has no attribute '__annotations__' E E If you tried to access object attributes returned from the server, E note that was created as a E `lazy` object and was not initialized with any data.. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError _________________ ERROR at setup of test_update_project_badge __________________ gl = @pytest.fixture def project(gl): > return gl.projects.get(1, lazy=True) tests/unit/conftest.py:117: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/v4/objects/projects.py:795: in get return cast(Project, super().get(id=id, lazy=lazy, **kwargs)) gitlab/exceptions.py:344: in wrapped_f return f(*args, **kwargs) gitlab/mixins.py:122: in get return self._obj_cls(self, {self._obj_cls._id_attr: id}, lazy=lazy) gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'Project' object has no attribute '__annotations__' E E If you tried to access object attributes returned from the server, E note that was created as E a `lazy` object and was not initialized with any data.. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError __________________ ERROR at setup of test_update_group_badge ___________________ gl = @pytest.fixture def group(gl): > return gl.groups.get(1, lazy=True) tests/unit/conftest.py:112: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/v4/objects/groups.py:321: in get return cast(Group, super().get(id=id, lazy=lazy, **kwargs)) gitlab/exceptions.py:344: in wrapped_f return f(*args, **kwargs) gitlab/mixins.py:122: in get return self._obj_cls(self, {self._obj_cls._id_attr: id}, lazy=lazy) gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'Group' object has no attribute '__annotations__' E E If you tried to access object attributes returned from the server, E note that was created as a E `lazy` object and was not initialized with any data.. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError ____________ ERROR at setup of test_list_projects_pipelines_bridges ____________ gl = @pytest.fixture def project(gl): > return gl.projects.get(1, lazy=True) tests/unit/conftest.py:117: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/v4/objects/projects.py:795: in get return cast(Project, super().get(id=id, lazy=lazy, **kwargs)) gitlab/exceptions.py:344: in wrapped_f return f(*args, **kwargs) gitlab/mixins.py:122: in get return self._obj_cls(self, {self._obj_cls._id_attr: id}, lazy=lazy) gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'Project' object has no attribute '__annotations__' E E If you tried to access object attributes returned from the server, E note that was created as E a `lazy` object and was not initialized with any data.. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError _______________ ERROR at setup of test_list_bulk_import_entities _______________ gl = @pytest.fixture def migration(gl): > return gl.bulk_imports.get(1, lazy=True) tests/unit/conftest.py:158: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/v4/objects/bulk_imports.py:28: in get return cast(BulkImport, super().get(id=id, lazy=lazy, **kwargs)) gitlab/exceptions.py:344: in wrapped_f return f(*args, **kwargs) gitlab/mixins.py:122: in get return self._obj_cls(self, {self._obj_cls._id_attr: id}, lazy=lazy) gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'BulkImport' object has no attribute '__annotations__' E E If you tried to access object attributes returned from the server, E note that was E created as a `lazy` object and was not initialized with any data.. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError ________________ ERROR at setup of test_get_bulk_import_entity _________________ gl = @pytest.fixture def migration(gl): > return gl.bulk_imports.get(1, lazy=True) tests/unit/conftest.py:158: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/v4/objects/bulk_imports.py:28: in get return cast(BulkImport, super().get(id=id, lazy=lazy, **kwargs)) gitlab/exceptions.py:344: in wrapped_f return f(*args, **kwargs) gitlab/mixins.py:122: in get return self._obj_cls(self, {self._obj_cls._id_attr: id}, lazy=lazy) gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'BulkImport' object has no attribute '__annotations__' E E If you tried to access object attributes returned from the server, E note that was E created as a `lazy` object and was not initialized with any data.. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError __________________ ERROR at setup of test_project_ci_lint_get __________________ gl = @pytest.fixture def project(gl): > return gl.projects.get(1, lazy=True) tests/unit/conftest.py:117: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/v4/objects/projects.py:795: in get return cast(Project, super().get(id=id, lazy=lazy, **kwargs)) gitlab/exceptions.py:344: in wrapped_f return f(*args, **kwargs) gitlab/mixins.py:122: in get return self._obj_cls(self, {self._obj_cls._id_attr: id}, lazy=lazy) gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'Project' object has no attribute '__annotations__' E E If you tried to access object attributes returned from the server, E note that was created as E a `lazy` object and was not initialized with any data.. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError ________________ ERROR at setup of test_project_ci_lint_create _________________ gl = @pytest.fixture def project(gl): > return gl.projects.get(1, lazy=True) tests/unit/conftest.py:117: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/v4/objects/projects.py:795: in get return cast(Project, super().get(id=id, lazy=lazy, **kwargs)) gitlab/exceptions.py:344: in wrapped_f return f(*args, **kwargs) gitlab/mixins.py:122: in get return self._obj_cls(self, {self._obj_cls._id_attr: id}, lazy=lazy) gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'Project' object has no attribute '__annotations__' E E If you tried to access object attributes returned from the server, E note that was created as E a `lazy` object and was not initialized with any data.. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError ______________ ERROR at setup of test_list_project_cluster_agents ______________ gl = @pytest.fixture def project(gl): > return gl.projects.get(1, lazy=True) tests/unit/conftest.py:117: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/v4/objects/projects.py:795: in get return cast(Project, super().get(id=id, lazy=lazy, **kwargs)) gitlab/exceptions.py:344: in wrapped_f return f(*args, **kwargs) gitlab/mixins.py:122: in get return self._obj_cls(self, {self._obj_cls._id_attr: id}, lazy=lazy) gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'Project' object has no attribute '__annotations__' E E If you tried to access object attributes returned from the server, E note that was created as E a `lazy` object and was not initialized with any data.. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError _______________ ERROR at setup of test_get_project_cluster_agent _______________ gl = @pytest.fixture def project(gl): > return gl.projects.get(1, lazy=True) tests/unit/conftest.py:117: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/v4/objects/projects.py:795: in get return cast(Project, super().get(id=id, lazy=lazy, **kwargs)) gitlab/exceptions.py:344: in wrapped_f return f(*args, **kwargs) gitlab/mixins.py:122: in get return self._obj_cls(self, {self._obj_cls._id_attr: id}, lazy=lazy) gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'Project' object has no attribute '__annotations__' E E If you tried to access object attributes returned from the server, E note that was created as E a `lazy` object and was not initialized with any data.. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError _____________ ERROR at setup of test_create_project_cluster_agent ______________ gl = @pytest.fixture def project(gl): > return gl.projects.get(1, lazy=True) tests/unit/conftest.py:117: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/v4/objects/projects.py:795: in get return cast(Project, super().get(id=id, lazy=lazy, **kwargs)) gitlab/exceptions.py:344: in wrapped_f return f(*args, **kwargs) gitlab/mixins.py:122: in get return self._obj_cls(self, {self._obj_cls._id_attr: id}, lazy=lazy) gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'Project' object has no attribute '__annotations__' E E If you tried to access object attributes returned from the server, E note that was created as E a `lazy` object and was not initialized with any data.. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError _____________ ERROR at setup of test_delete_project_cluster_agent ______________ gl = @pytest.fixture def project(gl): > return gl.projects.get(1, lazy=True) tests/unit/conftest.py:117: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/v4/objects/projects.py:795: in get return cast(Project, super().get(id=id, lazy=lazy, **kwargs)) gitlab/exceptions.py:344: in wrapped_f return f(*args, **kwargs) gitlab/mixins.py:122: in get return self._obj_cls(self, {self._obj_cls._id_attr: id}, lazy=lazy) gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'Project' object has no attribute '__annotations__' E E If you tried to access object attributes returned from the server, E note that was created as E a `lazy` object and was not initialized with any data.. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError ______________________ ERROR at setup of test_get_commit _______________________ gl = @pytest.fixture def project(gl): > return gl.projects.get(1, lazy=True) tests/unit/conftest.py:117: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/v4/objects/projects.py:795: in get return cast(Project, super().get(id=id, lazy=lazy, **kwargs)) gitlab/exceptions.py:344: in wrapped_f return f(*args, **kwargs) gitlab/mixins.py:122: in get return self._obj_cls(self, {self._obj_cls._id_attr: id}, lazy=lazy) gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'Project' object has no attribute '__annotations__' E E If you tried to access object attributes returned from the server, E note that was created as E a `lazy` object and was not initialized with any data.. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError _____________________ ERROR at setup of test_create_commit _____________________ gl = @pytest.fixture def project(gl): > return gl.projects.get(1, lazy=True) tests/unit/conftest.py:117: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/v4/objects/projects.py:795: in get return cast(Project, super().get(id=id, lazy=lazy, **kwargs)) gitlab/exceptions.py:344: in wrapped_f return f(*args, **kwargs) gitlab/mixins.py:122: in get return self._obj_cls(self, {self._obj_cls._id_attr: id}, lazy=lazy) gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'Project' object has no attribute '__annotations__' E E If you tried to access object attributes returned from the server, E note that was created as E a `lazy` object and was not initialized with any data.. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError _____________________ ERROR at setup of test_revert_commit _____________________ gl = @pytest.fixture def project(gl): > return gl.projects.get(1, lazy=True) tests/unit/conftest.py:117: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/v4/objects/projects.py:795: in get return cast(Project, super().get(id=id, lazy=lazy, **kwargs)) gitlab/exceptions.py:344: in wrapped_f return f(*args, **kwargs) gitlab/mixins.py:122: in get return self._obj_cls(self, {self._obj_cls._id_attr: id}, lazy=lazy) gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'Project' object has no attribute '__annotations__' E E If you tried to access object attributes returned from the server, E note that was created as E a `lazy` object and was not initialized with any data.. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError _______________ ERROR at setup of test_get_commit_gpg_signature ________________ gl = @pytest.fixture def project(gl): > return gl.projects.get(1, lazy=True) tests/unit/conftest.py:117: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/v4/objects/projects.py:795: in get return cast(Project, super().get(id=id, lazy=lazy, **kwargs)) gitlab/exceptions.py:344: in wrapped_f return f(*args, **kwargs) gitlab/mixins.py:122: in get return self._obj_cls(self, {self._obj_cls._id_attr: id}, lazy=lazy) gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'Project' object has no attribute '__annotations__' E E If you tried to access object attributes returned from the server, E note that was created as E a `lazy` object and was not initialized with any data.. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError __________________ ERROR at setup of test_get_commit_sequence __________________ gl = @pytest.fixture def project(gl): > return gl.projects.get(1, lazy=True) tests/unit/conftest.py:117: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/v4/objects/projects.py:795: in get return cast(Project, super().get(id=id, lazy=lazy, **kwargs)) gitlab/exceptions.py:344: in wrapped_f return f(*args, **kwargs) gitlab/mixins.py:122: in get return self._obj_cls(self, {self._obj_cls._id_attr: id}, lazy=lazy) gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'Project' object has no attribute '__annotations__' E E If you tried to access object attributes returned from the server, E note that was created as E a `lazy` object and was not initialized with any data.. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError ___________________ ERROR at teardown of test_deploy_tokens ____________________ @pytest.fixture def resp_deploy_token_create(): > with responses.RequestsMock() as rsps: tests/unit/objects/test_deploy_tokens.py:22: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /usr/lib/python3.14/site-packages/responses/__init__.py:996: in __exit__ self.stop(allow_assert=success) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , allow_assert = True def stop(self, allow_assert: bool = True) -> None: if self._patcher: # prevent stopping unstarted patchers self._patcher.stop() # once patcher is stopped, clean it. This is required to create a new # fresh patcher on self.start() self._patcher = None if not self.assert_all_requests_are_fired: return if not allow_assert: return not_called = [m for m in self.registered() if m.call_count == 0] if not_called: > raise AssertionError( "Not all requests have been executed {!r}".format( [(match.method, match.url) for match in not_called] ) ) E AssertionError: Not all requests have been executed [('POST', 'http://localhost/api/v4/projects/1/deploy_tokens')] /usr/lib/python3.14/site-packages/responses/__init__.py:1233: AssertionError ____________________ ERROR at setup of test_deployment_get _____________________ gl = @pytest.fixture def project(gl): > return gl.projects.get(1, lazy=True) tests/unit/conftest.py:117: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/v4/objects/projects.py:795: in get return cast(Project, super().get(id=id, lazy=lazy, **kwargs)) gitlab/exceptions.py:344: in wrapped_f return f(*args, **kwargs) gitlab/mixins.py:122: in get return self._obj_cls(self, {self._obj_cls._id_attr: id}, lazy=lazy) gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'Project' object has no attribute '__annotations__' E E If you tried to access object attributes returned from the server, E note that was created as E a `lazy` object and was not initialized with any data.. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError ___________________ ERROR at setup of test_deployment_create ___________________ gl = @pytest.fixture def project(gl): > return gl.projects.get(1, lazy=True) tests/unit/conftest.py:117: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/v4/objects/projects.py:795: in get return cast(Project, super().get(id=id, lazy=lazy, **kwargs)) gitlab/exceptions.py:344: in wrapped_f return f(*args, **kwargs) gitlab/mixins.py:122: in get return self._obj_cls(self, {self._obj_cls._id_attr: id}, lazy=lazy) gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'Project' object has no attribute '__annotations__' E E If you tried to access object attributes returned from the server, E note that was created as E a `lazy` object and was not initialized with any data.. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError __________________ ERROR at setup of test_deployment_approval __________________ gl = @pytest.fixture def project(gl): > return gl.projects.get(1, lazy=True) tests/unit/conftest.py:117: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/v4/objects/projects.py:795: in get return cast(Project, super().get(id=id, lazy=lazy, **kwargs)) gitlab/exceptions.py:344: in wrapped_f return f(*args, **kwargs) gitlab/mixins.py:122: in get return self._obj_cls(self, {self._obj_cls._id_attr: id}, lazy=lazy) gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'Project' object has no attribute '__annotations__' E E If you tried to access object attributes returned from the server, E note that was created as E a `lazy` object and was not initialized with any data.. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError ____________ ERROR at setup of test_list_merge_requests_draft_notes ____________ gl = @pytest.fixture def project(gl): > return gl.projects.get(1, lazy=True) tests/unit/conftest.py:117: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/v4/objects/projects.py:795: in get return cast(Project, super().get(id=id, lazy=lazy, **kwargs)) gitlab/exceptions.py:344: in wrapped_f return f(*args, **kwargs) gitlab/mixins.py:122: in get return self._obj_cls(self, {self._obj_cls._id_attr: id}, lazy=lazy) gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'Project' object has no attribute '__annotations__' E E If you tried to access object attributes returned from the server, E note that was created as E a `lazy` object and was not initialized with any data.. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError _____________ ERROR at setup of test_get_merge_requests_draft_note _____________ gl = @pytest.fixture def project(gl): > return gl.projects.get(1, lazy=True) tests/unit/conftest.py:117: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/v4/objects/projects.py:795: in get return cast(Project, super().get(id=id, lazy=lazy, **kwargs)) gitlab/exceptions.py:344: in wrapped_f return f(*args, **kwargs) gitlab/mixins.py:122: in get return self._obj_cls(self, {self._obj_cls._id_attr: id}, lazy=lazy) gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'Project' object has no attribute '__annotations__' E E If you tried to access object attributes returned from the server, E note that was created as E a `lazy` object and was not initialized with any data.. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError ___________ ERROR at setup of test_create_merge_requests_draft_note ____________ gl = @pytest.fixture def project(gl): > return gl.projects.get(1, lazy=True) tests/unit/conftest.py:117: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/v4/objects/projects.py:795: in get return cast(Project, super().get(id=id, lazy=lazy, **kwargs)) gitlab/exceptions.py:344: in wrapped_f return f(*args, **kwargs) gitlab/mixins.py:122: in get return self._obj_cls(self, {self._obj_cls._id_attr: id}, lazy=lazy) gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'Project' object has no attribute '__annotations__' E E If you tried to access object attributes returned from the server, E note that was created as E a `lazy` object and was not initialized with any data.. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError ___________ ERROR at setup of test_update_merge_requests_draft_note ____________ gl = @pytest.fixture def project(gl): > return gl.projects.get(1, lazy=True) tests/unit/conftest.py:117: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/v4/objects/projects.py:795: in get return cast(Project, super().get(id=id, lazy=lazy, **kwargs)) gitlab/exceptions.py:344: in wrapped_f return f(*args, **kwargs) gitlab/mixins.py:122: in get return self._obj_cls(self, {self._obj_cls._id_attr: id}, lazy=lazy) gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'Project' object has no attribute '__annotations__' E E If you tried to access object attributes returned from the server, E note that was created as E a `lazy` object and was not initialized with any data.. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError ___________ ERROR at setup of test_delete_merge_requests_draft_note ____________ gl = @pytest.fixture def project(gl): > return gl.projects.get(1, lazy=True) tests/unit/conftest.py:117: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/v4/objects/projects.py:795: in get return cast(Project, super().get(id=id, lazy=lazy, **kwargs)) gitlab/exceptions.py:344: in wrapped_f return f(*args, **kwargs) gitlab/mixins.py:122: in get return self._obj_cls(self, {self._obj_cls._id_attr: id}, lazy=lazy) gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'Project' object has no attribute '__annotations__' E E If you tried to access object attributes returned from the server, E note that was created as E a `lazy` object and was not initialized with any data.. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError ___________ ERROR at setup of test_publish_merge_requests_draft_note ___________ gl = @pytest.fixture def project(gl): > return gl.projects.get(1, lazy=True) tests/unit/conftest.py:117: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/v4/objects/projects.py:795: in get return cast(Project, super().get(id=id, lazy=lazy, **kwargs)) gitlab/exceptions.py:344: in wrapped_f return f(*args, **kwargs) gitlab/mixins.py:122: in get return self._obj_cls(self, {self._obj_cls._id_attr: id}, lazy=lazy) gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'Project' object has no attribute '__annotations__' E E If you tried to access object attributes returned from the server, E note that was created as E a `lazy` object and was not initialized with any data.. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError ________ ERROR at setup of test_bulk_publish_merge_requests_draft_notes ________ gl = @pytest.fixture def project(gl): > return gl.projects.get(1, lazy=True) tests/unit/conftest.py:117: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/v4/objects/projects.py:795: in get return cast(Project, super().get(id=id, lazy=lazy, **kwargs)) gitlab/exceptions.py:344: in wrapped_f return f(*args, **kwargs) gitlab/mixins.py:122: in get return self._obj_cls(self, {self._obj_cls._id_attr: id}, lazy=lazy) gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'Project' object has no attribute '__annotations__' E E If you tried to access object attributes returned from the server, E note that was created as E a `lazy` object and was not initialized with any data.. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError _________________ ERROR at setup of test_project_environments __________________ gl = @pytest.fixture def project(gl): > return gl.projects.get(1, lazy=True) tests/unit/conftest.py:117: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/v4/objects/projects.py:795: in get return cast(Project, super().get(id=id, lazy=lazy, **kwargs)) gitlab/exceptions.py:344: in wrapped_f return f(*args, **kwargs) gitlab/mixins.py:122: in get return self._obj_cls(self, {self._obj_cls._id_attr: id}, lazy=lazy) gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'Project' object has no attribute '__annotations__' E E If you tried to access object attributes returned from the server, E note that was created as E a `lazy` object and was not initialized with any data.. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError ____________ ERROR at setup of test_project_protected_environments _____________ gl = @pytest.fixture def project(gl): > return gl.projects.get(1, lazy=True) tests/unit/conftest.py:117: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/v4/objects/projects.py:795: in get return cast(Project, super().get(id=id, lazy=lazy, **kwargs)) gitlab/exceptions.py:344: in wrapped_f return f(*args, **kwargs) gitlab/mixins.py:122: in get return self._obj_cls(self, {self._obj_cls._id_attr: id}, lazy=lazy) gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'Project' object has no attribute '__annotations__' E E If you tried to access object attributes returned from the server, E note that was created as E a `lazy` object and was not initialized with any data.. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError ________________ ERROR at setup of test_get_group_access_token _________________ gl = @pytest.fixture def group(gl): > return gl.groups.get(1, lazy=True) tests/unit/conftest.py:112: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/v4/objects/groups.py:321: in get return cast(Group, super().get(id=id, lazy=lazy, **kwargs)) gitlab/exceptions.py:344: in wrapped_f return f(*args, **kwargs) gitlab/mixins.py:122: in get return self._obj_cls(self, {self._obj_cls._id_attr: id}, lazy=lazy) gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'Group' object has no attribute '__annotations__' E E If you tried to access object attributes returned from the server, E note that was created as a E `lazy` object and was not initialized with any data.. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError _______________ ERROR at setup of test_rotate_group_access_token _______________ gl = @pytest.fixture def group(gl): > return gl.groups.get(1, lazy=True) tests/unit/conftest.py:112: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/v4/objects/groups.py:321: in get return cast(Group, super().get(id=id, lazy=lazy, **kwargs)) gitlab/exceptions.py:344: in wrapped_f return f(*args, **kwargs) gitlab/mixins.py:122: in get return self._obj_cls(self, {self._obj_cls._id_attr: id}, lazy=lazy) gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'Group' object has no attribute '__annotations__' E E If you tried to access object attributes returned from the server, E note that was created as a E `lazy` object and was not initialized with any data.. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError __________________ ERROR at setup of test_create_group_export __________________ gl = @pytest.fixture def group(gl): > return gl.groups.get(1, lazy=True) tests/unit/conftest.py:112: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/v4/objects/groups.py:321: in get return cast(Group, super().get(id=id, lazy=lazy, **kwargs)) gitlab/exceptions.py:344: in wrapped_f return f(*args, **kwargs) gitlab/mixins.py:122: in get return self._obj_cls(self, {self._obj_cls._id_attr: id}, lazy=lazy) gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'Group' object has no attribute '__annotations__' E E If you tried to access object attributes returned from the server, E note that was created as a E `lazy` object and was not initialized with any data.. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError __________________ ERROR at setup of test_list_group_projects __________________ gl = @pytest.fixture def group(gl): > return gl.groups.get(1, lazy=True) tests/unit/conftest.py:112: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/v4/objects/groups.py:321: in get return cast(Group, super().get(id=id, lazy=lazy, **kwargs)) gitlab/exceptions.py:344: in wrapped_f return f(*args, **kwargs) gitlab/mixins.py:122: in get return self._obj_cls(self, {self._obj_cls._id_attr: id}, lazy=lazy) gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'Group' object has no attribute '__annotations__' E E If you tried to access object attributes returned from the server, E note that was created as a E `lazy` object and was not initialized with any data.. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError ______________ ERROR at setup of test_list_group_shared_projects _______________ gl = @pytest.fixture def group(gl): > return gl.groups.get(1, lazy=True) tests/unit/conftest.py:112: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/v4/objects/groups.py:321: in get return cast(Group, super().get(id=id, lazy=lazy, **kwargs)) gitlab/exceptions.py:344: in wrapped_f return f(*args, **kwargs) gitlab/mixins.py:122: in get return self._obj_cls(self, {self._obj_cls._id_attr: id}, lazy=lazy) gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'Group' object has no attribute '__annotations__' E E If you tried to access object attributes returned from the server, E note that was created as a E `lazy` object and was not initialized with any data.. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError _________________ ERROR at setup of test_list_group_subgroups __________________ gl = @pytest.fixture def group(gl): > return gl.groups.get(1, lazy=True) tests/unit/conftest.py:112: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/v4/objects/groups.py:321: in get return cast(Group, super().get(id=id, lazy=lazy, **kwargs)) gitlab/exceptions.py:344: in wrapped_f return f(*args, **kwargs) gitlab/mixins.py:122: in get return self._obj_cls(self, {self._obj_cls._id_attr: id}, lazy=lazy) gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'Group' object has no attribute '__annotations__' E E If you tried to access object attributes returned from the server, E note that was created as a E `lazy` object and was not initialized with any data.. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError _____________ ERROR at setup of test_list_group_descendant_groups ______________ gl = @pytest.fixture def group(gl): > return gl.groups.get(1, lazy=True) tests/unit/conftest.py:112: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/v4/objects/groups.py:321: in get return cast(Group, super().get(id=id, lazy=lazy, **kwargs)) gitlab/exceptions.py:344: in wrapped_f return f(*args, **kwargs) gitlab/mixins.py:122: in get return self._obj_cls(self, {self._obj_cls._id_attr: id}, lazy=lazy) gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'Group' object has no attribute '__annotations__' E E If you tried to access object attributes returned from the server, E note that was created as a E `lazy` object and was not initialized with any data.. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError _________________ ERROR at setup of test_list_ldap_group_links _________________ gl = @pytest.fixture def group(gl): > return gl.groups.get(1, lazy=True) tests/unit/conftest.py:112: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/v4/objects/groups.py:321: in get return cast(Group, super().get(id=id, lazy=lazy, **kwargs)) gitlab/exceptions.py:344: in wrapped_f return f(*args, **kwargs) gitlab/mixins.py:122: in get return self._obj_cls(self, {self._obj_cls._id_attr: id}, lazy=lazy) gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'Group' object has no attribute '__annotations__' E E If you tried to access object attributes returned from the server, E note that was created as a E `lazy` object and was not initialized with any data.. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError _________________ ERROR at setup of test_download_group_export _________________ gl = @pytest.fixture def group(gl): > return gl.groups.get(1, lazy=True) tests/unit/conftest.py:112: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/v4/objects/groups.py:321: in get return cast(Group, super().get(id=id, lazy=lazy, **kwargs)) gitlab/exceptions.py:344: in wrapped_f return f(*args, **kwargs) gitlab/mixins.py:122: in get return self._obj_cls(self, {self._obj_cls._id_attr: id}, lazy=lazy) gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'Group' object has no attribute '__annotations__' E E If you tried to access object attributes returned from the server, E note that was created as a E `lazy` object and was not initialized with any data.. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError ___________________ ERROR at teardown of test_transfer_group ___________________ @pytest.fixture def resp_transfer_group(): > with responses.RequestsMock() as rsps: tests/unit/objects/test_groups.py:162: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /usr/lib/python3.14/site-packages/responses/__init__.py:996: in __exit__ self.stop(allow_assert=success) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , allow_assert = True def stop(self, allow_assert: bool = True) -> None: if self._patcher: # prevent stopping unstarted patchers self._patcher.stop() # once patcher is stopped, clean it. This is required to create a new # fresh patcher on self.start() self._patcher = None if not self.assert_all_requests_are_fired: return if not allow_assert: return not_called = [m for m in self.registered() if m.call_count == 0] if not_called: > raise AssertionError( "Not all requests have been executed {!r}".format( [(match.method, match.url) for match in not_called] ) ) E AssertionError: Not all requests have been executed [('POST', 'http://localhost/api/v4/groups/1/transfer')] /usr/lib/python3.14/site-packages/responses/__init__.py:1233: AssertionError _________________ ERROR at setup of test_list_group_push_rules _________________ gl = @pytest.fixture def group(gl): > return gl.groups.get(1, lazy=True) tests/unit/conftest.py:112: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/v4/objects/groups.py:321: in get return cast(Group, super().get(id=id, lazy=lazy, **kwargs)) gitlab/exceptions.py:344: in wrapped_f return f(*args, **kwargs) gitlab/mixins.py:122: in get return self._obj_cls(self, {self._obj_cls._id_attr: id}, lazy=lazy) gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'Group' object has no attribute '__annotations__' E E If you tried to access object attributes returned from the server, E note that was created as a E `lazy` object and was not initialized with any data.. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError ________________ ERROR at setup of test_create_group_push_rule _________________ gl = @pytest.fixture def group(gl): > return gl.groups.get(1, lazy=True) tests/unit/conftest.py:112: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/v4/objects/groups.py:321: in get return cast(Group, super().get(id=id, lazy=lazy, **kwargs)) gitlab/exceptions.py:344: in wrapped_f return f(*args, **kwargs) gitlab/mixins.py:122: in get return self._obj_cls(self, {self._obj_cls._id_attr: id}, lazy=lazy) gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'Group' object has no attribute '__annotations__' E E If you tried to access object attributes returned from the server, E note that was created as a E `lazy` object and was not initialized with any data.. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError ________________ ERROR at setup of test_update_group_push_rule _________________ gl = @pytest.fixture def group(gl): > return gl.groups.get(1, lazy=True) tests/unit/conftest.py:112: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/v4/objects/groups.py:321: in get return cast(Group, super().get(id=id, lazy=lazy, **kwargs)) gitlab/exceptions.py:344: in wrapped_f return f(*args, **kwargs) gitlab/mixins.py:122: in get return self._obj_cls(self, {self._obj_cls._id_attr: id}, lazy=lazy) gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'Group' object has no attribute '__annotations__' E E If you tried to access object attributes returned from the server, E note that was created as a E `lazy` object and was not initialized with any data.. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError ________________ ERROR at setup of test_delete_group_push_rule _________________ gl = @pytest.fixture def group(gl): > return gl.groups.get(1, lazy=True) tests/unit/conftest.py:112: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/v4/objects/groups.py:321: in get return cast(Group, super().get(id=id, lazy=lazy, **kwargs)) gitlab/exceptions.py:344: in wrapped_f return f(*args, **kwargs) gitlab/mixins.py:122: in get return self._obj_cls(self, {self._obj_cls._id_attr: id}, lazy=lazy) gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'Group' object has no attribute '__annotations__' E E If you tried to access object attributes returned from the server, E note that was created as a E `lazy` object and was not initialized with any data.. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError _________________ ERROR at setup of test_list_saml_group_links _________________ gl = @pytest.fixture def group(gl): > return gl.groups.get(1, lazy=True) tests/unit/conftest.py:112: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/v4/objects/groups.py:321: in get return cast(Group, super().get(id=id, lazy=lazy, **kwargs)) gitlab/exceptions.py:344: in wrapped_f return f(*args, **kwargs) gitlab/mixins.py:122: in get return self._obj_cls(self, {self._obj_cls._id_attr: id}, lazy=lazy) gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'Group' object has no attribute '__annotations__' E E If you tried to access object attributes returned from the server, E note that was created as a E `lazy` object and was not initialized with any data.. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError __________________ ERROR at setup of test_get_saml_group_link __________________ gl = @pytest.fixture def group(gl): > return gl.groups.get(1, lazy=True) tests/unit/conftest.py:112: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/v4/objects/groups.py:321: in get return cast(Group, super().get(id=id, lazy=lazy, **kwargs)) gitlab/exceptions.py:344: in wrapped_f return f(*args, **kwargs) gitlab/mixins.py:122: in get return self._obj_cls(self, {self._obj_cls._id_attr: id}, lazy=lazy) gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'Group' object has no attribute '__annotations__' E E If you tried to access object attributes returned from the server, E note that was created as a E `lazy` object and was not initialized with any data.. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError ________________ ERROR at setup of test_create_saml_group_link _________________ gl = @pytest.fixture def group(gl): > return gl.groups.get(1, lazy=True) tests/unit/conftest.py:112: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/v4/objects/groups.py:321: in get return cast(Group, super().get(id=id, lazy=lazy, **kwargs)) gitlab/exceptions.py:344: in wrapped_f return f(*args, **kwargs) gitlab/mixins.py:122: in get return self._obj_cls(self, {self._obj_cls._id_attr: id}, lazy=lazy) gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'Group' object has no attribute '__annotations__' E E If you tried to access object attributes returned from the server, E note that was created as a E `lazy` object and was not initialized with any data.. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError ________________ ERROR at setup of test_delete_saml_group_link _________________ gl = @pytest.fixture def group(gl): > return gl.groups.get(1, lazy=True) tests/unit/conftest.py:112: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/v4/objects/groups.py:321: in get return cast(Group, super().get(id=id, lazy=lazy, **kwargs)) gitlab/exceptions.py:344: in wrapped_f return f(*args, **kwargs) gitlab/mixins.py:122: in get return self._obj_cls(self, {self._obj_cls._id_attr: id}, lazy=lazy) gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'Group' object has no attribute '__annotations__' E E If you tried to access object attributes returned from the server, E note that was created as a E `lazy` object and was not initialized with any data.. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError _____________________ ERROR at setup of test_group_restore _____________________ gl = @pytest.fixture def group(gl): > return gl.groups.get(1, lazy=True) tests/unit/conftest.py:112: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/v4/objects/groups.py:321: in get return cast(Group, super().get(id=id, lazy=lazy, **kwargs)) gitlab/exceptions.py:344: in wrapped_f return f(*args, **kwargs) gitlab/mixins.py:122: in get return self._obj_cls(self, {self._obj_cls._id_attr: id}, lazy=lazy) gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'Group' object has no attribute '__annotations__' E E If you tried to access object attributes returned from the server, E note that was created as a E `lazy` object and was not initialized with any data.. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError _____________ ERROR at setup of test_create_group_service_account ______________ gl = @pytest.fixture def group(gl): > return gl.groups.get(1, lazy=True) tests/unit/conftest.py:112: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/v4/objects/groups.py:321: in get return cast(Group, super().get(id=id, lazy=lazy, **kwargs)) gitlab/exceptions.py:344: in wrapped_f return f(*args, **kwargs) gitlab/mixins.py:122: in get return self._obj_cls(self, {self._obj_cls._id_attr: id}, lazy=lazy) gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'Group' object has no attribute '__annotations__' E E If you tried to access object attributes returned from the server, E note that was created as a E `lazy` object and was not initialized with any data.. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError _________________ ERROR at teardown of test_delete_system_hook _________________ @pytest.fixture def resp_hook_delete(): > with responses.RequestsMock() as rsps: tests/unit/objects/test_hooks.py:147: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /usr/lib/python3.14/site-packages/responses/__init__.py:996: in __exit__ self.stop(allow_assert=success) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , allow_assert = True def stop(self, allow_assert: bool = True) -> None: if self._patcher: # prevent stopping unstarted patchers self._patcher.stop() # once patcher is stopped, clean it. This is required to create a new # fresh patcher on self.start() self._patcher = None if not self.assert_all_requests_are_fired: return if not allow_assert: return not_called = [m for m in self.registered() if m.call_count == 0] if not_called: > raise AssertionError( "Not all requests have been executed {!r}".format( [(match.method, match.url) for match in not_called] ) ) E AssertionError: Not all requests have been executed [('DELETE', re.compile('http://localhost/api/v4/((groups|projects)/1/|)hooks/1'))] /usr/lib/python3.14/site-packages/responses/__init__.py:1233: AssertionError ___________________ ERROR at setup of test_list_group_hooks ____________________ gl = @pytest.fixture def group(gl): > return gl.groups.get(1, lazy=True) tests/unit/conftest.py:112: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/v4/objects/groups.py:321: in get return cast(Group, super().get(id=id, lazy=lazy, **kwargs)) gitlab/exceptions.py:344: in wrapped_f return f(*args, **kwargs) gitlab/mixins.py:122: in get return self._obj_cls(self, {self._obj_cls._id_attr: id}, lazy=lazy) gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'Group' object has no attribute '__annotations__' E E If you tried to access object attributes returned from the server, E note that was created as a E `lazy` object and was not initialized with any data.. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError ____________________ ERROR at setup of test_get_group_hook _____________________ gl = @pytest.fixture def group(gl): > return gl.groups.get(1, lazy=True) tests/unit/conftest.py:112: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/v4/objects/groups.py:321: in get return cast(Group, super().get(id=id, lazy=lazy, **kwargs)) gitlab/exceptions.py:344: in wrapped_f return f(*args, **kwargs) gitlab/mixins.py:122: in get return self._obj_cls(self, {self._obj_cls._id_attr: id}, lazy=lazy) gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'Group' object has no attribute '__annotations__' E E If you tried to access object attributes returned from the server, E note that was created as a E `lazy` object and was not initialized with any data.. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError ___________________ ERROR at setup of test_create_group_hook ___________________ gl = @pytest.fixture def group(gl): > return gl.groups.get(1, lazy=True) tests/unit/conftest.py:112: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/v4/objects/groups.py:321: in get return cast(Group, super().get(id=id, lazy=lazy, **kwargs)) gitlab/exceptions.py:344: in wrapped_f return f(*args, **kwargs) gitlab/mixins.py:122: in get return self._obj_cls(self, {self._obj_cls._id_attr: id}, lazy=lazy) gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'Group' object has no attribute '__annotations__' E E If you tried to access object attributes returned from the server, E note that was created as a E `lazy` object and was not initialized with any data.. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError ___________________ ERROR at setup of test_update_group_hook ___________________ gl = @pytest.fixture def group(gl): > return gl.groups.get(1, lazy=True) tests/unit/conftest.py:112: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/v4/objects/groups.py:321: in get return cast(Group, super().get(id=id, lazy=lazy, **kwargs)) gitlab/exceptions.py:344: in wrapped_f return f(*args, **kwargs) gitlab/mixins.py:122: in get return self._obj_cls(self, {self._obj_cls._id_attr: id}, lazy=lazy) gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'Group' object has no attribute '__annotations__' E E If you tried to access object attributes returned from the server, E note that was created as a E `lazy` object and was not initialized with any data.. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError ___________________ ERROR at setup of test_delete_group_hook ___________________ gl = @pytest.fixture def group(gl): > return gl.groups.get(1, lazy=True) tests/unit/conftest.py:112: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/v4/objects/groups.py:321: in get return cast(Group, super().get(id=id, lazy=lazy, **kwargs)) gitlab/exceptions.py:344: in wrapped_f return f(*args, **kwargs) gitlab/mixins.py:122: in get return self._obj_cls(self, {self._obj_cls._id_attr: id}, lazy=lazy) gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'Group' object has no attribute '__annotations__' E E If you tried to access object attributes returned from the server, E note that was created as a E `lazy` object and was not initialized with any data.. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError ____________________ ERROR at setup of test_test_group_hook ____________________ gl = @pytest.fixture def group(gl): > return gl.groups.get(1, lazy=True) tests/unit/conftest.py:112: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/v4/objects/groups.py:321: in get return cast(Group, super().get(id=id, lazy=lazy, **kwargs)) gitlab/exceptions.py:344: in wrapped_f return f(*args, **kwargs) gitlab/mixins.py:122: in get return self._obj_cls(self, {self._obj_cls._id_attr: id}, lazy=lazy) gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'Group' object has no attribute '__annotations__' E E If you tried to access object attributes returned from the server, E note that was created as a E `lazy` object and was not initialized with any data.. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError _________________ ERROR at setup of test_test_error_group_hook _________________ gl = @pytest.fixture def group(gl): > return gl.groups.get(1, lazy=True) tests/unit/conftest.py:112: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/v4/objects/groups.py:321: in get return cast(Group, super().get(id=id, lazy=lazy, **kwargs)) gitlab/exceptions.py:344: in wrapped_f return f(*args, **kwargs) gitlab/mixins.py:122: in get return self._obj_cls(self, {self._obj_cls._id_attr: id}, lazy=lazy) gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'Group' object has no attribute '__annotations__' E E If you tried to access object attributes returned from the server, E note that was created as a E `lazy` object and was not initialized with any data.. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError __________________ ERROR at setup of test_list_project_hooks ___________________ gl = @pytest.fixture def project(gl): > return gl.projects.get(1, lazy=True) tests/unit/conftest.py:117: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/v4/objects/projects.py:795: in get return cast(Project, super().get(id=id, lazy=lazy, **kwargs)) gitlab/exceptions.py:344: in wrapped_f return f(*args, **kwargs) gitlab/mixins.py:122: in get return self._obj_cls(self, {self._obj_cls._id_attr: id}, lazy=lazy) gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'Project' object has no attribute '__annotations__' E E If you tried to access object attributes returned from the server, E note that was created as E a `lazy` object and was not initialized with any data.. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError ___________________ ERROR at setup of test_get_project_hook ____________________ gl = @pytest.fixture def project(gl): > return gl.projects.get(1, lazy=True) tests/unit/conftest.py:117: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/v4/objects/projects.py:795: in get return cast(Project, super().get(id=id, lazy=lazy, **kwargs)) gitlab/exceptions.py:344: in wrapped_f return f(*args, **kwargs) gitlab/mixins.py:122: in get return self._obj_cls(self, {self._obj_cls._id_attr: id}, lazy=lazy) gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'Project' object has no attribute '__annotations__' E E If you tried to access object attributes returned from the server, E note that was created as E a `lazy` object and was not initialized with any data.. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError __________________ ERROR at setup of test_create_project_hook __________________ gl = @pytest.fixture def project(gl): > return gl.projects.get(1, lazy=True) tests/unit/conftest.py:117: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/v4/objects/projects.py:795: in get return cast(Project, super().get(id=id, lazy=lazy, **kwargs)) gitlab/exceptions.py:344: in wrapped_f return f(*args, **kwargs) gitlab/mixins.py:122: in get return self._obj_cls(self, {self._obj_cls._id_attr: id}, lazy=lazy) gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'Project' object has no attribute '__annotations__' E E If you tried to access object attributes returned from the server, E note that was created as E a `lazy` object and was not initialized with any data.. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError __________________ ERROR at setup of test_update_project_hook __________________ gl = @pytest.fixture def project(gl): > return gl.projects.get(1, lazy=True) tests/unit/conftest.py:117: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/v4/objects/projects.py:795: in get return cast(Project, super().get(id=id, lazy=lazy, **kwargs)) gitlab/exceptions.py:344: in wrapped_f return f(*args, **kwargs) gitlab/mixins.py:122: in get return self._obj_cls(self, {self._obj_cls._id_attr: id}, lazy=lazy) gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'Project' object has no attribute '__annotations__' E E If you tried to access object attributes returned from the server, E note that was created as E a `lazy` object and was not initialized with any data.. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError __________________ ERROR at setup of test_delete_project_hook __________________ gl = @pytest.fixture def project(gl): > return gl.projects.get(1, lazy=True) tests/unit/conftest.py:117: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/v4/objects/projects.py:795: in get return cast(Project, super().get(id=id, lazy=lazy, **kwargs)) gitlab/exceptions.py:344: in wrapped_f return f(*args, **kwargs) gitlab/mixins.py:122: in get return self._obj_cls(self, {self._obj_cls._id_attr: id}, lazy=lazy) gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'Project' object has no attribute '__annotations__' E E If you tried to access object attributes returned from the server, E note that was created as E a `lazy` object and was not initialized with any data.. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError ________________ ERROR at setup of test_list_group_invitations _________________ gl = @pytest.fixture def group(gl): > return gl.groups.get(1, lazy=True) tests/unit/conftest.py:112: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/v4/objects/groups.py:321: in get return cast(Group, super().get(id=id, lazy=lazy, **kwargs)) gitlab/exceptions.py:344: in wrapped_f return f(*args, **kwargs) gitlab/mixins.py:122: in get return self._obj_cls(self, {self._obj_cls._id_attr: id}, lazy=lazy) gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'Group' object has no attribute '__annotations__' E E If you tried to access object attributes returned from the server, E note that was created as a E `lazy` object and was not initialized with any data.. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError ________________ ERROR at setup of test_create_group_invitation ________________ gl = @pytest.fixture def group(gl): > return gl.groups.get(1, lazy=True) tests/unit/conftest.py:112: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/v4/objects/groups.py:321: in get return cast(Group, super().get(id=id, lazy=lazy, **kwargs)) gitlab/exceptions.py:344: in wrapped_f return f(*args, **kwargs) gitlab/mixins.py:122: in get return self._obj_cls(self, {self._obj_cls._id_attr: id}, lazy=lazy) gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'Group' object has no attribute '__annotations__' E E If you tried to access object attributes returned from the server, E note that was created as a E `lazy` object and was not initialized with any data.. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError ________________ ERROR at setup of test_update_group_invitation ________________ gl = @pytest.fixture def group(gl): > return gl.groups.get(1, lazy=True) tests/unit/conftest.py:112: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/v4/objects/groups.py:321: in get return cast(Group, super().get(id=id, lazy=lazy, **kwargs)) gitlab/exceptions.py:344: in wrapped_f return f(*args, **kwargs) gitlab/mixins.py:122: in get return self._obj_cls(self, {self._obj_cls._id_attr: id}, lazy=lazy) gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'Group' object has no attribute '__annotations__' E E If you tried to access object attributes returned from the server, E note that was created as a E `lazy` object and was not initialized with any data.. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError ________________ ERROR at setup of test_delete_group_invitation ________________ gl = @pytest.fixture def group(gl): > return gl.groups.get(1, lazy=True) tests/unit/conftest.py:112: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/v4/objects/groups.py:321: in get return cast(Group, super().get(id=id, lazy=lazy, **kwargs)) gitlab/exceptions.py:344: in wrapped_f return f(*args, **kwargs) gitlab/mixins.py:122: in get return self._obj_cls(self, {self._obj_cls._id_attr: id}, lazy=lazy) gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'Group' object has no attribute '__annotations__' E E If you tried to access object attributes returned from the server, E note that was created as a E `lazy` object and was not initialized with any data.. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError _______________ ERROR at setup of test_list_project_invitations ________________ gl = @pytest.fixture def project(gl): > return gl.projects.get(1, lazy=True) tests/unit/conftest.py:117: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/v4/objects/projects.py:795: in get return cast(Project, super().get(id=id, lazy=lazy, **kwargs)) gitlab/exceptions.py:344: in wrapped_f return f(*args, **kwargs) gitlab/mixins.py:122: in get return self._obj_cls(self, {self._obj_cls._id_attr: id}, lazy=lazy) gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'Project' object has no attribute '__annotations__' E E If you tried to access object attributes returned from the server, E note that was created as E a `lazy` object and was not initialized with any data.. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError _______________ ERROR at setup of test_create_project_invitation _______________ gl = @pytest.fixture def project(gl): > return gl.projects.get(1, lazy=True) tests/unit/conftest.py:117: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/v4/objects/projects.py:795: in get return cast(Project, super().get(id=id, lazy=lazy, **kwargs)) gitlab/exceptions.py:344: in wrapped_f return f(*args, **kwargs) gitlab/mixins.py:122: in get return self._obj_cls(self, {self._obj_cls._id_attr: id}, lazy=lazy) gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'Project' object has no attribute '__annotations__' E E If you tried to access object attributes returned from the server, E note that was created as E a `lazy` object and was not initialized with any data.. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError _______________ ERROR at setup of test_update_project_invitation _______________ gl = @pytest.fixture def project(gl): > return gl.projects.get(1, lazy=True) tests/unit/conftest.py:117: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/v4/objects/projects.py:795: in get return cast(Project, super().get(id=id, lazy=lazy, **kwargs)) gitlab/exceptions.py:344: in wrapped_f return f(*args, **kwargs) gitlab/mixins.py:122: in get return self._obj_cls(self, {self._obj_cls._id_attr: id}, lazy=lazy) gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'Project' object has no attribute '__annotations__' E E If you tried to access object attributes returned from the server, E note that was created as E a `lazy` object and was not initialized with any data.. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError _______________ ERROR at setup of test_delete_project_invitation _______________ gl = @pytest.fixture def project(gl): > return gl.projects.get(1, lazy=True) tests/unit/conftest.py:117: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/v4/objects/projects.py:795: in get return cast(Project, super().get(id=id, lazy=lazy, **kwargs)) gitlab/exceptions.py:344: in wrapped_f return f(*args, **kwargs) gitlab/mixins.py:122: in get return self._obj_cls(self, {self._obj_cls._id_attr: id}, lazy=lazy) gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'Project' object has no attribute '__annotations__' E E If you tried to access object attributes returned from the server, E note that was created as E a `lazy` object and was not initialized with any data.. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError ____________ ERROR at setup of test_create_group_invitation_raises _____________ gl = @pytest.fixture def group(gl): > return gl.groups.get(1, lazy=True) tests/unit/conftest.py:112: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/v4/objects/groups.py:321: in get return cast(Group, super().get(id=id, lazy=lazy, **kwargs)) gitlab/exceptions.py:344: in wrapped_f return f(*args, **kwargs) gitlab/mixins.py:122: in get return self._obj_cls(self, {self._obj_cls._id_attr: id}, lazy=lazy) gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'Group' object has no attribute '__annotations__' E E If you tried to access object attributes returned from the server, E note that was created as a E `lazy` object and was not initialized with any data.. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError ___________ ERROR at setup of test_create_project_invitation_raises ____________ gl = @pytest.fixture def project(gl): > return gl.projects.get(1, lazy=True) tests/unit/conftest.py:117: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/v4/objects/projects.py:795: in get return cast(Project, super().get(id=id, lazy=lazy, **kwargs)) gitlab/exceptions.py:344: in wrapped_f return f(*args, **kwargs) gitlab/mixins.py:122: in get return self._obj_cls(self, {self._obj_cls._id_attr: id}, lazy=lazy) gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'Project' object has no attribute '__annotations__' E E If you tried to access object attributes returned from the server, E note that was created as E a `lazy` object and was not initialized with any data.. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError _____________________ ERROR at setup of test_reorder_issue _____________________ gl = @pytest.fixture def project(gl): > return gl.projects.get(1, lazy=True) tests/unit/conftest.py:117: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/v4/objects/projects.py:795: in get return cast(Project, super().get(id=id, lazy=lazy, **kwargs)) gitlab/exceptions.py:344: in wrapped_f return f(*args, **kwargs) gitlab/mixins.py:122: in get return self._obj_cls(self, {self._obj_cls._id_attr: id}, lazy=lazy) gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'Project' object has no attribute '__annotations__' E E If you tried to access object attributes returned from the server, E note that was created as E a `lazy` object and was not initialized with any data.. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError ______________ ERROR at setup of test_get_group_issues_statistics ______________ gl = @pytest.fixture def group(gl): > return gl.groups.get(1, lazy=True) tests/unit/conftest.py:112: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/v4/objects/groups.py:321: in get return cast(Group, super().get(id=id, lazy=lazy, **kwargs)) gitlab/exceptions.py:344: in wrapped_f return f(*args, **kwargs) gitlab/mixins.py:122: in get return self._obj_cls(self, {self._obj_cls._id_attr: id}, lazy=lazy) gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'Group' object has no attribute '__annotations__' E E If you tried to access object attributes returned from the server, E note that was created as a E `lazy` object and was not initialized with any data.. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError _____________ ERROR at setup of test_get_project_issues_statistics _____________ gl = @pytest.fixture def project(gl): > return gl.projects.get(1, lazy=True) tests/unit/conftest.py:117: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/v4/objects/projects.py:795: in get return cast(Project, super().get(id=id, lazy=lazy, **kwargs)) gitlab/exceptions.py:344: in wrapped_f return f(*args, **kwargs) gitlab/mixins.py:122: in get return self._obj_cls(self, {self._obj_cls._id_attr: id}, lazy=lazy) gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'Project' object has no attribute '__annotations__' E E If you tried to access object attributes returned from the server, E note that was created as E a `lazy` object and was not initialized with any data.. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError _________________ ERROR at setup of test_list_group_iterations _________________ gl = @pytest.fixture def group(gl): > return gl.groups.get(1, lazy=True) tests/unit/conftest.py:112: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/v4/objects/groups.py:321: in get return cast(Group, super().get(id=id, lazy=lazy, **kwargs)) gitlab/exceptions.py:344: in wrapped_f return f(*args, **kwargs) gitlab/mixins.py:122: in get return self._obj_cls(self, {self._obj_cls._id_attr: id}, lazy=lazy) gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'Group' object has no attribute '__annotations__' E E If you tried to access object attributes returned from the server, E note that was created as a E `lazy` object and was not initialized with any data.. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError ________________ ERROR at setup of test_list_project_iterations ________________ gl = @pytest.fixture def project(gl): > return gl.projects.get(1, lazy=True) tests/unit/conftest.py:117: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/v4/objects/projects.py:795: in get return cast(Project, super().get(id=id, lazy=lazy, **kwargs)) gitlab/exceptions.py:344: in wrapped_f return f(*args, **kwargs) gitlab/mixins.py:122: in get return self._obj_cls(self, {self._obj_cls._id_attr: id}, lazy=lazy) gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'Project' object has no attribute '__annotations__' E E If you tried to access object attributes returned from the server, E note that was created as E a `lazy` object and was not initialized with any data.. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError ______________ ERROR at teardown of test_project_artifacts_delete ______________ @pytest.fixture def resp_project_artifacts_delete(): > with responses.RequestsMock() as rsps: tests/unit/objects/test_job_artifacts.py:29: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /usr/lib/python3.14/site-packages/responses/__init__.py:996: in __exit__ self.stop(allow_assert=success) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , allow_assert = True def stop(self, allow_assert: bool = True) -> None: if self._patcher: # prevent stopping unstarted patchers self._patcher.stop() # once patcher is stopped, clean it. This is required to create a new # fresh patcher on self.start() self._patcher = None if not self.assert_all_requests_are_fired: return if not allow_assert: return not_called = [m for m in self.registered() if m.call_count == 0] if not_called: > raise AssertionError( "Not all requests have been executed {!r}".format( [(match.method, match.url) for match in not_called] ) ) E AssertionError: Not all requests have been executed [('DELETE', 'http://localhost/api/v4/projects/1/artifacts')] /usr/lib/python3.14/site-packages/responses/__init__.py:1233: AssertionError _______ ERROR at teardown of test_project_artifacts_download_by_ref_name _______ binary_content = b'binary content' @pytest.fixture def resp_artifacts_by_ref_name(binary_content): url = f"http://localhost/api/v4/projects/1/jobs/artifacts/{ref_name}/download?job={job}" > with responses.RequestsMock() as rsps: tests/unit/objects/test_job_artifacts.py:16: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /usr/lib/python3.14/site-packages/responses/__init__.py:996: in __exit__ self.stop(allow_assert=success) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , allow_assert = True def stop(self, allow_assert: bool = True) -> None: if self._patcher: # prevent stopping unstarted patchers self._patcher.stop() # once patcher is stopped, clean it. This is required to create a new # fresh patcher on self.start() self._patcher = None if not self.assert_all_requests_are_fired: return if not allow_assert: return not_called = [m for m in self.registered() if m.call_count == 0] if not_called: > raise AssertionError( "Not all requests have been executed {!r}".format( [(match.method, match.url) for match in not_called] ) ) E AssertionError: Not all requests have been executed [('GET', 'http://localhost/api/v4/projects/1/jobs/artifacts/main/download?job=build')] /usr/lib/python3.14/site-packages/responses/__init__.py:1233: AssertionError __________________ ERROR at setup of test_get_job_token_scope __________________ gl = @pytest.fixture def project(gl): > return gl.projects.get(1, lazy=True) tests/unit/conftest.py:117: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/v4/objects/projects.py:795: in get return cast(Project, super().get(id=id, lazy=lazy, **kwargs)) gitlab/exceptions.py:344: in wrapped_f return f(*args, **kwargs) gitlab/mixins.py:122: in get return self._obj_cls(self, {self._obj_cls._id_attr: id}, lazy=lazy) gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'Project' object has no attribute '__annotations__' E E If you tried to access object attributes returned from the server, E note that was created as E a `lazy` object and was not initialized with any data.. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError ________________ ERROR at setup of test_refresh_job_token_scope ________________ gl = @pytest.fixture def project(gl): > return gl.projects.get(1, lazy=True) tests/unit/conftest.py:117: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/v4/objects/projects.py:795: in get return cast(Project, super().get(id=id, lazy=lazy, **kwargs)) gitlab/exceptions.py:344: in wrapped_f return f(*args, **kwargs) gitlab/mixins.py:122: in get return self._obj_cls(self, {self._obj_cls._id_attr: id}, lazy=lazy) gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'Project' object has no attribute '__annotations__' E E If you tried to access object attributes returned from the server, E note that was created as E a `lazy` object and was not initialized with any data.. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError _________________ ERROR at setup of test_save_job_token_scope __________________ gl = @pytest.fixture def project(gl): > return gl.projects.get(1, lazy=True) tests/unit/conftest.py:117: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/v4/objects/projects.py:795: in get return cast(Project, super().get(id=id, lazy=lazy, **kwargs)) gitlab/exceptions.py:344: in wrapped_f return f(*args, **kwargs) gitlab/mixins.py:122: in get return self._obj_cls(self, {self._obj_cls._id_attr: id}, lazy=lazy) gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'Project' object has no attribute '__annotations__' E E If you tried to access object attributes returned from the server, E note that was created as E a `lazy` object and was not initialized with any data.. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError ________________ ERROR at setup of test_update_job_token_scope _________________ gl = @pytest.fixture def project(gl): > return gl.projects.get(1, lazy=True) tests/unit/conftest.py:117: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/v4/objects/projects.py:795: in get return cast(Project, super().get(id=id, lazy=lazy, **kwargs)) gitlab/exceptions.py:344: in wrapped_f return f(*args, **kwargs) gitlab/mixins.py:122: in get return self._obj_cls(self, {self._obj_cls._id_attr: id}, lazy=lazy) gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'Project' object has no attribute '__annotations__' E E If you tried to access object attributes returned from the server, E note that was created as E a `lazy` object and was not initialized with any data.. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError ________________ ERROR at setup of test_get_projects_allowlist _________________ gl = @pytest.fixture def project(gl): > return gl.projects.get(1, lazy=True) tests/unit/conftest.py:117: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/v4/objects/projects.py:795: in get return cast(Project, super().get(id=id, lazy=lazy, **kwargs)) gitlab/exceptions.py:344: in wrapped_f return f(*args, **kwargs) gitlab/mixins.py:122: in get return self._obj_cls(self, {self._obj_cls._id_attr: id}, lazy=lazy) gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'Project' object has no attribute '__annotations__' E E If you tried to access object attributes returned from the server, E note that was created as E a `lazy` object and was not initialized with any data.. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError _______________ ERROR at setup of test_add_project_to_allowlist ________________ gl = @pytest.fixture def project(gl): > return gl.projects.get(1, lazy=True) tests/unit/conftest.py:117: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/v4/objects/projects.py:795: in get return cast(Project, super().get(id=id, lazy=lazy, **kwargs)) gitlab/exceptions.py:344: in wrapped_f return f(*args, **kwargs) gitlab/mixins.py:122: in get return self._obj_cls(self, {self._obj_cls._id_attr: id}, lazy=lazy) gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'Project' object has no attribute '__annotations__' E E If you tried to access object attributes returned from the server, E note that was created as E a `lazy` object and was not initialized with any data.. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError _________________ ERROR at setup of test_get_groups_allowlist __________________ gl = @pytest.fixture def project(gl): > return gl.projects.get(1, lazy=True) tests/unit/conftest.py:117: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/v4/objects/projects.py:795: in get return cast(Project, super().get(id=id, lazy=lazy, **kwargs)) gitlab/exceptions.py:344: in wrapped_f return f(*args, **kwargs) gitlab/mixins.py:122: in get return self._obj_cls(self, {self._obj_cls._id_attr: id}, lazy=lazy) gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'Project' object has no attribute '__annotations__' E E If you tried to access object attributes returned from the server, E note that was created as E a `lazy` object and was not initialized with any data.. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError ________________ ERROR at setup of test_add_group_to_allowlist _________________ gl = @pytest.fixture def project(gl): > return gl.projects.get(1, lazy=True) tests/unit/conftest.py:117: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/v4/objects/projects.py:795: in get return cast(Project, super().get(id=id, lazy=lazy, **kwargs)) gitlab/exceptions.py:344: in wrapped_f return f(*args, **kwargs) gitlab/mixins.py:122: in get return self._obj_cls(self, {self._obj_cls._id_attr: id}, lazy=lazy) gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'Project' object has no attribute '__annotations__' E E If you tried to access object attributes returned from the server, E note that was created as E a `lazy` object and was not initialized with any data.. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError ____________________ ERROR at setup of test_get_project_job ____________________ gl = @pytest.fixture def project(gl): > return gl.projects.get(1, lazy=True) tests/unit/conftest.py:117: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/v4/objects/projects.py:795: in get return cast(Project, super().get(id=id, lazy=lazy, **kwargs)) gitlab/exceptions.py:344: in wrapped_f return f(*args, **kwargs) gitlab/mixins.py:122: in get return self._obj_cls(self, {self._obj_cls._id_attr: id}, lazy=lazy) gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'Project' object has no attribute '__annotations__' E E If you tried to access object attributes returned from the server, E note that was created as E a `lazy` object and was not initialized with any data.. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError __________________ ERROR at setup of test_cancel_project_job ___________________ gl = @pytest.fixture def project(gl): > return gl.projects.get(1, lazy=True) tests/unit/conftest.py:117: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/v4/objects/projects.py:795: in get return cast(Project, super().get(id=id, lazy=lazy, **kwargs)) gitlab/exceptions.py:344: in wrapped_f return f(*args, **kwargs) gitlab/mixins.py:122: in get return self._obj_cls(self, {self._obj_cls._id_attr: id}, lazy=lazy) gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'Project' object has no attribute '__annotations__' E E If you tried to access object attributes returned from the server, E note that was created as E a `lazy` object and was not initialized with any data.. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError ___________________ ERROR at setup of test_retry_project_job ___________________ gl = @pytest.fixture def project(gl): > return gl.projects.get(1, lazy=True) tests/unit/conftest.py:117: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/v4/objects/projects.py:795: in get return cast(Project, super().get(id=id, lazy=lazy, **kwargs)) gitlab/exceptions.py:344: in wrapped_f return f(*args, **kwargs) gitlab/mixins.py:122: in get return self._obj_cls(self, {self._obj_cls._id_attr: id}, lazy=lazy) gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'Project' object has no attribute '__annotations__' E E If you tried to access object attributes returned from the server, E note that was created as E a `lazy` object and was not initialized with any data.. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError ___________________ ERROR at setup of test_list_project_job ____________________ gl = @pytest.fixture def project(gl): > return gl.projects.get(1, lazy=True) tests/unit/conftest.py:117: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/v4/objects/projects.py:795: in get return cast(Project, super().get(id=id, lazy=lazy, **kwargs)) gitlab/exceptions.py:344: in wrapped_f return f(*args, **kwargs) gitlab/mixins.py:122: in get return self._obj_cls(self, {self._obj_cls._id_attr: id}, lazy=lazy) gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'Project' object has no attribute '__annotations__' E E If you tried to access object attributes returned from the server, E note that was created as E a `lazy` object and was not initialized with any data.. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError __________________ ERROR at setup of test_create_group_member __________________ gl = @pytest.fixture def group(gl): > return gl.groups.get(1, lazy=True) tests/unit/conftest.py:112: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/v4/objects/groups.py:321: in get return cast(Group, super().get(id=id, lazy=lazy, **kwargs)) gitlab/exceptions.py:344: in wrapped_f return f(*args, **kwargs) gitlab/mixins.py:122: in get return self._obj_cls(self, {self._obj_cls._id_attr: id}, lazy=lazy) gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'Group' object has no attribute '__annotations__' E E If you tried to access object attributes returned from the server, E note that was created as a E `lazy` object and was not initialized with any data.. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError ______________ ERROR at setup of test_list_group_billable_members ______________ gl = @pytest.fixture def group(gl): > return gl.groups.get(1, lazy=True) tests/unit/conftest.py:112: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/v4/objects/groups.py:321: in get return cast(Group, super().get(id=id, lazy=lazy, **kwargs)) gitlab/exceptions.py:344: in wrapped_f return f(*args, **kwargs) gitlab/mixins.py:122: in get return self._obj_cls(self, {self._obj_cls._id_attr: id}, lazy=lazy) gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'Group' object has no attribute '__annotations__' E E If you tried to access object attributes returned from the server, E note that was created as a E `lazy` object and was not initialized with any data.. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError _____________ ERROR at setup of test_delete_group_billable_member ______________ gl = @pytest.fixture def group(gl): > return gl.groups.get(1, lazy=True) tests/unit/conftest.py:112: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/v4/objects/groups.py:321: in get return cast(Group, super().get(id=id, lazy=lazy, **kwargs)) gitlab/exceptions.py:344: in wrapped_f return f(*args, **kwargs) gitlab/mixins.py:122: in get return self._obj_cls(self, {self._obj_cls._id_attr: id}, lazy=lazy) gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'Group' object has no attribute '__annotations__' E E If you tried to access object attributes returned from the server, E note that was created as a E `lazy` object and was not initialized with any data.. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError _____________ ERROR at setup of test_list_merge_requests_pipelines _____________ gl = @pytest.fixture def project(gl): > return gl.projects.get(1, lazy=True) tests/unit/conftest.py:117: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/v4/objects/projects.py:795: in get return cast(Project, super().get(id=id, lazy=lazy, **kwargs)) gitlab/exceptions.py:344: in wrapped_f return f(*args, **kwargs) gitlab/mixins.py:122: in get return self._obj_cls(self, {self._obj_cls._id_attr: id}, lazy=lazy) gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'Project' object has no attribute '__annotations__' E E If you tried to access object attributes returned from the server, E note that was created as E a `lazy` object and was not initialized with any data.. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError ____________ ERROR at setup of test_create_merge_requests_pipelines ____________ gl = @pytest.fixture def project(gl): > return gl.projects.get(1, lazy=True) tests/unit/conftest.py:117: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/v4/objects/projects.py:795: in get return cast(Project, super().get(id=id, lazy=lazy, **kwargs)) gitlab/exceptions.py:344: in wrapped_f return f(*args, **kwargs) gitlab/mixins.py:122: in get return self._obj_cls(self, {self._obj_cls._id_attr: id}, lazy=lazy) gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'Project' object has no attribute '__annotations__' E E If you tried to access object attributes returned from the server, E note that was created as E a `lazy` object and was not initialized with any data.. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError ______________ ERROR at setup of test_list_project_merge_requests ______________ gl = @pytest.fixture def project(gl): > return gl.projects.get(1, lazy=True) tests/unit/conftest.py:117: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/v4/objects/projects.py:795: in get return cast(Project, super().get(id=id, lazy=lazy, **kwargs)) gitlab/exceptions.py:344: in wrapped_f return f(*args, **kwargs) gitlab/mixins.py:122: in get return self._obj_cls(self, {self._obj_cls._id_attr: id}, lazy=lazy) gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'Project' object has no attribute '__annotations__' E E If you tried to access object attributes returned from the server, E note that was created as E a `lazy` object and was not initialized with any data.. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError ____________ ERROR at setup of test_list_deployment_merge_requests _____________ gl = @pytest.fixture def project(gl): > return gl.projects.get(1, lazy=True) tests/unit/conftest.py:117: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/v4/objects/projects.py:795: in get return cast(Project, super().get(id=id, lazy=lazy, **kwargs)) gitlab/exceptions.py:344: in wrapped_f return f(*args, **kwargs) gitlab/mixins.py:122: in get return self._obj_cls(self, {self._obj_cls._id_attr: id}, lazy=lazy) gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'Project' object has no attribute '__annotations__' E E If you tried to access object attributes returned from the server, E note that was created as E a `lazy` object and was not initialized with any data.. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError ______________ ERROR at setup of test_get_merge_request_reviewers ______________ gl = @pytest.fixture def project(gl): > return gl.projects.get(1, lazy=True) tests/unit/conftest.py:117: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/v4/objects/projects.py:795: in get return cast(Project, super().get(id=id, lazy=lazy, **kwargs)) gitlab/exceptions.py:344: in wrapped_f return f(*args, **kwargs) gitlab/mixins.py:122: in get return self._obj_cls(self, {self._obj_cls._id_attr: id}, lazy=lazy) gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'Project' object has no attribute '__annotations__' E E If you tried to access object attributes returned from the server, E note that was created as E a `lazy` object and was not initialized with any data.. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError ______________ ERROR at setup of test_list_project_merge_requests ______________ gl = @pytest.fixture def project(gl): > return gl.projects.get(1, lazy=True) tests/unit/conftest.py:117: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/v4/objects/projects.py:795: in get return cast(Project, super().get(id=id, lazy=lazy, **kwargs)) gitlab/exceptions.py:344: in wrapped_f return f(*args, **kwargs) gitlab/mixins.py:122: in get return self._obj_cls(self, {self._obj_cls._id_attr: id}, lazy=lazy) gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'Project' object has no attribute '__annotations__' E E If you tried to access object attributes returned from the server, E note that was created as E a `lazy` object and was not initialized with any data.. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError ____________ ERROR at setup of test_list_project_protected_packages ____________ gl = @pytest.fixture def project(gl): > return gl.projects.get(1, lazy=True) tests/unit/conftest.py:117: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/v4/objects/projects.py:795: in get return cast(Project, super().get(id=id, lazy=lazy, **kwargs)) gitlab/exceptions.py:344: in wrapped_f return f(*args, **kwargs) gitlab/mixins.py:122: in get return self._obj_cls(self, {self._obj_cls._id_attr: id}, lazy=lazy) gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'Project' object has no attribute '__annotations__' E E If you tried to access object attributes returned from the server, E note that was created as E a `lazy` object and was not initialized with any data.. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError ___________ ERROR at setup of test_create_project_protected_package ____________ gl = @pytest.fixture def project(gl): > return gl.projects.get(1, lazy=True) tests/unit/conftest.py:117: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/v4/objects/projects.py:795: in get return cast(Project, super().get(id=id, lazy=lazy, **kwargs)) gitlab/exceptions.py:344: in wrapped_f return f(*args, **kwargs) gitlab/mixins.py:122: in get return self._obj_cls(self, {self._obj_cls._id_attr: id}, lazy=lazy) gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'Project' object has no attribute '__annotations__' E E If you tried to access object attributes returned from the server, E note that was created as E a `lazy` object and was not initialized with any data.. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError ___________ ERROR at setup of test_update_project_protected_package ____________ gl = @pytest.fixture def project(gl): > return gl.projects.get(1, lazy=True) tests/unit/conftest.py:117: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/v4/objects/projects.py:795: in get return cast(Project, super().get(id=id, lazy=lazy, **kwargs)) gitlab/exceptions.py:344: in wrapped_f return f(*args, **kwargs) gitlab/mixins.py:122: in get return self._obj_cls(self, {self._obj_cls._id_attr: id}, lazy=lazy) gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'Project' object has no attribute '__annotations__' E E If you tried to access object attributes returned from the server, E note that was created as E a `lazy` object and was not initialized with any data.. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError ___________ ERROR at setup of test_delete_project_protected_package ____________ gl = @pytest.fixture def project(gl): > return gl.projects.get(1, lazy=True) tests/unit/conftest.py:117: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/v4/objects/projects.py:795: in get return cast(Project, super().get(id=id, lazy=lazy, **kwargs)) gitlab/exceptions.py:344: in wrapped_f return f(*args, **kwargs) gitlab/mixins.py:122: in get return self._obj_cls(self, {self._obj_cls._id_attr: id}, lazy=lazy) gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'Project' object has no attribute '__annotations__' E E If you tried to access object attributes returned from the server, E note that was created as E a `lazy` object and was not initialized with any data.. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError _________________ ERROR at setup of test_list_project_packages _________________ gl = @pytest.fixture def project(gl): > return gl.projects.get(1, lazy=True) tests/unit/conftest.py:117: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/v4/objects/projects.py:795: in get return cast(Project, super().get(id=id, lazy=lazy, **kwargs)) gitlab/exceptions.py:344: in wrapped_f return f(*args, **kwargs) gitlab/mixins.py:122: in get return self._obj_cls(self, {self._obj_cls._id_attr: id}, lazy=lazy) gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'Project' object has no attribute '__annotations__' E E If you tried to access object attributes returned from the server, E note that was created as E a `lazy` object and was not initialized with any data.. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError __________________ ERROR at setup of test_list_group_packages __________________ gl = @pytest.fixture def group(gl): > return gl.groups.get(1, lazy=True) tests/unit/conftest.py:112: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/v4/objects/groups.py:321: in get return cast(Group, super().get(id=id, lazy=lazy, **kwargs)) gitlab/exceptions.py:344: in wrapped_f return f(*args, **kwargs) gitlab/mixins.py:122: in get return self._obj_cls(self, {self._obj_cls._id_attr: id}, lazy=lazy) gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'Group' object has no attribute '__annotations__' E E If you tried to access object attributes returned from the server, E note that was created as a E `lazy` object and was not initialized with any data.. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError __________________ ERROR at setup of test_get_project_package __________________ gl = @pytest.fixture def project(gl): > return gl.projects.get(1, lazy=True) tests/unit/conftest.py:117: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/v4/objects/projects.py:795: in get return cast(Project, super().get(id=id, lazy=lazy, **kwargs)) gitlab/exceptions.py:344: in wrapped_f return f(*args, **kwargs) gitlab/mixins.py:122: in get return self._obj_cls(self, {self._obj_cls._id_attr: id}, lazy=lazy) gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'Project' object has no attribute '__annotations__' E E If you tried to access object attributes returned from the server, E note that was created as E a `lazy` object and was not initialized with any data.. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError ________________ ERROR at setup of test_delete_project_package _________________ gl = @pytest.fixture def project(gl): > return gl.projects.get(1, lazy=True) tests/unit/conftest.py:117: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/v4/objects/projects.py:795: in get return cast(Project, super().get(id=id, lazy=lazy, **kwargs)) gitlab/exceptions.py:344: in wrapped_f return f(*args, **kwargs) gitlab/mixins.py:122: in get return self._obj_cls(self, {self._obj_cls._id_attr: id}, lazy=lazy) gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'Project' object has no attribute '__annotations__' E E If you tried to access object attributes returned from the server, E note that was created as E a `lazy` object and was not initialized with any data.. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError ______________ ERROR at setup of test_list_project_package_files _______________ gl = @pytest.fixture def project(gl): > return gl.projects.get(1, lazy=True) tests/unit/conftest.py:117: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/v4/objects/projects.py:795: in get return cast(Project, super().get(id=id, lazy=lazy, **kwargs)) gitlab/exceptions.py:344: in wrapped_f return f(*args, **kwargs) gitlab/mixins.py:122: in get return self._obj_cls(self, {self._obj_cls._id_attr: id}, lazy=lazy) gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'Project' object has no attribute '__annotations__' E E If you tried to access object attributes returned from the server, E note that was created as E a `lazy` object and was not initialized with any data.. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError ____ ERROR at setup of test_delete_project_package_file_from_package_object ____ gl = @pytest.fixture def project(gl): > return gl.projects.get(1, lazy=True) tests/unit/conftest.py:117: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/v4/objects/projects.py:795: in get return cast(Project, super().get(id=id, lazy=lazy, **kwargs)) gitlab/exceptions.py:344: in wrapped_f return f(*args, **kwargs) gitlab/mixins.py:122: in get return self._obj_cls(self, {self._obj_cls._id_attr: id}, lazy=lazy) gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'Project' object has no attribute '__annotations__' E E If you tried to access object attributes returned from the server, E note that was created as E a `lazy` object and was not initialized with any data.. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError _ ERROR at setup of test_delete_project_package_file_from_package_file_object __ gl = @pytest.fixture def project(gl): > return gl.projects.get(1, lazy=True) tests/unit/conftest.py:117: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/v4/objects/projects.py:795: in get return cast(Project, super().get(id=id, lazy=lazy, **kwargs)) gitlab/exceptions.py:344: in wrapped_f return f(*args, **kwargs) gitlab/mixins.py:122: in get return self._obj_cls(self, {self._obj_cls._id_attr: id}, lazy=lazy) gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'Project' object has no attribute '__annotations__' E E If you tried to access object attributes returned from the server, E note that was created as E a `lazy` object and was not initialized with any data.. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError ____________ ERROR at setup of test_list_project_package_pipelines _____________ gl = @pytest.fixture def project(gl): > return gl.projects.get(1, lazy=True) tests/unit/conftest.py:117: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/v4/objects/projects.py:795: in get return cast(Project, super().get(id=id, lazy=lazy, **kwargs)) gitlab/exceptions.py:344: in wrapped_f return f(*args, **kwargs) gitlab/mixins.py:122: in get return self._obj_cls(self, {self._obj_cls._id_attr: id}, lazy=lazy) gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'Project' object has no attribute '__annotations__' E E If you tried to access object attributes returned from the server, E note that was created as E a `lazy` object and was not initialized with any data.. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError ________________ ERROR at setup of test_upload_generic_package _________________ gl = @pytest.fixture def project(gl): > return gl.projects.get(1, lazy=True) tests/unit/conftest.py:117: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/v4/objects/projects.py:795: in get return cast(Project, super().get(id=id, lazy=lazy, **kwargs)) gitlab/exceptions.py:344: in wrapped_f return f(*args, **kwargs) gitlab/mixins.py:122: in get return self._obj_cls(self, {self._obj_cls._id_attr: id}, lazy=lazy) gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'Project' object has no attribute '__annotations__' E E If you tried to access object attributes returned from the server, E note that was created as E a `lazy` object and was not initialized with any data.. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError ________ ERROR at setup of test_upload_generic_package_nonexistent_path ________ gl = @pytest.fixture def project(gl): > return gl.projects.get(1, lazy=True) tests/unit/conftest.py:117: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/v4/objects/projects.py:795: in get return cast(Project, super().get(id=id, lazy=lazy, **kwargs)) gitlab/exceptions.py:344: in wrapped_f return f(*args, **kwargs) gitlab/mixins.py:122: in get return self._obj_cls(self, {self._obj_cls._id_attr: id}, lazy=lazy) gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'Project' object has no attribute '__annotations__' E E If you tried to access object attributes returned from the server, E note that was created as E a `lazy` object and was not initialized with any data.. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError ______ ERROR at setup of test_upload_generic_package_no_file_and_no_data _______ gl = @pytest.fixture def project(gl): > return gl.projects.get(1, lazy=True) tests/unit/conftest.py:117: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/v4/objects/projects.py:795: in get return cast(Project, super().get(id=id, lazy=lazy, **kwargs)) gitlab/exceptions.py:344: in wrapped_f return f(*args, **kwargs) gitlab/mixins.py:122: in get return self._obj_cls(self, {self._obj_cls._id_attr: id}, lazy=lazy) gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'Project' object has no attribute '__annotations__' E E If you tried to access object attributes returned from the server, E note that was created as E a `lazy` object and was not initialized with any data.. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError _________ ERROR at setup of test_upload_generic_package_file_and_data __________ gl = @pytest.fixture def project(gl): > return gl.projects.get(1, lazy=True) tests/unit/conftest.py:117: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/v4/objects/projects.py:795: in get return cast(Project, super().get(id=id, lazy=lazy, **kwargs)) gitlab/exceptions.py:344: in wrapped_f return f(*args, **kwargs) gitlab/mixins.py:122: in get return self._obj_cls(self, {self._obj_cls._id_attr: id}, lazy=lazy) gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'Project' object has no attribute '__annotations__' E E If you tried to access object attributes returned from the server, E note that was created as E a `lazy` object and was not initialized with any data.. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError _____________ ERROR at setup of test_upload_generic_package_bytes ______________ gl = @pytest.fixture def project(gl): > return gl.projects.get(1, lazy=True) tests/unit/conftest.py:117: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/v4/objects/projects.py:795: in get return cast(Project, super().get(id=id, lazy=lazy, **kwargs)) gitlab/exceptions.py:344: in wrapped_f return f(*args, **kwargs) gitlab/mixins.py:122: in get return self._obj_cls(self, {self._obj_cls._id_attr: id}, lazy=lazy) gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'Project' object has no attribute '__annotations__' E E If you tried to access object attributes returned from the server, E note that was created as E a `lazy` object and was not initialized with any data.. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError ______________ ERROR at setup of test_upload_generic_package_file ______________ gl = @pytest.fixture def project(gl): > return gl.projects.get(1, lazy=True) tests/unit/conftest.py:117: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/v4/objects/projects.py:795: in get return cast(Project, super().get(id=id, lazy=lazy, **kwargs)) gitlab/exceptions.py:344: in wrapped_f return f(*args, **kwargs) gitlab/mixins.py:122: in get return self._obj_cls(self, {self._obj_cls._id_attr: id}, lazy=lazy) gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'Project' object has no attribute '__annotations__' E E If you tried to access object attributes returned from the server, E note that was created as E a `lazy` object and was not initialized with any data.. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError _______________ ERROR at setup of test_download_generic_package ________________ gl = @pytest.fixture def project(gl): > return gl.projects.get(1, lazy=True) tests/unit/conftest.py:117: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/v4/objects/projects.py:795: in get return cast(Project, super().get(id=id, lazy=lazy, **kwargs)) gitlab/exceptions.py:344: in wrapped_f return f(*args, **kwargs) gitlab/mixins.py:122: in get return self._obj_cls(self, {self._obj_cls._id_attr: id}, lazy=lazy) gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'Project' object has no attribute '__annotations__' E E If you tried to access object attributes returned from the server, E note that was created as E a `lazy` object and was not initialized with any data.. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError ____________ ERROR at teardown of test_create_personal_access_token ____________ @pytest.fixture def resp_create_user_personal_access_token(): > with responses.RequestsMock() as rsps: tests/unit/objects/test_personal_access_tokens.py:35: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /usr/lib/python3.14/site-packages/responses/__init__.py:996: in __exit__ self.stop(allow_assert=success) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , allow_assert = True def stop(self, allow_assert: bool = True) -> None: if self._patcher: # prevent stopping unstarted patchers self._patcher.stop() # once patcher is stopped, clean it. This is required to create a new # fresh patcher on self.start() self._patcher = None if not self.assert_all_requests_are_fired: return if not allow_assert: return not_called = [m for m in self.registered() if m.call_count == 0] if not_called: > raise AssertionError( "Not all requests have been executed {!r}".format( [(match.method, match.url) for match in not_called] ) ) E AssertionError: Not all requests have been executed [('POST', 'http://localhost/api/v4/users/1/personal_access_tokens')] /usr/lib/python3.14/site-packages/responses/__init__.py:1233: AssertionError ____________ ERROR at teardown of test_delete_personal_access_token ____________ @pytest.fixture def resp_delete_personal_access_token(): > with responses.RequestsMock() as rsps: tests/unit/objects/test_personal_access_tokens.py:87: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /usr/lib/python3.14/site-packages/responses/__init__.py:996: in __exit__ self.stop(allow_assert=success) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , allow_assert = True def stop(self, allow_assert: bool = True) -> None: if self._patcher: # prevent stopping unstarted patchers self._patcher.stop() # once patcher is stopped, clean it. This is required to create a new # fresh patcher on self.start() self._patcher = None if not self.assert_all_requests_are_fired: return if not allow_assert: return not_called = [m for m in self.registered() if m.call_count == 0] if not_called: > raise AssertionError( "Not all requests have been executed {!r}".format( [(match.method, match.url) for match in not_called] ) ) E AssertionError: Not all requests have been executed [('DELETE', 'http://localhost/api/v4/personal_access_tokens/1')] /usr/lib/python3.14/site-packages/responses/__init__.py:1233: AssertionError ____________ ERROR at teardown of test_rotate_project_access_token _____________ token_content = {'active': True, 'created_at': '2021-01-20T22:11:48.151Z', 'expires_at': '2021-01-31', 'id': 42, ...} @pytest.fixture def resp_rotate_personal_access_token(token_content): > with responses.RequestsMock() as rsps: tests/unit/objects/test_personal_access_tokens.py:98: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /usr/lib/python3.14/site-packages/responses/__init__.py:996: in __exit__ self.stop(allow_assert=success) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , allow_assert = True def stop(self, allow_assert: bool = True) -> None: if self._patcher: # prevent stopping unstarted patchers self._patcher.stop() # once patcher is stopped, clean it. This is required to create a new # fresh patcher on self.start() self._patcher = None if not self.assert_all_requests_are_fired: return if not allow_assert: return not_called = [m for m in self.registered() if m.call_count == 0] if not_called: > raise AssertionError( "Not all requests have been executed {!r}".format( [(match.method, match.url) for match in not_called] ) ) E AssertionError: Not all requests have been executed [('POST', 'http://localhost/api/v4/personal_access_tokens/1/rotate')] /usr/lib/python3.14/site-packages/responses/__init__.py:1233: AssertionError ___________ ERROR at setup of test_create_project_pipeline_schedule ____________ gl = @pytest.fixture def project(gl): > return gl.projects.get(1, lazy=True) tests/unit/conftest.py:117: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/v4/objects/projects.py:795: in get return cast(Project, super().get(id=id, lazy=lazy, **kwargs)) gitlab/exceptions.py:344: in wrapped_f return f(*args, **kwargs) gitlab/mixins.py:122: in get return self._obj_cls(self, {self._obj_cls._id_attr: id}, lazy=lazy) gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'Project' object has no attribute '__annotations__' E E If you tried to access object attributes returned from the server, E note that was created as E a `lazy` object and was not initialized with any data.. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError ____________ ERROR at setup of test_play_project_pipeline_schedule _____________ gl = @pytest.fixture def project(gl): > return gl.projects.get(1, lazy=True) tests/unit/conftest.py:117: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/v4/objects/projects.py:795: in get return cast(Project, super().get(id=id, lazy=lazy, **kwargs)) gitlab/exceptions.py:344: in wrapped_f return f(*args, **kwargs) gitlab/mixins.py:122: in get return self._obj_cls(self, {self._obj_cls._id_attr: id}, lazy=lazy) gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'Project' object has no attribute '__annotations__' E E If you tried to access object attributes returned from the server, E note that was created as E a `lazy` object and was not initialized with any data.. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError _______ ERROR at setup of test_list_project_pipeline_schedule_pipelines ________ gl = @pytest.fixture def project(gl): > return gl.projects.get(1, lazy=True) tests/unit/conftest.py:117: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/v4/objects/projects.py:795: in get return cast(Project, super().get(id=id, lazy=lazy, **kwargs)) gitlab/exceptions.py:344: in wrapped_f return f(*args, **kwargs) gitlab/mixins.py:122: in get return self._obj_cls(self, {self._obj_cls._id_attr: id}, lazy=lazy) gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'Project' object has no attribute '__annotations__' E E If you tried to access object attributes returned from the server, E note that was created as E a `lazy` object and was not initialized with any data.. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError _________________ ERROR at setup of test_get_project_pipeline __________________ gl = @pytest.fixture def project(gl): > return gl.projects.get(1, lazy=True) tests/unit/conftest.py:117: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/v4/objects/projects.py:795: in get return cast(Project, super().get(id=id, lazy=lazy, **kwargs)) gitlab/exceptions.py:344: in wrapped_f return f(*args, **kwargs) gitlab/mixins.py:122: in get return self._obj_cls(self, {self._obj_cls._id_attr: id}, lazy=lazy) gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'Project' object has no attribute '__annotations__' E E If you tried to access object attributes returned from the server, E note that was created as E a `lazy` object and was not initialized with any data.. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError ________________ ERROR at setup of test_cancel_project_pipeline ________________ gl = @pytest.fixture def project(gl): > return gl.projects.get(1, lazy=True) tests/unit/conftest.py:117: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/v4/objects/projects.py:795: in get return cast(Project, super().get(id=id, lazy=lazy, **kwargs)) gitlab/exceptions.py:344: in wrapped_f return f(*args, **kwargs) gitlab/mixins.py:122: in get return self._obj_cls(self, {self._obj_cls._id_attr: id}, lazy=lazy) gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'Project' object has no attribute '__annotations__' E E If you tried to access object attributes returned from the server, E note that was created as E a `lazy` object and was not initialized with any data.. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError ________________ ERROR at setup of test_retry_project_pipeline _________________ gl = @pytest.fixture def project(gl): > return gl.projects.get(1, lazy=True) tests/unit/conftest.py:117: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/v4/objects/projects.py:795: in get return cast(Project, super().get(id=id, lazy=lazy, **kwargs)) gitlab/exceptions.py:344: in wrapped_f return f(*args, **kwargs) gitlab/mixins.py:122: in get return self._obj_cls(self, {self._obj_cls._id_attr: id}, lazy=lazy) gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'Project' object has no attribute '__annotations__' E E If you tried to access object attributes returned from the server, E note that was created as E a `lazy` object and was not initialized with any data.. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError ___________ ERROR at setup of test_get_project_pipeline_test_report ____________ gl = @pytest.fixture def project(gl): > return gl.projects.get(1, lazy=True) tests/unit/conftest.py:117: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/v4/objects/projects.py:795: in get return cast(Project, super().get(id=id, lazy=lazy, **kwargs)) gitlab/exceptions.py:344: in wrapped_f return f(*args, **kwargs) gitlab/mixins.py:122: in get return self._obj_cls(self, {self._obj_cls._id_attr: id}, lazy=lazy) gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'Project' object has no attribute '__annotations__' E E If you tried to access object attributes returned from the server, E note that was created as E a `lazy` object and was not initialized with any data.. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError _______ ERROR at setup of test_get_project_pipeline_test_report_summary ________ gl = @pytest.fixture def project(gl): > return gl.projects.get(1, lazy=True) tests/unit/conftest.py:117: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/v4/objects/projects.py:795: in get return cast(Project, super().get(id=id, lazy=lazy, **kwargs)) gitlab/exceptions.py:344: in wrapped_f return f(*args, **kwargs) gitlab/mixins.py:122: in get return self._obj_cls(self, {self._obj_cls._id_attr: id}, lazy=lazy) gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'Project' object has no attribute '__annotations__' E E If you tried to access object attributes returned from the server, E note that was created as E a `lazy` object and was not initialized with any data.. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError ____________________ ERROR at setup of test_latest_pipeline ____________________ gl = @pytest.fixture def project(gl): > return gl.projects.get(1, lazy=True) tests/unit/conftest.py:117: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/v4/objects/projects.py:795: in get return cast(Project, super().get(id=id, lazy=lazy, **kwargs)) gitlab/exceptions.py:344: in wrapped_f return f(*args, **kwargs) gitlab/mixins.py:122: in get return self._obj_cls(self, {self._obj_cls._id_attr: id}, lazy=lazy) gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'Project' object has no attribute '__annotations__' E E If you tried to access object attributes returned from the server, E note that was created as E a `lazy` object and was not initialized with any data.. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError _______________ ERROR at setup of test_latest_pipeline_other_ref _______________ gl = @pytest.fixture def project(gl): > return gl.projects.get(1, lazy=True) tests/unit/conftest.py:117: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/v4/objects/projects.py:795: in get return cast(Project, super().get(id=id, lazy=lazy, **kwargs)) gitlab/exceptions.py:344: in wrapped_f return f(*args, **kwargs) gitlab/mixins.py:122: in get return self._obj_cls(self, {self._obj_cls._id_attr: id}, lazy=lazy) gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'Project' object has no attribute '__annotations__' E E If you tried to access object attributes returned from the server, E note that was created as E a `lazy` object and was not initialized with any data.. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError _______________ ERROR at setup of test_get_project_access_token ________________ gl = @pytest.fixture def project(gl): > return gl.projects.get(1, lazy=True) tests/unit/conftest.py:117: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/v4/objects/projects.py:795: in get return cast(Project, super().get(id=id, lazy=lazy, **kwargs)) gitlab/exceptions.py:344: in wrapped_f return f(*args, **kwargs) gitlab/mixins.py:122: in get return self._obj_cls(self, {self._obj_cls._id_attr: id}, lazy=lazy) gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'Project' object has no attribute '__annotations__' E E If you tried to access object attributes returned from the server, E note that was created as E a `lazy` object and was not initialized with any data.. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError ______________ ERROR at setup of test_rotate_project_access_token ______________ gl = @pytest.fixture def project(gl): > return gl.projects.get(1, lazy=True) tests/unit/conftest.py:117: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/v4/objects/projects.py:795: in get return cast(Project, super().get(id=id, lazy=lazy, **kwargs)) gitlab/exceptions.py:344: in wrapped_f return f(*args, **kwargs) gitlab/mixins.py:122: in get return self._obj_cls(self, {self._obj_cls._id_attr: id}, lazy=lazy) gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'Project' object has no attribute '__annotations__' E E If you tried to access object attributes returned from the server, E note that was created as E a `lazy` object and was not initialized with any data.. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError _____________ ERROR at setup of test_refresh_project_import_status _____________ gl = @pytest.fixture def project(gl): > return gl.projects.get(1, lazy=True) tests/unit/conftest.py:117: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/v4/objects/projects.py:795: in get return cast(Project, super().get(id=id, lazy=lazy, **kwargs)) gitlab/exceptions.py:344: in wrapped_f return f(*args, **kwargs) gitlab/mixins.py:122: in get return self._obj_cls(self, {self._obj_cls._id_attr: id}, lazy=lazy) gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'Project' object has no attribute '__annotations__' E E If you tried to access object attributes returned from the server, E note that was created as E a `lazy` object and was not initialized with any data.. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError _________________ ERROR at setup of test_create_project_export _________________ gl = @pytest.fixture def project(gl): > return gl.projects.get(1, lazy=True) tests/unit/conftest.py:117: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/v4/objects/projects.py:795: in get return cast(Project, super().get(id=id, lazy=lazy, **kwargs)) gitlab/exceptions.py:344: in wrapped_f return f(*args, **kwargs) gitlab/mixins.py:122: in get return self._obj_cls(self, {self._obj_cls._id_attr: id}, lazy=lazy) gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'Project' object has no attribute '__annotations__' E E If you tried to access object attributes returned from the server, E note that was created as E a `lazy` object and was not initialized with any data.. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError _____________ ERROR at setup of test_refresh_project_export_status _____________ gl = @pytest.fixture def project(gl): > return gl.projects.get(1, lazy=True) tests/unit/conftest.py:117: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/v4/objects/projects.py:795: in get return cast(Project, super().get(id=id, lazy=lazy, **kwargs)) gitlab/exceptions.py:344: in wrapped_f return f(*args, **kwargs) gitlab/mixins.py:122: in get return self._obj_cls(self, {self._obj_cls._id_attr: id}, lazy=lazy) gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'Project' object has no attribute '__annotations__' E E If you tried to access object attributes returned from the server, E note that was created as E a `lazy` object and was not initialized with any data.. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError ________________ ERROR at setup of test_download_project_export ________________ gl = @pytest.fixture def project(gl): > return gl.projects.get(1, lazy=True) tests/unit/conftest.py:117: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/v4/objects/projects.py:795: in get return cast(Project, super().get(id=id, lazy=lazy, **kwargs)) gitlab/exceptions.py:344: in wrapped_f return f(*args, **kwargs) gitlab/mixins.py:122: in get return self._obj_cls(self, {self._obj_cls._id_attr: id}, lazy=lazy) gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'Project' object has no attribute '__annotations__' E E If you tried to access object attributes returned from the server, E note that was created as E a `lazy` object and was not initialized with any data.. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError ______ ERROR at setup of test_project_approval_manager_update_method_post ______ gl = @pytest.fixture def project(gl): > return gl.projects.get(1, lazy=True) tests/unit/conftest.py:117: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/v4/objects/projects.py:795: in get return cast(Project, super().get(id=id, lazy=lazy, **kwargs)) gitlab/exceptions.py:344: in wrapped_f return f(*args, **kwargs) gitlab/mixins.py:122: in get return self._obj_cls(self, {self._obj_cls._id_attr: id}, lazy=lazy) gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'Project' object has no attribute '__annotations__' E E If you tried to access object attributes returned from the server, E note that was created as E a `lazy` object and was not initialized with any data.. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError ___________ ERROR at setup of test_list_merge_request_approval_rules ___________ gl = @pytest.fixture def project(gl): > return gl.projects.get(1, lazy=True) tests/unit/conftest.py:117: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/v4/objects/projects.py:795: in get return cast(Project, super().get(id=id, lazy=lazy, **kwargs)) gitlab/exceptions.py:344: in wrapped_f return f(*args, **kwargs) gitlab/mixins.py:122: in get return self._obj_cls(self, {self._obj_cls._id_attr: id}, lazy=lazy) gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'Project' object has no attribute '__annotations__' E E If you tried to access object attributes returned from the server, E note that was created as E a `lazy` object and was not initialized with any data.. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError __________ ERROR at setup of test_delete_merge_request_approval_rule ___________ gl = @pytest.fixture def project(gl): > return gl.projects.get(1, lazy=True) tests/unit/conftest.py:117: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/v4/objects/projects.py:795: in get return cast(Project, super().get(id=id, lazy=lazy, **kwargs)) gitlab/exceptions.py:344: in wrapped_f return f(*args, **kwargs) gitlab/mixins.py:122: in get return self._obj_cls(self, {self._obj_cls._id_attr: id}, lazy=lazy) gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'Project' object has no attribute '__annotations__' E E If you tried to access object attributes returned from the server, E note that was created as E a `lazy` object and was not initialized with any data.. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError _____ ERROR at setup of test_update_merge_request_approvals_set_approvers ______ gl = @pytest.fixture def project(gl): > return gl.projects.get(1, lazy=True) tests/unit/conftest.py:117: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/v4/objects/projects.py:795: in get return cast(Project, super().get(id=id, lazy=lazy, **kwargs)) gitlab/exceptions.py:344: in wrapped_f return f(*args, **kwargs) gitlab/mixins.py:122: in get return self._obj_cls(self, {self._obj_cls._id_attr: id}, lazy=lazy) gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'Project' object has no attribute '__annotations__' E E If you tried to access object attributes returned from the server, E note that was created as E a `lazy` object and was not initialized with any data.. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError _____ ERROR at setup of test_create_merge_request_approvals_set_approvers ______ gl = @pytest.fixture def project(gl): > return gl.projects.get(1, lazy=True) tests/unit/conftest.py:117: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/v4/objects/projects.py:795: in get return cast(Project, super().get(id=id, lazy=lazy, **kwargs)) gitlab/exceptions.py:344: in wrapped_f return f(*args, **kwargs) gitlab/mixins.py:122: in get return self._obj_cls(self, {self._obj_cls._id_attr: id}, lazy=lazy) gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'Project' object has no attribute '__annotations__' E E If you tried to access object attributes returned from the server, E note that was created as E a `lazy` object and was not initialized with any data.. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError __________ ERROR at setup of test_create_merge_request_approval_rule ___________ gl = @pytest.fixture def project(gl): > return gl.projects.get(1, lazy=True) tests/unit/conftest.py:117: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/v4/objects/projects.py:795: in get return cast(Project, super().get(id=id, lazy=lazy, **kwargs)) gitlab/exceptions.py:344: in wrapped_f return f(*args, **kwargs) gitlab/mixins.py:122: in get return self._obj_cls(self, {self._obj_cls._id_attr: id}, lazy=lazy) gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'Project' object has no attribute '__annotations__' E E If you tried to access object attributes returned from the server, E note that was created as E a `lazy` object and was not initialized with any data.. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError __________ ERROR at setup of test_update_merge_request_approval_rule ___________ gl = @pytest.fixture def project(gl): > return gl.projects.get(1, lazy=True) tests/unit/conftest.py:117: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/v4/objects/projects.py:795: in get return cast(Project, super().get(id=id, lazy=lazy, **kwargs)) gitlab/exceptions.py:344: in wrapped_f return f(*args, **kwargs) gitlab/mixins.py:122: in get return self._obj_cls(self, {self._obj_cls._id_attr: id}, lazy=lazy) gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'Project' object has no attribute '__annotations__' E E If you tried to access object attributes returned from the server, E note that was created as E a `lazy` object and was not initialized with any data.. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError ____________ ERROR at setup of test_get_merge_request_approval_rule ____________ gl = @pytest.fixture def project(gl): > return gl.projects.get(1, lazy=True) tests/unit/conftest.py:117: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/v4/objects/projects.py:795: in get return cast(Project, super().get(id=id, lazy=lazy, **kwargs)) gitlab/exceptions.py:344: in wrapped_f return f(*args, **kwargs) gitlab/mixins.py:122: in get return self._obj_cls(self, {self._obj_cls._id_attr: id}, lazy=lazy) gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'Project' object has no attribute '__annotations__' E E If you tried to access object attributes returned from the server, E note that was created as E a `lazy` object and was not initialized with any data.. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError ___________ ERROR at setup of test_get_merge_request_approval_state ____________ gl = @pytest.fixture def project(gl): > return gl.projects.get(1, lazy=True) tests/unit/conftest.py:117: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/v4/objects/projects.py:795: in get return cast(Project, super().get(id=id, lazy=lazy, **kwargs)) gitlab/exceptions.py:344: in wrapped_f return f(*args, **kwargs) gitlab/mixins.py:122: in get return self._obj_cls(self, {self._obj_cls._id_attr: id}, lazy=lazy) gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'Project' object has no attribute '__annotations__' E E If you tried to access object attributes returned from the server, E note that was created as E a `lazy` object and was not initialized with any data.. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError _____________ ERROR at setup of test_project_additional_statistics _____________ gl = @pytest.fixture def project(gl): > return gl.projects.get(1, lazy=True) tests/unit/conftest.py:117: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/v4/objects/projects.py:795: in get return cast(Project, super().get(id=id, lazy=lazy, **kwargs)) gitlab/exceptions.py:344: in wrapped_f return f(*args, **kwargs) gitlab/mixins.py:122: in get return self._obj_cls(self, {self._obj_cls._id_attr: id}, lazy=lazy) gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'Project' object has no attribute '__annotations__' E E If you tried to access object attributes returned from the server, E note that was created as E a `lazy` object and was not initialized with any data.. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError __________________ ERROR at setup of test_list_user_projects ___________________ gl = @pytest.fixture def user(gl): > return gl.users.get(1, lazy=True) tests/unit/conftest.py:147: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/v4/objects/users.py:472: in get return cast(User, super().get(id=id, lazy=lazy, **kwargs)) gitlab/exceptions.py:344: in wrapped_f return f(*args, **kwargs) gitlab/mixins.py:122: in get return self._obj_cls(self, {self._obj_cls._id_attr: id}, lazy=lazy) gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'User' object has no attribute '__annotations__' E E If you tried to access object attributes returned from the server, E note that was created as a E `lazy` object and was not initialized with any data.. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError ______________ ERROR at setup of test_list_user_starred_projects _______________ gl = @pytest.fixture def user(gl): > return gl.users.get(1, lazy=True) tests/unit/conftest.py:147: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/v4/objects/users.py:472: in get return cast(User, super().get(id=id, lazy=lazy, **kwargs)) gitlab/exceptions.py:344: in wrapped_f return f(*args, **kwargs) gitlab/mixins.py:122: in get return self._obj_cls(self, {self._obj_cls._id_attr: id}, lazy=lazy) gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'User' object has no attribute '__annotations__' E E If you tried to access object attributes returned from the server, E note that was created as a E `lazy` object and was not initialized with any data.. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError __________________ ERROR at setup of test_list_project_users ___________________ gl = @pytest.fixture def project(gl): > return gl.projects.get(1, lazy=True) tests/unit/conftest.py:117: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/v4/objects/projects.py:795: in get return cast(Project, super().get(id=id, lazy=lazy, **kwargs)) gitlab/exceptions.py:344: in wrapped_f return f(*args, **kwargs) gitlab/mixins.py:122: in get return self._obj_cls(self, {self._obj_cls._id_attr: id}, lazy=lazy) gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'Project' object has no attribute '__annotations__' E E If you tried to access object attributes returned from the server, E note that was created as E a `lazy` object and was not initialized with any data.. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError __________________ ERROR at setup of test_create_user_project __________________ gl = @pytest.fixture def user(gl): > return gl.users.get(1, lazy=True) tests/unit/conftest.py:147: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/v4/objects/users.py:472: in get return cast(User, super().get(id=id, lazy=lazy, **kwargs)) gitlab/exceptions.py:344: in wrapped_f return f(*args, **kwargs) gitlab/mixins.py:122: in get return self._obj_cls(self, {self._obj_cls._id_attr: id}, lazy=lazy) gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'User' object has no attribute '__annotations__' E E If you tried to access object attributes returned from the server, E note that was created as a E `lazy` object and was not initialized with any data.. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError ____________________ ERROR at setup of test_update_project _____________________ gl = @pytest.fixture def project(gl): > return gl.projects.get(1, lazy=True) tests/unit/conftest.py:117: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/v4/objects/projects.py:795: in get return cast(Project, super().get(id=id, lazy=lazy, **kwargs)) gitlab/exceptions.py:344: in wrapped_f return f(*args, **kwargs) gitlab/mixins.py:122: in get return self._obj_cls(self, {self._obj_cls._id_attr: id}, lazy=lazy) gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'Project' object has no attribute '__annotations__' E E If you tried to access object attributes returned from the server, E note that was created as E a `lazy` object and was not initialized with any data.. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError _____________________ ERROR at setup of test_fork_project ______________________ gl = @pytest.fixture def project(gl): > return gl.projects.get(1, lazy=True) tests/unit/conftest.py:117: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/v4/objects/projects.py:795: in get return cast(Project, super().get(id=id, lazy=lazy, **kwargs)) gitlab/exceptions.py:344: in wrapped_f return f(*args, **kwargs) gitlab/mixins.py:122: in get return self._obj_cls(self, {self._obj_cls._id_attr: id}, lazy=lazy) gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'Project' object has no attribute '__annotations__' E E If you tried to access object attributes returned from the server, E note that was created as E a `lazy` object and was not initialized with any data.. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError __________________ ERROR at setup of test_list_project_forks ___________________ gl = @pytest.fixture def project(gl): > return gl.projects.get(1, lazy=True) tests/unit/conftest.py:117: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/v4/objects/projects.py:795: in get return cast(Project, super().get(id=id, lazy=lazy, **kwargs)) gitlab/exceptions.py:344: in wrapped_f return f(*args, **kwargs) gitlab/mixins.py:122: in get return self._obj_cls(self, {self._obj_cls._id_attr: id}, lazy=lazy) gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'Project' object has no attribute '__annotations__' E E If you tried to access object attributes returned from the server, E note that was created as E a `lazy` object and was not initialized with any data.. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError _____________________ ERROR at setup of test_star_project ______________________ gl = @pytest.fixture def project(gl): > return gl.projects.get(1, lazy=True) tests/unit/conftest.py:117: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/v4/objects/projects.py:795: in get return cast(Project, super().get(id=id, lazy=lazy, **kwargs)) gitlab/exceptions.py:344: in wrapped_f return f(*args, **kwargs) gitlab/mixins.py:122: in get return self._obj_cls(self, {self._obj_cls._id_attr: id}, lazy=lazy) gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'Project' object has no attribute '__annotations__' E E If you tried to access object attributes returned from the server, E note that was created as E a `lazy` object and was not initialized with any data.. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError ____________________ ERROR at setup of test_unstar_project _____________________ gl = @pytest.fixture def project(gl): > return gl.projects.get(1, lazy=True) tests/unit/conftest.py:117: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/v4/objects/projects.py:795: in get return cast(Project, super().get(id=id, lazy=lazy, **kwargs)) gitlab/exceptions.py:344: in wrapped_f return f(*args, **kwargs) gitlab/mixins.py:122: in get return self._obj_cls(self, {self._obj_cls._id_attr: id}, lazy=lazy) gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'Project' object has no attribute '__annotations__' E E If you tried to access object attributes returned from the server, E note that was created as E a `lazy` object and was not initialized with any data.. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError _________________ ERROR at setup of test_get_project_languages _________________ gl = @pytest.fixture def project(gl): > return gl.projects.get(1, lazy=True) tests/unit/conftest.py:117: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/v4/objects/projects.py:795: in get return cast(Project, super().get(id=id, lazy=lazy, **kwargs)) gitlab/exceptions.py:344: in wrapped_f return f(*args, **kwargs) gitlab/mixins.py:122: in get return self._obj_cls(self, {self._obj_cls._id_attr: id}, lazy=lazy) gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'Project' object has no attribute '__annotations__' E E If you tried to access object attributes returned from the server, E note that was created as E a `lazy` object and was not initialized with any data.. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError __________________ ERROR at setup of test_get_project_storage __________________ gl = @pytest.fixture def project(gl): > return gl.projects.get(1, lazy=True) tests/unit/conftest.py:117: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/v4/objects/projects.py:795: in get return cast(Project, super().get(id=id, lazy=lazy, **kwargs)) gitlab/exceptions.py:344: in wrapped_f return f(*args, **kwargs) gitlab/mixins.py:122: in get return self._obj_cls(self, {self._obj_cls._id_attr: id}, lazy=lazy) gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'Project' object has no attribute '__annotations__' E E If you tried to access object attributes returned from the server, E note that was created as E a `lazy` object and was not initialized with any data.. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError ____________________ ERROR at setup of test_archive_project ____________________ gl = @pytest.fixture def project(gl): > return gl.projects.get(1, lazy=True) tests/unit/conftest.py:117: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/v4/objects/projects.py:795: in get return cast(Project, super().get(id=id, lazy=lazy, **kwargs)) gitlab/exceptions.py:344: in wrapped_f return f(*args, **kwargs) gitlab/mixins.py:122: in get return self._obj_cls(self, {self._obj_cls._id_attr: id}, lazy=lazy) gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'Project' object has no attribute '__annotations__' E E If you tried to access object attributes returned from the server, E note that was created as E a `lazy` object and was not initialized with any data.. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError ___________________ ERROR at setup of test_unarchive_project ___________________ gl = @pytest.fixture def project(gl): > return gl.projects.get(1, lazy=True) tests/unit/conftest.py:117: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/v4/objects/projects.py:795: in get return cast(Project, super().get(id=id, lazy=lazy, **kwargs)) gitlab/exceptions.py:344: in wrapped_f return f(*args, **kwargs) gitlab/mixins.py:122: in get return self._obj_cls(self, {self._obj_cls._id_attr: id}, lazy=lazy) gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'Project' object has no attribute '__annotations__' E E If you tried to access object attributes returned from the server, E note that was created as E a `lazy` object and was not initialized with any data.. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError ____________________ ERROR at setup of test_delete_project _____________________ gl = @pytest.fixture def project(gl): > return gl.projects.get(1, lazy=True) tests/unit/conftest.py:117: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/v4/objects/projects.py:795: in get return cast(Project, super().get(id=id, lazy=lazy, **kwargs)) gitlab/exceptions.py:344: in wrapped_f return f(*args, **kwargs) gitlab/mixins.py:122: in get return self._obj_cls(self, {self._obj_cls._id_attr: id}, lazy=lazy) gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'Project' object has no attribute '__annotations__' E E If you tried to access object attributes returned from the server, E note that was created as E a `lazy` object and was not initialized with any data.. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError ______________________ ERROR at setup of test_upload_file ______________________ gl = @pytest.fixture def project(gl): > return gl.projects.get(1, lazy=True) tests/unit/conftest.py:117: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/v4/objects/projects.py:795: in get return cast(Project, super().get(id=id, lazy=lazy, **kwargs)) gitlab/exceptions.py:344: in wrapped_f return f(*args, **kwargs) gitlab/mixins.py:122: in get return self._obj_cls(self, {self._obj_cls._id_attr: id}, lazy=lazy) gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'Project' object has no attribute '__annotations__' E E If you tried to access object attributes returned from the server, E note that was created as E a `lazy` object and was not initialized with any data.. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError _______________ ERROR at setup of test_upload_file_with_filepath _______________ gl = @pytest.fixture def project(gl): > return gl.projects.get(1, lazy=True) tests/unit/conftest.py:117: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/v4/objects/projects.py:795: in get return cast(Project, super().get(id=id, lazy=lazy, **kwargs)) gitlab/exceptions.py:344: in wrapped_f return f(*args, **kwargs) gitlab/mixins.py:122: in get return self._obj_cls(self, {self._obj_cls._id_attr: id}, lazy=lazy) gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'Project' object has no attribute '__annotations__' E E If you tried to access object attributes returned from the server, E note that was created as E a `lazy` object and was not initialized with any data.. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError _______ ERROR at setup of test_upload_file_without_filepath_nor_filedata _______ gl = @pytest.fixture def project(gl): > return gl.projects.get(1, lazy=True) tests/unit/conftest.py:117: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/v4/objects/projects.py:795: in get return cast(Project, super().get(id=id, lazy=lazy, **kwargs)) gitlab/exceptions.py:344: in wrapped_f return f(*args, **kwargs) gitlab/mixins.py:122: in get return self._obj_cls(self, {self._obj_cls._id_attr: id}, lazy=lazy) gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'Project' object has no attribute '__annotations__' E E If you tried to access object attributes returned from the server, E note that was created as E a `lazy` object and was not initialized with any data.. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError ________ ERROR at setup of test_upload_file_with_filepath_and_filedata _________ gl = @pytest.fixture def project(gl): > return gl.projects.get(1, lazy=True) tests/unit/conftest.py:117: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/v4/objects/projects.py:795: in get return cast(Project, super().get(id=id, lazy=lazy, **kwargs)) gitlab/exceptions.py:344: in wrapped_f return f(*args, **kwargs) gitlab/mixins.py:122: in get return self._obj_cls(self, {self._obj_cls._id_attr: id}, lazy=lazy) gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'Project' object has no attribute '__annotations__' E E If you tried to access object attributes returned from the server, E note that was created as E a `lazy` object and was not initialized with any data.. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError _____________________ ERROR at setup of test_share_project _____________________ gl = @pytest.fixture def project(gl): > return gl.projects.get(1, lazy=True) tests/unit/conftest.py:117: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/v4/objects/projects.py:795: in get return cast(Project, super().get(id=id, lazy=lazy, **kwargs)) gitlab/exceptions.py:344: in wrapped_f return f(*args, **kwargs) gitlab/mixins.py:122: in get return self._obj_cls(self, {self._obj_cls._id_attr: id}, lazy=lazy) gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'Project' object has no attribute '__annotations__' E E If you tried to access object attributes returned from the server, E note that was created as E a `lazy` object and was not initialized with any data.. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError ______________ ERROR at setup of test_delete_shared_project_link _______________ gl = @pytest.fixture def project(gl): > return gl.projects.get(1, lazy=True) tests/unit/conftest.py:117: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/v4/objects/projects.py:795: in get return cast(Project, super().get(id=id, lazy=lazy, **kwargs)) gitlab/exceptions.py:344: in wrapped_f return f(*args, **kwargs) gitlab/mixins.py:122: in get return self._obj_cls(self, {self._obj_cls._id_attr: id}, lazy=lazy) gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'Project' object has no attribute '__annotations__' E E If you tried to access object attributes returned from the server, E note that was created as E a `lazy` object and was not initialized with any data.. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError _______________ ERROR at setup of test_trigger_pipeline_project ________________ gl = @pytest.fixture def project(gl): > return gl.projects.get(1, lazy=True) tests/unit/conftest.py:117: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/v4/objects/projects.py:795: in get return cast(Project, super().get(id=id, lazy=lazy, **kwargs)) gitlab/exceptions.py:344: in wrapped_f return f(*args, **kwargs) gitlab/mixins.py:122: in get return self._obj_cls(self, {self._obj_cls._id_attr: id}, lazy=lazy) gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'Project' object has no attribute '__annotations__' E E If you tried to access object attributes returned from the server, E note that was created as E a `lazy` object and was not initialized with any data.. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError ____________ ERROR at setup of test_create_forked_from_relationship ____________ gl = @pytest.fixture def project(gl): > return gl.projects.get(1, lazy=True) tests/unit/conftest.py:117: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/v4/objects/projects.py:795: in get return cast(Project, super().get(id=id, lazy=lazy, **kwargs)) gitlab/exceptions.py:344: in wrapped_f return f(*args, **kwargs) gitlab/mixins.py:122: in get return self._obj_cls(self, {self._obj_cls._id_attr: id}, lazy=lazy) gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'Project' object has no attribute '__annotations__' E E If you tried to access object attributes returned from the server, E note that was created as E a `lazy` object and was not initialized with any data.. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError ____________ ERROR at setup of test_delete_forked_from_relationship ____________ gl = @pytest.fixture def another_project(gl): > return gl.projects.get(2, lazy=True) tests/unit/conftest.py:122: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/v4/objects/projects.py:795: in get return cast(Project, super().get(id=id, lazy=lazy, **kwargs)) gitlab/exceptions.py:344: in wrapped_f return f(*args, **kwargs) gitlab/mixins.py:122: in get return self._obj_cls(self, {self._obj_cls._id_attr: id}, lazy=lazy) gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'Project' object has no attribute '__annotations__' E E If you tried to access object attributes returned from the server, E note that was created as E a `lazy` object and was not initialized with any data.. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError ___________ ERROR at setup of test_search_project_resources_by_name ____________ gl = @pytest.fixture def project(gl): > return gl.projects.get(1, lazy=True) tests/unit/conftest.py:117: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/v4/objects/projects.py:795: in get return cast(Project, super().get(id=id, lazy=lazy, **kwargs)) gitlab/exceptions.py:344: in wrapped_f return f(*args, **kwargs) gitlab/mixins.py:122: in get return self._obj_cls(self, {self._obj_cls._id_attr: id}, lazy=lazy) gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'Project' object has no attribute '__annotations__' E E If you tried to access object attributes returned from the server, E note that was created as E a `lazy` object and was not initialized with any data.. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError _________________ ERROR at setup of test_project_housekeeping __________________ gl = @pytest.fixture def project(gl): > return gl.projects.get(1, lazy=True) tests/unit/conftest.py:117: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/v4/objects/projects.py:795: in get return cast(Project, super().get(id=id, lazy=lazy, **kwargs)) gitlab/exceptions.py:344: in wrapped_f return f(*args, **kwargs) gitlab/mixins.py:122: in get return self._obj_cls(self, {self._obj_cls._id_attr: id}, lazy=lazy) gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'Project' object has no attribute '__annotations__' E E If you tried to access object attributes returned from the server, E note that was created as E a `lazy` object and was not initialized with any data.. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError ________________ ERROR at setup of test_list_project_push_rules ________________ gl = @pytest.fixture def project(gl): > return gl.projects.get(1, lazy=True) tests/unit/conftest.py:117: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/v4/objects/projects.py:795: in get return cast(Project, super().get(id=id, lazy=lazy, **kwargs)) gitlab/exceptions.py:344: in wrapped_f return f(*args, **kwargs) gitlab/mixins.py:122: in get return self._obj_cls(self, {self._obj_cls._id_attr: id}, lazy=lazy) gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'Project' object has no attribute '__annotations__' E E If you tried to access object attributes returned from the server, E note that was created as E a `lazy` object and was not initialized with any data.. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError _______________ ERROR at setup of test_create_project_push_rule ________________ gl = @pytest.fixture def project(gl): > return gl.projects.get(1, lazy=True) tests/unit/conftest.py:117: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/v4/objects/projects.py:795: in get return cast(Project, super().get(id=id, lazy=lazy, **kwargs)) gitlab/exceptions.py:344: in wrapped_f return f(*args, **kwargs) gitlab/mixins.py:122: in get return self._obj_cls(self, {self._obj_cls._id_attr: id}, lazy=lazy) gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'Project' object has no attribute '__annotations__' E E If you tried to access object attributes returned from the server, E note that was created as E a `lazy` object and was not initialized with any data.. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError _______________ ERROR at setup of test_update_project_push_rule ________________ gl = @pytest.fixture def project(gl): > return gl.projects.get(1, lazy=True) tests/unit/conftest.py:117: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/v4/objects/projects.py:795: in get return cast(Project, super().get(id=id, lazy=lazy, **kwargs)) gitlab/exceptions.py:344: in wrapped_f return f(*args, **kwargs) gitlab/mixins.py:122: in get return self._obj_cls(self, {self._obj_cls._id_attr: id}, lazy=lazy) gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'Project' object has no attribute '__annotations__' E E If you tried to access object attributes returned from the server, E note that was created as E a `lazy` object and was not initialized with any data.. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError _______________ ERROR at setup of test_delete_project_push_rule ________________ gl = @pytest.fixture def project(gl): > return gl.projects.get(1, lazy=True) tests/unit/conftest.py:117: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/v4/objects/projects.py:795: in get return cast(Project, super().get(id=id, lazy=lazy, **kwargs)) gitlab/exceptions.py:344: in wrapped_f return f(*args, **kwargs) gitlab/mixins.py:122: in get return self._obj_cls(self, {self._obj_cls._id_attr: id}, lazy=lazy) gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'Project' object has no attribute '__annotations__' E E If you tried to access object attributes returned from the server, E note that was created as E a `lazy` object and was not initialized with any data.. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError ___________________ ERROR at setup of test_transfer_project ____________________ gl = @pytest.fixture def project(gl): > return gl.projects.get(1, lazy=True) tests/unit/conftest.py:117: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/v4/objects/projects.py:795: in get return cast(Project, super().get(id=id, lazy=lazy, **kwargs)) gitlab/exceptions.py:344: in wrapped_f return f(*args, **kwargs) gitlab/mixins.py:122: in get return self._obj_cls(self, {self._obj_cls._id_attr: id}, lazy=lazy) gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'Project' object has no attribute '__annotations__' E E If you tried to access object attributes returned from the server, E note that was created as E a `lazy` object and was not initialized with any data.. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError __________________ ERROR at setup of test_project_pull_mirror __________________ gl = @pytest.fixture def project(gl): > return gl.projects.get(1, lazy=True) tests/unit/conftest.py:117: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/v4/objects/projects.py:795: in get return cast(Project, super().get(id=id, lazy=lazy, **kwargs)) gitlab/exceptions.py:344: in wrapped_f return f(*args, **kwargs) gitlab/mixins.py:122: in get return self._obj_cls(self, {self._obj_cls._id_attr: id}, lazy=lazy) gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'Project' object has no attribute '__annotations__' E E If you tried to access object attributes returned from the server, E note that was created as E a `lazy` object and was not initialized with any data.. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError ______________ ERROR at setup of test_project_pull_mirror_details ______________ gl = @pytest.fixture def project(gl): > return gl.projects.get(1, lazy=True) tests/unit/conftest.py:117: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/v4/objects/projects.py:795: in get return cast(Project, super().get(id=id, lazy=lazy, **kwargs)) gitlab/exceptions.py:344: in wrapped_f return f(*args, **kwargs) gitlab/mixins.py:122: in get return self._obj_cls(self, {self._obj_cls._id_attr: id}, lazy=lazy) gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'Project' object has no attribute '__annotations__' E E If you tried to access object attributes returned from the server, E note that was created as E a `lazy` object and was not initialized with any data.. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError ____________________ ERROR at setup of test_project_restore ____________________ gl = @pytest.fixture def project(gl): > return gl.projects.get(1, lazy=True) tests/unit/conftest.py:117: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/v4/objects/projects.py:795: in get return cast(Project, super().get(id=id, lazy=lazy, **kwargs)) gitlab/exceptions.py:344: in wrapped_f return f(*args, **kwargs) gitlab/mixins.py:122: in get return self._obj_cls(self, {self._obj_cls._id_attr: id}, lazy=lazy) gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'Project' object has no attribute '__annotations__' E E If you tried to access object attributes returned from the server, E note that was created as E a `lazy` object and was not initialized with any data.. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError ___________________ ERROR at setup of test_project_snapshot ____________________ gl = @pytest.fixture def project(gl): > return gl.projects.get(1, lazy=True) tests/unit/conftest.py:117: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/v4/objects/projects.py:795: in get return cast(Project, super().get(id=id, lazy=lazy, **kwargs)) gitlab/exceptions.py:344: in wrapped_f return f(*args, **kwargs) gitlab/mixins.py:122: in get return self._obj_cls(self, {self._obj_cls._id_attr: id}, lazy=lazy) gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'Project' object has no attribute '__annotations__' E E If you tried to access object attributes returned from the server, E note that was created as E a `lazy` object and was not initialized with any data.. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError ___________ ERROR at setup of test_list_project_protected_registries ___________ gl = @pytest.fixture def project(gl): > return gl.projects.get(1, lazy=True) tests/unit/conftest.py:117: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/v4/objects/projects.py:795: in get return cast(Project, super().get(id=id, lazy=lazy, **kwargs)) gitlab/exceptions.py:344: in wrapped_f return f(*args, **kwargs) gitlab/mixins.py:122: in get return self._obj_cls(self, {self._obj_cls._id_attr: id}, lazy=lazy) gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'Project' object has no attribute '__annotations__' E E If you tried to access object attributes returned from the server, E note that was created as E a `lazy` object and was not initialized with any data.. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError ___________ ERROR at setup of test_create_project_protected_registry ___________ gl = @pytest.fixture def project(gl): > return gl.projects.get(1, lazy=True) tests/unit/conftest.py:117: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/v4/objects/projects.py:795: in get return cast(Project, super().get(id=id, lazy=lazy, **kwargs)) gitlab/exceptions.py:344: in wrapped_f return f(*args, **kwargs) gitlab/mixins.py:122: in get return self._obj_cls(self, {self._obj_cls._id_attr: id}, lazy=lazy) gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'Project' object has no attribute '__annotations__' E E If you tried to access object attributes returned from the server, E note that was created as E a `lazy` object and was not initialized with any data.. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError ___________ ERROR at setup of test_update_project_protected_registry ___________ gl = @pytest.fixture def project(gl): > return gl.projects.get(1, lazy=True) tests/unit/conftest.py:117: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/v4/objects/projects.py:795: in get return cast(Project, super().get(id=id, lazy=lazy, **kwargs)) gitlab/exceptions.py:344: in wrapped_f return f(*args, **kwargs) gitlab/mixins.py:122: in get return self._obj_cls(self, {self._obj_cls._id_attr: id}, lazy=lazy) gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'Project' object has no attribute '__annotations__' E E If you tried to access object attributes returned from the server, E note that was created as E a `lazy` object and was not initialized with any data.. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError ___________ ERROR at setup of test_list_group_registry_repositories ____________ gl = @pytest.fixture def group(gl): > return gl.groups.get(1, lazy=True) tests/unit/conftest.py:112: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/v4/objects/groups.py:321: in get return cast(Group, super().get(id=id, lazy=lazy, **kwargs)) gitlab/exceptions.py:344: in wrapped_f return f(*args, **kwargs) gitlab/mixins.py:122: in get return self._obj_cls(self, {self._obj_cls._id_attr: id}, lazy=lazy) gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'Group' object has no attribute '__annotations__' E E If you tried to access object attributes returned from the server, E note that was created as a E `lazy` object and was not initialized with any data.. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError __________ ERROR at setup of test_list_project_registry_repositories ___________ gl = @pytest.fixture def project(gl): > return gl.projects.get(1, lazy=True) tests/unit/conftest.py:117: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/v4/objects/projects.py:795: in get return cast(Project, super().get(id=id, lazy=lazy, **kwargs)) gitlab/exceptions.py:344: in wrapped_f return f(*args, **kwargs) gitlab/mixins.py:122: in get return self._obj_cls(self, {self._obj_cls._id_attr: id}, lazy=lazy) gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'Project' object has no attribute '__annotations__' E E If you tried to access object attributes returned from the server, E note that was created as E a `lazy` object and was not initialized with any data.. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError __________ ERROR at setup of test_delete_project_registry_repository ___________ gl = @pytest.fixture def project(gl): > return gl.projects.get(1, lazy=True) tests/unit/conftest.py:117: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/v4/objects/projects.py:795: in get return cast(Project, super().get(id=id, lazy=lazy, **kwargs)) gitlab/exceptions.py:344: in wrapped_f return f(*args, **kwargs) gitlab/mixins.py:122: in get return self._obj_cls(self, {self._obj_cls._id_attr: id}, lazy=lazy) gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'Project' object has no attribute '__annotations__' E E If you tried to access object attributes returned from the server, E note that was created as E a `lazy` object and was not initialized with any data.. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError __________________ ERROR at setup of test_list_release_links ___________________ gl = @pytest.fixture def project(gl): > return gl.projects.get(1, lazy=True) tests/unit/conftest.py:117: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/v4/objects/projects.py:795: in get return cast(Project, super().get(id=id, lazy=lazy, **kwargs)) gitlab/exceptions.py:344: in wrapped_f return f(*args, **kwargs) gitlab/mixins.py:122: in get return self._obj_cls(self, {self._obj_cls._id_attr: id}, lazy=lazy) gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'Project' object has no attribute '__annotations__' E E If you tried to access object attributes returned from the server, E note that was created as E a `lazy` object and was not initialized with any data.. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError ___________________ ERROR at setup of test_get_release_link ____________________ gl = @pytest.fixture def project(gl): > return gl.projects.get(1, lazy=True) tests/unit/conftest.py:117: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/v4/objects/projects.py:795: in get return cast(Project, super().get(id=id, lazy=lazy, **kwargs)) gitlab/exceptions.py:344: in wrapped_f return f(*args, **kwargs) gitlab/mixins.py:122: in get return self._obj_cls(self, {self._obj_cls._id_attr: id}, lazy=lazy) gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'Project' object has no attribute '__annotations__' E E If you tried to access object attributes returned from the server, E note that was created as E a `lazy` object and was not initialized with any data.. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError __________________ ERROR at setup of test_create_release_link __________________ gl = @pytest.fixture def project(gl): > return gl.projects.get(1, lazy=True) tests/unit/conftest.py:117: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/v4/objects/projects.py:795: in get return cast(Project, super().get(id=id, lazy=lazy, **kwargs)) gitlab/exceptions.py:344: in wrapped_f return f(*args, **kwargs) gitlab/mixins.py:122: in get return self._obj_cls(self, {self._obj_cls._id_attr: id}, lazy=lazy) gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'Project' object has no attribute '__annotations__' E E If you tried to access object attributes returned from the server, E note that was created as E a `lazy` object and was not initialized with any data.. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError __________________ ERROR at setup of test_update_release_link __________________ gl = @pytest.fixture def project(gl): > return gl.projects.get(1, lazy=True) tests/unit/conftest.py:117: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/v4/objects/projects.py:795: in get return cast(Project, super().get(id=id, lazy=lazy, **kwargs)) gitlab/exceptions.py:344: in wrapped_f return f(*args, **kwargs) gitlab/mixins.py:122: in get return self._obj_cls(self, {self._obj_cls._id_attr: id}, lazy=lazy) gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'Project' object has no attribute '__annotations__' E E If you tried to access object attributes returned from the server, E note that was created as E a `lazy` object and was not initialized with any data.. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError __________________ ERROR at setup of test_delete_release_link __________________ gl = @pytest.fixture def project(gl): > return gl.projects.get(1, lazy=True) tests/unit/conftest.py:117: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/v4/objects/projects.py:795: in get return cast(Project, super().get(id=id, lazy=lazy, **kwargs)) gitlab/exceptions.py:344: in wrapped_f return f(*args, **kwargs) gitlab/mixins.py:122: in get return self._obj_cls(self, {self._obj_cls._id_attr: id}, lazy=lazy) gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'Project' object has no attribute '__annotations__' E E If you tried to access object attributes returned from the server, E note that was created as E a `lazy` object and was not initialized with any data.. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError ____________________ ERROR at setup of test_update_release _____________________ gl = @pytest.fixture def project(gl): > return gl.projects.get(1, lazy=True) tests/unit/conftest.py:117: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/v4/objects/projects.py:795: in get return cast(Project, super().get(id=id, lazy=lazy, **kwargs)) gitlab/exceptions.py:344: in wrapped_f return f(*args, **kwargs) gitlab/mixins.py:122: in get return self._obj_cls(self, {self._obj_cls._id_attr: id}, lazy=lazy) gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'Project' object has no attribute '__annotations__' E E If you tried to access object attributes returned from the server, E note that was created as E a `lazy` object and was not initialized with any data.. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError ______________ ERROR at setup of test_list_project_remote_mirrors ______________ gl = @pytest.fixture def project(gl): > return gl.projects.get(1, lazy=True) tests/unit/conftest.py:117: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/v4/objects/projects.py:795: in get return cast(Project, super().get(id=id, lazy=lazy, **kwargs)) gitlab/exceptions.py:344: in wrapped_f return f(*args, **kwargs) gitlab/mixins.py:122: in get return self._obj_cls(self, {self._obj_cls._id_attr: id}, lazy=lazy) gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'Project' object has no attribute '__annotations__' E E If you tried to access object attributes returned from the server, E note that was created as E a `lazy` object and was not initialized with any data.. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError _____________ ERROR at setup of test_create_project_remote_mirror ______________ gl = @pytest.fixture def project(gl): > return gl.projects.get(1, lazy=True) tests/unit/conftest.py:117: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/v4/objects/projects.py:795: in get return cast(Project, super().get(id=id, lazy=lazy, **kwargs)) gitlab/exceptions.py:344: in wrapped_f return f(*args, **kwargs) gitlab/mixins.py:122: in get return self._obj_cls(self, {self._obj_cls._id_attr: id}, lazy=lazy) gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'Project' object has no attribute '__annotations__' E E If you tried to access object attributes returned from the server, E note that was created as E a `lazy` object and was not initialized with any data.. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError _____________ ERROR at setup of test_update_project_remote_mirror ______________ gl = @pytest.fixture def project(gl): > return gl.projects.get(1, lazy=True) tests/unit/conftest.py:117: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/v4/objects/projects.py:795: in get return cast(Project, super().get(id=id, lazy=lazy, **kwargs)) gitlab/exceptions.py:344: in wrapped_f return f(*args, **kwargs) gitlab/mixins.py:122: in get return self._obj_cls(self, {self._obj_cls._id_attr: id}, lazy=lazy) gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'Project' object has no attribute '__annotations__' E E If you tried to access object attributes returned from the server, E note that was created as E a `lazy` object and was not initialized with any data.. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError _____________ ERROR at setup of test_delete_project_remote_mirror ______________ gl = @pytest.fixture def project(gl): > return gl.projects.get(1, lazy=True) tests/unit/conftest.py:117: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/v4/objects/projects.py:795: in get return cast(Project, super().get(id=id, lazy=lazy, **kwargs)) gitlab/exceptions.py:344: in wrapped_f return f(*args, **kwargs) gitlab/mixins.py:122: in get return self._obj_cls(self, {self._obj_cls._id_attr: id}, lazy=lazy) gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'Project' object has no attribute '__annotations__' E E If you tried to access object attributes returned from the server, E note that was created as E a `lazy` object and was not initialized with any data.. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError __________________ ERROR at setup of test_get_repository_file __________________ gl = @pytest.fixture def project(gl): > return gl.projects.get(1, lazy=True) tests/unit/conftest.py:117: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/v4/objects/projects.py:795: in get return cast(Project, super().get(id=id, lazy=lazy, **kwargs)) gitlab/exceptions.py:344: in wrapped_f return f(*args, **kwargs) gitlab/mixins.py:122: in get return self._obj_cls(self, {self._obj_cls._id_attr: id}, lazy=lazy) gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'Project' object has no attribute '__annotations__' E E If you tried to access object attributes returned from the server, E note that was created as E a `lazy` object and was not initialized with any data.. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError _____________ ERROR at setup of test_list_project_resource_groups ______________ gl = @pytest.fixture def project(gl): > return gl.projects.get(1, lazy=True) tests/unit/conftest.py:117: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/v4/objects/projects.py:795: in get return cast(Project, super().get(id=id, lazy=lazy, **kwargs)) gitlab/exceptions.py:344: in wrapped_f return f(*args, **kwargs) gitlab/mixins.py:122: in get return self._obj_cls(self, {self._obj_cls._id_attr: id}, lazy=lazy) gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'Project' object has no attribute '__annotations__' E E If you tried to access object attributes returned from the server, E note that was created as E a `lazy` object and was not initialized with any data.. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError ______________ ERROR at setup of test_get_project_resource_group _______________ gl = @pytest.fixture def project(gl): > return gl.projects.get(1, lazy=True) tests/unit/conftest.py:117: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/v4/objects/projects.py:795: in get return cast(Project, super().get(id=id, lazy=lazy, **kwargs)) gitlab/exceptions.py:344: in wrapped_f return f(*args, **kwargs) gitlab/mixins.py:122: in get return self._obj_cls(self, {self._obj_cls._id_attr: id}, lazy=lazy) gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'Project' object has no attribute '__annotations__' E E If you tried to access object attributes returned from the server, E note that was created as E a `lazy` object and was not initialized with any data.. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError ___________ ERROR at setup of test_list_resource_group_upcoming_jobs ___________ gl = @pytest.fixture def project(gl): > return gl.projects.get(1, lazy=True) tests/unit/conftest.py:117: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/v4/objects/projects.py:795: in get return cast(Project, super().get(id=id, lazy=lazy, **kwargs)) gitlab/exceptions.py:344: in wrapped_f return f(*args, **kwargs) gitlab/mixins.py:122: in get return self._obj_cls(self, {self._obj_cls._id_attr: id}, lazy=lazy) gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'Project' object has no attribute '__annotations__' E E If you tried to access object attributes returned from the server, E note that was created as E a `lazy` object and was not initialized with any data.. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError __________ ERROR at setup of test_list_project_issue_iteration_events __________ gl = @pytest.fixture def project(gl): > return gl.projects.get(1, lazy=True) tests/unit/conftest.py:117: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/v4/objects/projects.py:795: in get return cast(Project, super().get(id=id, lazy=lazy, **kwargs)) gitlab/exceptions.py:344: in wrapped_f return f(*args, **kwargs) gitlab/mixins.py:122: in get return self._obj_cls(self, {self._obj_cls._id_attr: id}, lazy=lazy) gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'Project' object has no attribute '__annotations__' E E If you tried to access object attributes returned from the server, E note that was created as E a `lazy` object and was not initialized with any data.. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError ___________ ERROR at setup of test_get_project_issue_iteration_event ___________ gl = @pytest.fixture def project(gl): > return gl.projects.get(1, lazy=True) tests/unit/conftest.py:117: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/v4/objects/projects.py:795: in get return cast(Project, super().get(id=id, lazy=lazy, **kwargs)) gitlab/exceptions.py:344: in wrapped_f return f(*args, **kwargs) gitlab/mixins.py:122: in get return self._obj_cls(self, {self._obj_cls._id_attr: id}, lazy=lazy) gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'Project' object has no attribute '__annotations__' E E If you tried to access object attributes returned from the server, E note that was created as E a `lazy` object and was not initialized with any data.. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError ______________ ERROR at setup of test_project_issue_label_events _______________ gl = @pytest.fixture def project(gl): > return gl.projects.get(1, lazy=True) tests/unit/conftest.py:117: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/v4/objects/projects.py:795: in get return cast(Project, super().get(id=id, lazy=lazy, **kwargs)) gitlab/exceptions.py:344: in wrapped_f return f(*args, **kwargs) gitlab/mixins.py:122: in get return self._obj_cls(self, {self._obj_cls._id_attr: id}, lazy=lazy) gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'Project' object has no attribute '__annotations__' E E If you tried to access object attributes returned from the server, E note that was created as E a `lazy` object and was not initialized with any data.. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError ______________ ERROR at setup of test_merge_request_label_events _______________ gl = @pytest.fixture def project(gl): > return gl.projects.get(1, lazy=True) tests/unit/conftest.py:117: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/v4/objects/projects.py:795: in get return cast(Project, super().get(id=id, lazy=lazy, **kwargs)) gitlab/exceptions.py:344: in wrapped_f return f(*args, **kwargs) gitlab/mixins.py:122: in get return self._obj_cls(self, {self._obj_cls._id_attr: id}, lazy=lazy) gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'Project' object has no attribute '__annotations__' E E If you tried to access object attributes returned from the server, E note that was created as E a `lazy` object and was not initialized with any data.. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError ____________ ERROR at setup of test_group_epic_request_label_events ____________ gl = @pytest.fixture def group(gl): > return gl.groups.get(1, lazy=True) tests/unit/conftest.py:112: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/v4/objects/groups.py:321: in get return cast(Group, super().get(id=id, lazy=lazy, **kwargs)) gitlab/exceptions.py:344: in wrapped_f return f(*args, **kwargs) gitlab/mixins.py:122: in get return self._obj_cls(self, {self._obj_cls._id_attr: id}, lazy=lazy) gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'Group' object has no attribute '__annotations__' E E If you tried to access object attributes returned from the server, E note that was created as a E `lazy` object and was not initialized with any data.. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError ____________ ERROR at setup of test_project_issue_milestone_events _____________ gl = @pytest.fixture def project(gl): > return gl.projects.get(1, lazy=True) tests/unit/conftest.py:117: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/v4/objects/projects.py:795: in get return cast(Project, super().get(id=id, lazy=lazy, **kwargs)) gitlab/exceptions.py:344: in wrapped_f return f(*args, **kwargs) gitlab/mixins.py:122: in get return self._obj_cls(self, {self._obj_cls._id_attr: id}, lazy=lazy) gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'Project' object has no attribute '__annotations__' E E If you tried to access object attributes returned from the server, E note that was created as E a `lazy` object and was not initialized with any data.. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError ____________ ERROR at setup of test_merge_request_milestone_events _____________ gl = @pytest.fixture def project(gl): > return gl.projects.get(1, lazy=True) tests/unit/conftest.py:117: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/v4/objects/projects.py:795: in get return cast(Project, super().get(id=id, lazy=lazy, **kwargs)) gitlab/exceptions.py:344: in wrapped_f return f(*args, **kwargs) gitlab/mixins.py:122: in get return self._obj_cls(self, {self._obj_cls._id_attr: id}, lazy=lazy) gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'Project' object has no attribute '__annotations__' E E If you tried to access object attributes returned from the server, E note that was created as E a `lazy` object and was not initialized with any data.. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError ____________ ERROR at setup of test_list_project_issue_state_events ____________ gl = @pytest.fixture def project(gl): > return gl.projects.get(1, lazy=True) tests/unit/conftest.py:117: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/v4/objects/projects.py:795: in get return cast(Project, super().get(id=id, lazy=lazy, **kwargs)) gitlab/exceptions.py:344: in wrapped_f return f(*args, **kwargs) gitlab/mixins.py:122: in get return self._obj_cls(self, {self._obj_cls._id_attr: id}, lazy=lazy) gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'Project' object has no attribute '__annotations__' E E If you tried to access object attributes returned from the server, E note that was created as E a `lazy` object and was not initialized with any data.. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError _____________ ERROR at setup of test_get_project_issue_state_event _____________ gl = @pytest.fixture def project(gl): > return gl.projects.get(1, lazy=True) tests/unit/conftest.py:117: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/v4/objects/projects.py:795: in get return cast(Project, super().get(id=id, lazy=lazy, **kwargs)) gitlab/exceptions.py:344: in wrapped_f return f(*args, **kwargs) gitlab/mixins.py:122: in get return self._obj_cls(self, {self._obj_cls._id_attr: id}, lazy=lazy) gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'Project' object has no attribute '__annotations__' E E If you tried to access object attributes returned from the server, E note that was created as E a `lazy` object and was not initialized with any data.. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError ____________ ERROR at setup of test_list_merge_request_state_events ____________ gl = @pytest.fixture def project(gl): > return gl.projects.get(1, lazy=True) tests/unit/conftest.py:117: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/v4/objects/projects.py:795: in get return cast(Project, super().get(id=id, lazy=lazy, **kwargs)) gitlab/exceptions.py:344: in wrapped_f return f(*args, **kwargs) gitlab/mixins.py:122: in get return self._obj_cls(self, {self._obj_cls._id_attr: id}, lazy=lazy) gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'Project' object has no attribute '__annotations__' E E If you tried to access object attributes returned from the server, E note that was created as E a `lazy` object and was not initialized with any data.. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError _____________ ERROR at setup of test_get_merge_request_state_event _____________ gl = @pytest.fixture def project(gl): > return gl.projects.get(1, lazy=True) tests/unit/conftest.py:117: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/v4/objects/projects.py:795: in get return cast(Project, super().get(id=id, lazy=lazy, **kwargs)) gitlab/exceptions.py:344: in wrapped_f return f(*args, **kwargs) gitlab/mixins.py:122: in get return self._obj_cls(self, {self._obj_cls._id_attr: id}, lazy=lazy) gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'Project' object has no attribute '__annotations__' E E If you tried to access object attributes returned from the server, E note that was created as E a `lazy` object and was not initialized with any data.. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError ________________ ERROR at teardown of test_project_runners_list ________________ @pytest.fixture def resp_get_runners_list(): > with responses.RequestsMock() as rsps: tests/unit/objects/test_runners.py:98: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /usr/lib/python3.14/site-packages/responses/__init__.py:996: in __exit__ self.stop(allow_assert=success) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , allow_assert = True def stop(self, allow_assert: bool = True) -> None: if self._patcher: # prevent stopping unstarted patchers self._patcher.stop() # once patcher is stopped, clean it. This is required to create a new # fresh patcher on self.start() self._patcher = None if not self.assert_all_requests_are_fired: return if not allow_assert: return not_called = [m for m in self.registered() if m.call_count == 0] if not_called: > raise AssertionError( "Not all requests have been executed {!r}".format( [(match.method, match.url) for match in not_called] ) ) E AssertionError: Not all requests have been executed [('GET', re.compile('.*?(/runners(/all)?|/(groups|projects)/1/runners)'))] /usr/lib/python3.14/site-packages/responses/__init__.py:1233: AssertionError _________________ ERROR at teardown of test_group_runners_list _________________ @pytest.fixture def resp_get_runners_list(): > with responses.RequestsMock() as rsps: tests/unit/objects/test_runners.py:98: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /usr/lib/python3.14/site-packages/responses/__init__.py:996: in __exit__ self.stop(allow_assert=success) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , allow_assert = True def stop(self, allow_assert: bool = True) -> None: if self._patcher: # prevent stopping unstarted patchers self._patcher.stop() # once patcher is stopped, clean it. This is required to create a new # fresh patcher on self.start() self._patcher = None if not self.assert_all_requests_are_fired: return if not allow_assert: return not_called = [m for m in self.registered() if m.call_count == 0] if not_called: > raise AssertionError( "Not all requests have been executed {!r}".format( [(match.method, match.url) for match in not_called] ) ) E AssertionError: Not all requests have been executed [('GET', re.compile('.*?(/runners(/all)?|/(groups|projects)/1/runners)'))] /usr/lib/python3.14/site-packages/responses/__init__.py:1233: AssertionError _________________ ERROR at teardown of test_get_update_runner __________________ @pytest.fixture def resp_runner_detail(): > with responses.RequestsMock() as rsps: tests/unit/objects/test_runners.py:111: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /usr/lib/python3.14/site-packages/responses/__init__.py:996: in __exit__ self.stop(allow_assert=success) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , allow_assert = True def stop(self, allow_assert: bool = True) -> None: if self._patcher: # prevent stopping unstarted patchers self._patcher.stop() # once patcher is stopped, clean it. This is required to create a new # fresh patcher on self.start() self._patcher = None if not self.assert_all_requests_are_fired: return if not allow_assert: return not_called = [m for m in self.registered() if m.call_count == 0] if not_called: > raise AssertionError( "Not all requests have been executed {!r}".format( [(match.method, match.url) for match in not_called] ) ) E AssertionError: Not all requests have been executed [('PUT', re.compile('.*?/runners/6'))] /usr/lib/python3.14/site-packages/responses/__init__.py:1233: AssertionError ________________ ERROR at teardown of test_delete_runner_by_id _________________ @pytest.fixture def resp_runner_delete(): > with responses.RequestsMock() as rsps: tests/unit/objects/test_runners.py:160: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /usr/lib/python3.14/site-packages/responses/__init__.py:996: in __exit__ self.stop(allow_assert=success) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , allow_assert = True def stop(self, allow_assert: bool = True) -> None: if self._patcher: # prevent stopping unstarted patchers self._patcher.stop() # once patcher is stopped, clean it. This is required to create a new # fresh patcher on self.start() self._patcher = None if not self.assert_all_requests_are_fired: return if not allow_assert: return not_called = [m for m in self.registered() if m.call_count == 0] if not_called: > raise AssertionError( "Not all requests have been executed {!r}".format( [(match.method, match.url) for match in not_called] ) ) E AssertionError: Not all requests have been executed [('DELETE', re.compile('.*?/runners/6'))] /usr/lib/python3.14/site-packages/responses/__init__.py:1233: AssertionError _______________ ERROR at teardown of test_disable_project_runner _______________ @pytest.fixture def resp_runner_disable(): > with responses.RequestsMock() as rsps: tests/unit/objects/test_runners.py:191: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /usr/lib/python3.14/site-packages/responses/__init__.py:996: in __exit__ self.stop(allow_assert=success) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , allow_assert = True def stop(self, allow_assert: bool = True) -> None: if self._patcher: # prevent stopping unstarted patchers self._patcher.stop() # once patcher is stopped, clean it. This is required to create a new # fresh patcher on self.start() self._patcher = None if not self.assert_all_requests_are_fired: return if not allow_assert: return not_called = [m for m in self.registered() if m.call_count == 0] if not_called: > raise AssertionError( "Not all requests have been executed {!r}".format( [(match.method, match.url) for match in not_called] ) ) E AssertionError: Not all requests have been executed [('DELETE', re.compile('.*?/projects/1/runners/6'))] /usr/lib/python3.14/site-packages/responses/__init__.py:1233: AssertionError _______________ ERROR at teardown of test_enable_project_runner ________________ @pytest.fixture def resp_runner_enable(): > with responses.RequestsMock() as rsps: tests/unit/objects/test_runners.py:146: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /usr/lib/python3.14/site-packages/responses/__init__.py:996: in __exit__ self.stop(allow_assert=success) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , allow_assert = True def stop(self, allow_assert: bool = True) -> None: if self._patcher: # prevent stopping unstarted patchers self._patcher.stop() # once patcher is stopped, clean it. This is required to create a new # fresh patcher on self.start() self._patcher = None if not self.assert_all_requests_are_fired: return if not allow_assert: return not_called = [m for m in self.registered() if m.call_count == 0] if not_called: > raise AssertionError( "Not all requests have been executed {!r}".format( [(match.method, match.url) for match in not_called] ) ) E AssertionError: Not all requests have been executed [('POST', re.compile('.*?projects/1/runners'))] /usr/lib/python3.14/site-packages/responses/__init__.py:1233: AssertionError ____________________ ERROR at teardown of test_runner_jobs _____________________ @pytest.fixture def resp_get_runners_jobs(): > with responses.RequestsMock() as rsps: tests/unit/objects/test_runners.py:85: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /usr/lib/python3.14/site-packages/responses/__init__.py:996: in __exit__ self.stop(allow_assert=success) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , allow_assert = True def stop(self, allow_assert: bool = True) -> None: if self._patcher: # prevent stopping unstarted patchers self._patcher.stop() # once patcher is stopped, clean it. This is required to create a new # fresh patcher on self.start() self._patcher = None if not self.assert_all_requests_are_fired: return if not allow_assert: return not_called = [m for m in self.registered() if m.call_count == 0] if not_called: > raise AssertionError( "Not all requests have been executed {!r}".format( [(match.method, match.url) for match in not_called] ) ) E AssertionError: Not all requests have been executed [('GET', 'http://localhost/api/v4/runners/6/jobs')] /usr/lib/python3.14/site-packages/responses/__init__.py:1233: AssertionError ___________________ ERROR at setup of test_list_secure_files ___________________ gl = @pytest.fixture def project(gl): > return gl.projects.get(1, lazy=True) tests/unit/conftest.py:117: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/v4/objects/projects.py:795: in get return cast(Project, super().get(id=id, lazy=lazy, **kwargs)) gitlab/exceptions.py:344: in wrapped_f return f(*args, **kwargs) gitlab/mixins.py:122: in get return self._obj_cls(self, {self._obj_cls._id_attr: id}, lazy=lazy) gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'Project' object has no attribute '__annotations__' E E If you tried to access object attributes returned from the server, E note that was created as E a `lazy` object and was not initialized with any data.. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError __________________ ERROR at setup of test_create_secure_file ___________________ gl = @pytest.fixture def project(gl): > return gl.projects.get(1, lazy=True) tests/unit/conftest.py:117: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/v4/objects/projects.py:795: in get return cast(Project, super().get(id=id, lazy=lazy, **kwargs)) gitlab/exceptions.py:344: in wrapped_f return f(*args, **kwargs) gitlab/mixins.py:122: in get return self._obj_cls(self, {self._obj_cls._id_attr: id}, lazy=lazy) gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'Project' object has no attribute '__annotations__' E E If you tried to access object attributes returned from the server, E note that was created as E a `lazy` object and was not initialized with any data.. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError _________________ ERROR at setup of test_download_secure_file __________________ gl = @pytest.fixture def project(gl): > return gl.projects.get(1, lazy=True) tests/unit/conftest.py:117: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/v4/objects/projects.py:795: in get return cast(Project, super().get(id=id, lazy=lazy, **kwargs)) gitlab/exceptions.py:344: in wrapped_f return f(*args, **kwargs) gitlab/mixins.py:122: in get return self._obj_cls(self, {self._obj_cls._id_attr: id}, lazy=lazy) gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'Project' object has no attribute '__annotations__' E E If you tried to access object attributes returned from the server, E note that was created as E a `lazy` object and was not initialized with any data.. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError __________________ ERROR at setup of test_remove_secure_file ___________________ gl = @pytest.fixture def project(gl): > return gl.projects.get(1, lazy=True) tests/unit/conftest.py:117: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/v4/objects/projects.py:795: in get return cast(Project, super().get(id=id, lazy=lazy, **kwargs)) gitlab/exceptions.py:344: in wrapped_f return f(*args, **kwargs) gitlab/mixins.py:122: in get return self._obj_cls(self, {self._obj_cls._id_attr: id}, lazy=lazy) gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'Project' object has no attribute '__annotations__' E E If you tried to access object attributes returned from the server, E note that was created as E a `lazy` object and was not initialized with any data.. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError _______________ ERROR at setup of test_list_active_integrations ________________ gl = @pytest.fixture def project(gl): > return gl.projects.get(1, lazy=True) tests/unit/conftest.py:117: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/v4/objects/projects.py:795: in get return cast(Project, super().get(id=id, lazy=lazy, **kwargs)) gitlab/exceptions.py:344: in wrapped_f return f(*args, **kwargs) gitlab/mixins.py:122: in get return self._obj_cls(self, {self._obj_cls._id_attr: id}, lazy=lazy) gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'Project' object has no attribute '__annotations__' E E If you tried to access object attributes returned from the server, E note that was created as E a `lazy` object and was not initialized with any data.. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError ______________ ERROR at setup of test_list_available_integrations ______________ gl = @pytest.fixture def project(gl): > return gl.projects.get(1, lazy=True) tests/unit/conftest.py:117: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/v4/objects/projects.py:795: in get return cast(Project, super().get(id=id, lazy=lazy, **kwargs)) gitlab/exceptions.py:344: in wrapped_f return f(*args, **kwargs) gitlab/mixins.py:122: in get return self._obj_cls(self, {self._obj_cls._id_attr: id}, lazy=lazy) gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'Project' object has no attribute '__annotations__' E E If you tried to access object attributes returned from the server, E note that was created as E a `lazy` object and was not initialized with any data.. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError ____________________ ERROR at setup of test_get_integration ____________________ gl = @pytest.fixture def project(gl): > return gl.projects.get(1, lazy=True) tests/unit/conftest.py:117: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/v4/objects/projects.py:795: in get return cast(Project, super().get(id=id, lazy=lazy, **kwargs)) gitlab/exceptions.py:344: in wrapped_f return f(*args, **kwargs) gitlab/mixins.py:122: in get return self._obj_cls(self, {self._obj_cls._id_attr: id}, lazy=lazy) gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'Project' object has no attribute '__annotations__' E E If you tried to access object attributes returned from the server, E note that was created as E a `lazy` object and was not initialized with any data.. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError __________________ ERROR at setup of test_update_integration ___________________ gl = @pytest.fixture def project(gl): > return gl.projects.get(1, lazy=True) tests/unit/conftest.py:117: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/v4/objects/projects.py:795: in get return cast(Project, super().get(id=id, lazy=lazy, **kwargs)) gitlab/exceptions.py:344: in wrapped_f return f(*args, **kwargs) gitlab/mixins.py:122: in get return self._obj_cls(self, {self._obj_cls._id_attr: id}, lazy=lazy) gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'Project' object has no attribute '__annotations__' E E If you tried to access object attributes returned from the server, E note that was created as E a `lazy` object and was not initialized with any data.. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError ______________ ERROR at setup of test_get_service_returns_service ______________ gl = @pytest.fixture def project(gl): > return gl.projects.get(1, lazy=True) tests/unit/conftest.py:117: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/v4/objects/projects.py:795: in get return cast(Project, super().get(id=id, lazy=lazy, **kwargs)) gitlab/exceptions.py:344: in wrapped_f return f(*args, **kwargs) gitlab/mixins.py:122: in get return self._obj_cls(self, {self._obj_cls._id_attr: id}, lazy=lazy) gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'Project' object has no attribute '__annotations__' E E If you tried to access object attributes returned from the server, E note that was created as E a `lazy` object and was not initialized with any data.. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError _________________ ERROR at setup of test_list_project_snippets _________________ gl = @pytest.fixture def project(gl): > return gl.projects.get(1, lazy=True) tests/unit/conftest.py:117: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/v4/objects/projects.py:795: in get return cast(Project, super().get(id=id, lazy=lazy, **kwargs)) gitlab/exceptions.py:344: in wrapped_f return f(*args, **kwargs) gitlab/mixins.py:122: in get return self._obj_cls(self, {self._obj_cls._id_attr: id}, lazy=lazy) gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'Project' object has no attribute '__annotations__' E E If you tried to access object attributes returned from the server, E note that was created as E a `lazy` object and was not initialized with any data.. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError __________________ ERROR at setup of test_get_project_snippet __________________ gl = @pytest.fixture def project(gl): > return gl.projects.get(1, lazy=True) tests/unit/conftest.py:117: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/v4/objects/projects.py:795: in get return cast(Project, super().get(id=id, lazy=lazy, **kwargs)) gitlab/exceptions.py:344: in wrapped_f return f(*args, **kwargs) gitlab/mixins.py:122: in get return self._obj_cls(self, {self._obj_cls._id_attr: id}, lazy=lazy) gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'Project' object has no attribute '__annotations__' E E If you tried to access object attributes returned from the server, E note that was created as E a `lazy` object and was not initialized with any data.. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError ____________ ERROR at setup of test_create_update_project_snippets _____________ gl = @pytest.fixture def project(gl): > return gl.projects.get(1, lazy=True) tests/unit/conftest.py:117: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/v4/objects/projects.py:795: in get return cast(Project, super().get(id=id, lazy=lazy, **kwargs)) gitlab/exceptions.py:344: in wrapped_f return f(*args, **kwargs) gitlab/mixins.py:122: in get return self._obj_cls(self, {self._obj_cls._id_attr: id}, lazy=lazy) gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'Project' object has no attribute '__annotations__' E E If you tried to access object attributes returned from the server, E note that was created as E a `lazy` object and was not initialized with any data.. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError ___________________ ERROR at setup of test_update_submodule ____________________ gl = @pytest.fixture def project(gl): > return gl.projects.get(1, lazy=True) tests/unit/conftest.py:117: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/v4/objects/projects.py:795: in get return cast(Project, super().get(id=id, lazy=lazy, **kwargs)) gitlab/exceptions.py:344: in wrapped_f return f(*args, **kwargs) gitlab/mixins.py:122: in get return self._obj_cls(self, {self._obj_cls._id_attr: id}, lazy=lazy) gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'Project' object has no attribute '__annotations__' E E If you tried to access object attributes returned from the server, E note that was created as E a `lazy` object and was not initialized with any data.. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError ____________________ ERROR at teardown of test_update_topic ____________________ @pytest.fixture def resp_update_topic(): updated_content = dict(topic_content) updated_content["name"] = new_name > with responses.RequestsMock() as rsps: tests/unit/objects/test_topics.py:70: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /usr/lib/python3.14/site-packages/responses/__init__.py:996: in __exit__ self.stop(allow_assert=success) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , allow_assert = True def stop(self, allow_assert: bool = True) -> None: if self._patcher: # prevent stopping unstarted patchers self._patcher.stop() # once patcher is stopped, clean it. This is required to create a new # fresh patcher on self.start() self._patcher = None if not self.assert_all_requests_are_fired: return if not allow_assert: return not_called = [m for m in self.registered() if m.call_count == 0] if not_called: > raise AssertionError( "Not all requests have been executed {!r}".format( [(match.method, match.url) for match in not_called] ) ) E AssertionError: Not all requests have been executed [('PUT', 'http://localhost/api/v4/topics/1')] /usr/lib/python3.14/site-packages/responses/__init__.py:1233: AssertionError ____________________ ERROR at teardown of test_delete_topic ____________________ @pytest.fixture def resp_delete_topic(): > with responses.RequestsMock() as rsps: tests/unit/objects/test_topics.py:83: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /usr/lib/python3.14/site-packages/responses/__init__.py:996: in __exit__ self.stop(allow_assert=success) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , allow_assert = True def stop(self, allow_assert: bool = True) -> None: if self._patcher: # prevent stopping unstarted patchers self._patcher.stop() # once patcher is stopped, clean it. This is required to create a new # fresh patcher on self.start() self._patcher = None if not self.assert_all_requests_are_fired: return if not allow_assert: return not_called = [m for m in self.registered() if m.call_count == 0] if not_called: > raise AssertionError( "Not all requests have been executed {!r}".format( [(match.method, match.url) for match in not_called] ) ) E AssertionError: Not all requests have been executed [('DELETE', 'http://localhost/api/v4/topics/1')] /usr/lib/python3.14/site-packages/responses/__init__.py:1233: AssertionError ___________________ ERROR at setup of test_user_memberships ____________________ gl = @pytest.fixture def user(gl): > return gl.users.get(1, lazy=True) tests/unit/conftest.py:147: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/v4/objects/users.py:472: in get return cast(User, super().get(id=id, lazy=lazy, **kwargs)) gitlab/exceptions.py:344: in wrapped_f return f(*args, **kwargs) gitlab/mixins.py:122: in get return self._obj_cls(self, {self._obj_cls._id_attr: id}, lazy=lazy) gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'User' object has no attribute '__annotations__' E E If you tried to access object attributes returned from the server, E note that was created as a E `lazy` object and was not initialized with any data.. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError ______________________ ERROR at setup of test_user_status ______________________ gl = @pytest.fixture def user(gl): > return gl.users.get(1, lazy=True) tests/unit/conftest.py:147: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/v4/objects/users.py:472: in get return cast(User, super().get(id=id, lazy=lazy, **kwargs)) gitlab/exceptions.py:344: in wrapped_f return f(*args, **kwargs) gitlab/mixins.py:122: in get return self._obj_cls(self, {self._obj_cls._id_attr: id}, lazy=lazy) gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'User' object has no attribute '__annotations__' E E If you tried to access object attributes returned from the server, E note that was created as a E `lazy` object and was not initialized with any data.. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError _______________ ERROR at setup of test_user_activate_deactivate ________________ gl = @pytest.fixture def user(gl): > return gl.users.get(1, lazy=True) tests/unit/conftest.py:147: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/v4/objects/users.py:472: in get return cast(User, super().get(id=id, lazy=lazy, **kwargs)) gitlab/exceptions.py:344: in wrapped_f return f(*args, **kwargs) gitlab/mixins.py:122: in get return self._obj_cls(self, {self._obj_cls._id_attr: id}, lazy=lazy) gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'User' object has no attribute '__annotations__' E E If you tried to access object attributes returned from the server, E note that was created as a E `lazy` object and was not initialized with any data.. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError _____________________ ERROR at setup of test_user_approve_ _____________________ gl = @pytest.fixture def user(gl): > return gl.users.get(1, lazy=True) tests/unit/conftest.py:147: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/v4/objects/users.py:472: in get return cast(User, super().get(id=id, lazy=lazy, **kwargs)) gitlab/exceptions.py:344: in wrapped_f return f(*args, **kwargs) gitlab/mixins.py:122: in get return self._obj_cls(self, {self._obj_cls._id_attr: id}, lazy=lazy) gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'User' object has no attribute '__annotations__' E E If you tried to access object attributes returned from the server, E note that was created as a E `lazy` object and was not initialized with any data.. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError __________________ ERROR at setup of test_user_approve_reject __________________ gl = @pytest.fixture def user(gl): > return gl.users.get(1, lazy=True) tests/unit/conftest.py:147: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/v4/objects/users.py:472: in get return cast(User, super().get(id=id, lazy=lazy, **kwargs)) gitlab/exceptions.py:344: in wrapped_f return f(*args, **kwargs) gitlab/mixins.py:122: in get return self._obj_cls(self, {self._obj_cls._id_attr: id}, lazy=lazy) gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'User' object has no attribute '__annotations__' E E If you tried to access object attributes returned from the server, E note that was created as a E `lazy` object and was not initialized with any data.. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError _______________________ ERROR at setup of test_user_ban ________________________ gl = @pytest.fixture def user(gl): > return gl.users.get(1, lazy=True) tests/unit/conftest.py:147: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/v4/objects/users.py:472: in get return cast(User, super().get(id=id, lazy=lazy, **kwargs)) gitlab/exceptions.py:344: in wrapped_f return f(*args, **kwargs) gitlab/mixins.py:122: in get return self._obj_cls(self, {self._obj_cls._id_attr: id}, lazy=lazy) gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'User' object has no attribute '__annotations__' E E If you tried to access object attributes returned from the server, E note that was created as a E `lazy` object and was not initialized with any data.. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError ______________________ ERROR at setup of test_user_unban _______________________ gl = @pytest.fixture def user(gl): > return gl.users.get(1, lazy=True) tests/unit/conftest.py:147: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/v4/objects/users.py:472: in get return cast(User, super().get(id=id, lazy=lazy, **kwargs)) gitlab/exceptions.py:344: in wrapped_f return f(*args, **kwargs) gitlab/mixins.py:122: in get return self._obj_cls(self, {self._obj_cls._id_attr: id}, lazy=lazy) gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'User' object has no attribute '__annotations__' E E If you tried to access object attributes returned from the server, E note that was created as a E `lazy` object and was not initialized with any data.. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError _________________ ERROR at setup of test_delete_user_identity __________________ gl = @pytest.fixture def user(gl): > return gl.users.get(1, lazy=True) tests/unit/conftest.py:147: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/v4/objects/users.py:472: in get return cast(User, super().get(id=id, lazy=lazy, **kwargs)) gitlab/exceptions.py:344: in wrapped_f return f(*args, **kwargs) gitlab/mixins.py:122: in get return self._obj_cls(self, {self._obj_cls._id_attr: id}, lazy=lazy) gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'User' object has no attribute '__annotations__' E E If you tried to access object attributes returned from the server, E note that was created as a E `lazy` object and was not initialized with any data.. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError _________________ ERROR at setup of test_user_follow_unfollow __________________ gl = @pytest.fixture def user(gl): > return gl.users.get(1, lazy=True) tests/unit/conftest.py:147: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/v4/objects/users.py:472: in get return cast(User, super().get(id=id, lazy=lazy, **kwargs)) gitlab/exceptions.py:344: in wrapped_f return f(*args, **kwargs) gitlab/mixins.py:122: in get return self._obj_cls(self, {self._obj_cls._id_attr: id}, lazy=lazy) gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'User' object has no attribute '__annotations__' E E If you tried to access object attributes returned from the server, E note that was created as a E `lazy` object and was not initialized with any data.. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError ____________________ ERROR at setup of test_list_followers _____________________ gl = @pytest.fixture def user(gl): > return gl.users.get(1, lazy=True) tests/unit/conftest.py:147: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/v4/objects/users.py:472: in get return cast(User, super().get(id=id, lazy=lazy, **kwargs)) gitlab/exceptions.py:344: in wrapped_f return f(*args, **kwargs) gitlab/mixins.py:122: in get return self._obj_cls(self, {self._obj_cls._id_attr: id}, lazy=lazy) gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'User' object has no attribute '__annotations__' E E If you tried to access object attributes returned from the server, E note that was created as a E `lazy` object and was not initialized with any data.. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError _________________ ERROR at setup of test_list_starred_projects _________________ gl = @pytest.fixture def user(gl): > return gl.users.get(1, lazy=True) tests/unit/conftest.py:147: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/v4/objects/users.py:472: in get return cast(User, super().get(id=id, lazy=lazy, **kwargs)) gitlab/exceptions.py:344: in wrapped_f return f(*args, **kwargs) gitlab/mixins.py:122: in get return self._obj_cls(self, {self._obj_cls._id_attr: id}, lazy=lazy) gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'User' object has no attribute '__annotations__' E E If you tried to access object attributes returned from the server, E note that was created as a E `lazy` object and was not initialized with any data.. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError __________________ ERROR at setup of test_create_user_runner ___________________ gl = resp_get_current_user = @pytest.fixture def current_user(gl, resp_get_current_user): > gl.auth() tests/unit/conftest.py:152: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/client.py:385: in auth self.user = self._objects.CurrentUserManager(self).get() gitlab/v4/objects/users.py:172: in get return cast(CurrentUser, super().get(**kwargs)) gitlab/exceptions.py:344: in wrapped_f return f(*args, **kwargs) gitlab/mixins.py:159: in get return self._obj_cls(self, server_data) gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'CurrentUser' object has no attribute '__annotations__'. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError ______________ ERROR at teardown of test_update_instance_variable ______________ @pytest.fixture def resp_update_variable(): updated_content = dict(variable_content) updated_content["value"] = new_value > with responses.RequestsMock() as rsps: tests/unit/objects/test_variables.py:78: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /usr/lib/python3.14/site-packages/responses/__init__.py:996: in __exit__ self.stop(allow_assert=success) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , allow_assert = True def stop(self, allow_assert: bool = True) -> None: if self._patcher: # prevent stopping unstarted patchers self._patcher.stop() # once patcher is stopped, clean it. This is required to create a new # fresh patcher on self.start() self._patcher = None if not self.assert_all_requests_are_fired: return if not allow_assert: return not_called = [m for m in self.registered() if m.call_count == 0] if not_called: > raise AssertionError( "Not all requests have been executed {!r}".format( [(match.method, match.url) for match in not_called] ) ) E AssertionError: Not all requests have been executed [('PUT', re.compile('http://localhost/api/v4/(((groups|projects)/1)|(admin/ci))/variables/TEST_VARIABLE_1'))] /usr/lib/python3.14/site-packages/responses/__init__.py:1233: AssertionError ______________ ERROR at teardown of test_delete_instance_variable ______________ @pytest.fixture def resp_delete_variable(): > with responses.RequestsMock() as rsps: tests/unit/objects/test_variables.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /usr/lib/python3.14/site-packages/responses/__init__.py:996: in __exit__ self.stop(allow_assert=success) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , allow_assert = True def stop(self, allow_assert: bool = True) -> None: if self._patcher: # prevent stopping unstarted patchers self._patcher.stop() # once patcher is stopped, clean it. This is required to create a new # fresh patcher on self.start() self._patcher = None if not self.assert_all_requests_are_fired: return if not allow_assert: return not_called = [m for m in self.registered() if m.call_count == 0] if not_called: > raise AssertionError( "Not all requests have been executed {!r}".format( [(match.method, match.url) for match in not_called] ) ) E AssertionError: Not all requests have been executed [('DELETE', re.compile('http://localhost/api/v4/(((groups|projects)/1)|(admin/ci))/variables/TEST_VARIABLE_1'))] /usr/lib/python3.14/site-packages/responses/__init__.py:1233: AssertionError ________________ ERROR at setup of test_list_project_variables _________________ gl = @pytest.fixture def project(gl): > return gl.projects.get(1, lazy=True) tests/unit/conftest.py:117: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/v4/objects/projects.py:795: in get return cast(Project, super().get(id=id, lazy=lazy, **kwargs)) gitlab/exceptions.py:344: in wrapped_f return f(*args, **kwargs) gitlab/mixins.py:122: in get return self._obj_cls(self, {self._obj_cls._id_attr: id}, lazy=lazy) gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'Project' object has no attribute '__annotations__' E E If you tried to access object attributes returned from the server, E note that was created as E a `lazy` object and was not initialized with any data.. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError _________________ ERROR at setup of test_get_project_variable __________________ gl = @pytest.fixture def project(gl): > return gl.projects.get(1, lazy=True) tests/unit/conftest.py:117: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/v4/objects/projects.py:795: in get return cast(Project, super().get(id=id, lazy=lazy, **kwargs)) gitlab/exceptions.py:344: in wrapped_f return f(*args, **kwargs) gitlab/mixins.py:122: in get return self._obj_cls(self, {self._obj_cls._id_attr: id}, lazy=lazy) gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'Project' object has no attribute '__annotations__' E E If you tried to access object attributes returned from the server, E note that was created as E a `lazy` object and was not initialized with any data.. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError ________________ ERROR at setup of test_create_project_variable ________________ gl = @pytest.fixture def project(gl): > return gl.projects.get(1, lazy=True) tests/unit/conftest.py:117: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/v4/objects/projects.py:795: in get return cast(Project, super().get(id=id, lazy=lazy, **kwargs)) gitlab/exceptions.py:344: in wrapped_f return f(*args, **kwargs) gitlab/mixins.py:122: in get return self._obj_cls(self, {self._obj_cls._id_attr: id}, lazy=lazy) gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'Project' object has no attribute '__annotations__' E E If you tried to access object attributes returned from the server, E note that was created as E a `lazy` object and was not initialized with any data.. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError ________________ ERROR at setup of test_update_project_variable ________________ gl = @pytest.fixture def project(gl): > return gl.projects.get(1, lazy=True) tests/unit/conftest.py:117: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/v4/objects/projects.py:795: in get return cast(Project, super().get(id=id, lazy=lazy, **kwargs)) gitlab/exceptions.py:344: in wrapped_f return f(*args, **kwargs) gitlab/mixins.py:122: in get return self._obj_cls(self, {self._obj_cls._id_attr: id}, lazy=lazy) gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'Project' object has no attribute '__annotations__' E E If you tried to access object attributes returned from the server, E note that was created as E a `lazy` object and was not initialized with any data.. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError ________________ ERROR at setup of test_delete_project_variable ________________ gl = @pytest.fixture def project(gl): > return gl.projects.get(1, lazy=True) tests/unit/conftest.py:117: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/v4/objects/projects.py:795: in get return cast(Project, super().get(id=id, lazy=lazy, **kwargs)) gitlab/exceptions.py:344: in wrapped_f return f(*args, **kwargs) gitlab/mixins.py:122: in get return self._obj_cls(self, {self._obj_cls._id_attr: id}, lazy=lazy) gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'Project' object has no attribute '__annotations__' E E If you tried to access object attributes returned from the server, E note that was created as E a `lazy` object and was not initialized with any data.. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError _________________ ERROR at setup of test_list_group_variables __________________ gl = @pytest.fixture def group(gl): > return gl.groups.get(1, lazy=True) tests/unit/conftest.py:112: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/v4/objects/groups.py:321: in get return cast(Group, super().get(id=id, lazy=lazy, **kwargs)) gitlab/exceptions.py:344: in wrapped_f return f(*args, **kwargs) gitlab/mixins.py:122: in get return self._obj_cls(self, {self._obj_cls._id_attr: id}, lazy=lazy) gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'Group' object has no attribute '__annotations__' E E If you tried to access object attributes returned from the server, E note that was created as a E `lazy` object and was not initialized with any data.. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError __________________ ERROR at setup of test_get_group_variable ___________________ gl = @pytest.fixture def group(gl): > return gl.groups.get(1, lazy=True) tests/unit/conftest.py:112: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/v4/objects/groups.py:321: in get return cast(Group, super().get(id=id, lazy=lazy, **kwargs)) gitlab/exceptions.py:344: in wrapped_f return f(*args, **kwargs) gitlab/mixins.py:122: in get return self._obj_cls(self, {self._obj_cls._id_attr: id}, lazy=lazy) gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'Group' object has no attribute '__annotations__' E E If you tried to access object attributes returned from the server, E note that was created as a E `lazy` object and was not initialized with any data.. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError _________________ ERROR at setup of test_create_group_variable _________________ gl = @pytest.fixture def group(gl): > return gl.groups.get(1, lazy=True) tests/unit/conftest.py:112: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/v4/objects/groups.py:321: in get return cast(Group, super().get(id=id, lazy=lazy, **kwargs)) gitlab/exceptions.py:344: in wrapped_f return f(*args, **kwargs) gitlab/mixins.py:122: in get return self._obj_cls(self, {self._obj_cls._id_attr: id}, lazy=lazy) gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'Group' object has no attribute '__annotations__' E E If you tried to access object attributes returned from the server, E note that was created as a E `lazy` object and was not initialized with any data.. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError _________________ ERROR at setup of test_update_group_variable _________________ gl = @pytest.fixture def group(gl): > return gl.groups.get(1, lazy=True) tests/unit/conftest.py:112: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/v4/objects/groups.py:321: in get return cast(Group, super().get(id=id, lazy=lazy, **kwargs)) gitlab/exceptions.py:344: in wrapped_f return f(*args, **kwargs) gitlab/mixins.py:122: in get return self._obj_cls(self, {self._obj_cls._id_attr: id}, lazy=lazy) gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'Group' object has no attribute '__annotations__' E E If you tried to access object attributes returned from the server, E note that was created as a E `lazy` object and was not initialized with any data.. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError _________________ ERROR at setup of test_delete_group_variable _________________ gl = @pytest.fixture def group(gl): > return gl.groups.get(1, lazy=True) tests/unit/conftest.py:112: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/v4/objects/groups.py:321: in get return cast(Group, super().get(id=id, lazy=lazy, **kwargs)) gitlab/exceptions.py:344: in wrapped_f return f(*args, **kwargs) gitlab/mixins.py:122: in get return self._obj_cls(self, {self._obj_cls._id_attr: id}, lazy=lazy) gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'Group' object has no attribute '__annotations__' E E If you tried to access object attributes returned from the server, E note that was created as a E `lazy` object and was not initialized with any data.. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError __________ ERROR at setup of test_legacy_display_without_fields_warns __________ fake_manager = @pytest.fixture def fake_object_no_id(fake_manager): > return helpers.FakeObjectWithoutId(fake_manager, {}) tests/unit/conftest.py:27: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'FakeObjectWithoutId' object has no attribute '__annotations__'. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError ________ ERROR at setup of test_legacy_display_with_long_repr_truncates ________ fake_manager = @pytest.fixture def fake_object_long_repr(fake_manager): > return helpers.FakeObjectWithLongRepr(fake_manager, {"test": "a" * 100}) tests/unit/conftest.py:32: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'FakeObjectWithLongRepr' object has no attribute '__annotations__'. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError =================================== FAILURES =================================== ________________________ test_computed_path_with_parent ________________________ gl = fake_manager = def test_computed_path_with_parent(gl, fake_manager): class MGR(base.RESTManager): _path = "/tests/{test_id}/cases" _obj_cls = object _from_parent_attrs = {"test_id": "id"} > mgr = MGR(gl, parent=helpers.FakeParent(manager=fake_manager, attrs={})) tests/unit/base/test_rest_manager.py:20: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'FakeParent' object has no attribute '__annotations__'. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError _______________________________ test_instantiate _______________________________ gl = fake_manager = def test_instantiate(gl, fake_manager): attrs = {"foo": "bar"} > obj = helpers.FakeObject(fake_manager, attrs.copy()) tests/unit/base/test_rest_object.py:13: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'FakeObject' object has no attribute '__annotations__'. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError _________________ test_missing_attribute_does_not_raise_custom _________________ gl = fake_manager = def test_missing_attribute_does_not_raise_custom(gl, fake_manager): """Ensure a missing attribute does not raise our custom error message if the RESTObject was not created from a list""" > obj = helpers.FakeObject(manager=fake_manager, attrs={"foo": "bar"}) tests/unit/base/test_rest_object.py:31: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'FakeObject' object has no attribute '__annotations__'. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError ________________ test_missing_attribute_from_list_raises_custom ________________ gl = fake_manager = def test_missing_attribute_from_list_raises_custom(gl, fake_manager): """Ensure a missing attribute raises our custom error message if the RESTObject was created from a list""" > obj = helpers.FakeObject( manager=fake_manager, attrs={"foo": "bar"}, created_from_list=True ) tests/unit/base/test_rest_object.py:43: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'FakeObject' object has no attribute '__annotations__' E E was created via a list() call E and only a subset of the data may be present. To ensure all data is E present get the object using a get(object.id) call. For more details, E see: E E https://python-gitlab.readthedocs.io/en/v4.10.0/faq.html#attribute-error-list. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError ______________________________ test_picklability _______________________________ fake_manager = def test_picklability(fake_manager): > obj = helpers.FakeObject(fake_manager, {"foo": "bar"}) tests/unit/base/test_rest_object.py:55: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'FakeObject' object has no attribute '__annotations__'. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError __________________________________ test_attrs __________________________________ fake_manager = def test_attrs(fake_manager): > obj = helpers.FakeObject(fake_manager, {"foo": "bar"}) tests/unit/base/test_rest_object.py:66: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'FakeObject' object has no attribute '__annotations__'. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError _________________________________ test_get_id __________________________________ fake_manager = def test_get_id(fake_manager): > obj = helpers.FakeObject(fake_manager, {"foo": "bar"}) tests/unit/base/test_rest_object.py:79: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'FakeObject' object has no attribute '__annotations__'. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError _______________________________ test_encoded_id ________________________________ fake_manager = def test_encoded_id(fake_manager): > obj = helpers.FakeObject(fake_manager, {"foo": "bar"}) tests/unit/base/test_rest_object.py:88: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'FakeObject' object has no attribute '__annotations__'. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError _____________________________ test_custom_id_attr ______________________________ fake_manager = def test_custom_id_attr(fake_manager): > obj = helpers.OtherFakeObject(fake_manager, {"foo": "bar"}) tests/unit/base/test_rest_object.py:107: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'OtherFakeObject' object has no attribute '__annotations__'. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError ______________________________ test_update_attrs _______________________________ fake_manager = def test_update_attrs(fake_manager): > obj = helpers.FakeObject(fake_manager, {"foo": "bar"}) tests/unit/base/test_rest_object.py:112: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'FakeObject' object has no attribute '__annotations__'. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError __________________________ test_update_attrs_deleted ___________________________ fake_manager = def test_update_attrs_deleted(fake_manager): > obj = helpers.FakeObject(fake_manager, {"foo": "foo", "bar": "bar"}) tests/unit/base/test_rest_object.py:120: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'FakeObject' object has no attribute '__annotations__'. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError _______________________________ test_dir_unique ________________________________ fake_manager = def test_dir_unique(fake_manager): > obj = helpers.FakeObject(fake_manager, {"manager": "foo"}) tests/unit/base/test_rest_object.py:128: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'FakeObject' object has no attribute '__annotations__'. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError _____________________________ test_create_managers _____________________________ gl = fake_manager = def test_create_managers(gl, fake_manager): class ObjectWithManager(helpers.FakeObject): fakes: "FakeManager" > obj = ObjectWithManager(fake_manager, {"foo": "bar"}) tests/unit/base/test_rest_object.py:136: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'ObjectWithManager' object has no attribute '__annotations__'. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError ________________________________ test_equality _________________________________ fake_manager = def test_equality(fake_manager): > obj1 = helpers.FakeObject(fake_manager, {"id": "foo"}) tests/unit/base/test_rest_object.py:144: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'FakeObject' object has no attribute '__annotations__'. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError ___________________________ test_equality_custom_id ____________________________ fake_manager = def test_equality_custom_id(fake_manager): > obj1 = helpers.OtherFakeObject(fake_manager, {"foo": "bar"}) tests/unit/base/test_rest_object.py:151: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'OtherFakeObject' object has no attribute '__annotations__'. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError _____________________________ test_equality_no_id ______________________________ fake_manager = def test_equality_no_id(fake_manager): > obj1 = helpers.FakeObject(fake_manager, {"attr1": "foo"}) tests/unit/base/test_rest_object.py:157: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'FakeObject' object has no attribute '__annotations__'. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError _______________________________ test_inequality ________________________________ fake_manager = def test_inequality(fake_manager): > obj1 = helpers.FakeObject(fake_manager, {"id": "foo"}) tests/unit/base/test_rest_object.py:163: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'FakeObject' object has no attribute '__annotations__'. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError ____________________________ test_inequality_no_id _____________________________ fake_manager = def test_inequality_no_id(fake_manager): > obj1 = helpers.FakeObject(fake_manager, {"attr1": "foo"}) tests/unit/base/test_rest_object.py:169: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'FakeObject' object has no attribute '__annotations__'. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError _______________________ test_equality_with_other_objects _______________________ fake_manager = def test_equality_with_other_objects(fake_manager): > obj1 = helpers.FakeObject(fake_manager, {"id": "foo"}) tests/unit/base/test_rest_object.py:176: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'FakeObject' object has no attribute '__annotations__'. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError _______________________________ test_dunder_str ________________________________ fake_manager = def test_dunder_str(fake_manager): > fake_object = helpers.FakeObject(fake_manager, {"attr1": "foo"}) tests/unit/base/test_rest_object.py:182: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'FakeObject' object has no attribute '__annotations__'. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError ______________________ test_dunder_repr[GetMixin with id] ______________________ fake_manager = id_attr = 'id', repr_attr = None, attrs = {'id': 1} expected_repr = '' @pytest.mark.parametrize( "id_attr,repr_attr, attrs, expected_repr", [ ("id", None, {"id": 1}, ""), ( "id", "name", {"id": 1, "name": "fake"}, "", ), ("name", "name", {"name": "fake"}, ""), ("id", "name", {"id": 1}, ""), (None, None, {}, ""), (None, "name", {"name": "fake"}, ""), (None, "name", {}, ""), ], ids=[ "GetMixin with id", "GetMixin with id and _repr_attr", "GetMixin with _repr_attr matching _id_attr", "GetMixin with _repr_attr without _repr_attr value defined", "GetWithoutIDMixin", "GetWithoutIDMixin with _repr_attr", "GetWithoutIDMixin with _repr_attr without _repr_attr value defined", ], ) def test_dunder_repr(fake_manager, id_attr, repr_attr, attrs, expected_repr): class ReprObject(helpers.FakeObject): _id_attr = id_attr _repr_attr = repr_attr > fake_object = ReprObject(fake_manager, attrs) tests/unit/base/test_rest_object.py:219: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'ReprObject' object has no attribute '__annotations__'. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError ______________ test_dunder_repr[GetMixin with id and _repr_attr] _______________ fake_manager = id_attr = 'id', repr_attr = 'name', attrs = {'id': 1, 'name': 'fake'} expected_repr = '' @pytest.mark.parametrize( "id_attr,repr_attr, attrs, expected_repr", [ ("id", None, {"id": 1}, ""), ( "id", "name", {"id": 1, "name": "fake"}, "", ), ("name", "name", {"name": "fake"}, ""), ("id", "name", {"id": 1}, ""), (None, None, {}, ""), (None, "name", {"name": "fake"}, ""), (None, "name", {}, ""), ], ids=[ "GetMixin with id", "GetMixin with id and _repr_attr", "GetMixin with _repr_attr matching _id_attr", "GetMixin with _repr_attr without _repr_attr value defined", "GetWithoutIDMixin", "GetWithoutIDMixin with _repr_attr", "GetWithoutIDMixin with _repr_attr without _repr_attr value defined", ], ) def test_dunder_repr(fake_manager, id_attr, repr_attr, attrs, expected_repr): class ReprObject(helpers.FakeObject): _id_attr = id_attr _repr_attr = repr_attr > fake_object = ReprObject(fake_manager, attrs) tests/unit/base/test_rest_object.py:219: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'ReprObject' object has no attribute '__annotations__'. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError _________ test_dunder_repr[GetMixin with _repr_attr matching _id_attr] _________ fake_manager = id_attr = 'name', repr_attr = 'name', attrs = {'name': 'fake'} expected_repr = '' @pytest.mark.parametrize( "id_attr,repr_attr, attrs, expected_repr", [ ("id", None, {"id": 1}, ""), ( "id", "name", {"id": 1, "name": "fake"}, "", ), ("name", "name", {"name": "fake"}, ""), ("id", "name", {"id": 1}, ""), (None, None, {}, ""), (None, "name", {"name": "fake"}, ""), (None, "name", {}, ""), ], ids=[ "GetMixin with id", "GetMixin with id and _repr_attr", "GetMixin with _repr_attr matching _id_attr", "GetMixin with _repr_attr without _repr_attr value defined", "GetWithoutIDMixin", "GetWithoutIDMixin with _repr_attr", "GetWithoutIDMixin with _repr_attr without _repr_attr value defined", ], ) def test_dunder_repr(fake_manager, id_attr, repr_attr, attrs, expected_repr): class ReprObject(helpers.FakeObject): _id_attr = id_attr _repr_attr = repr_attr > fake_object = ReprObject(fake_manager, attrs) tests/unit/base/test_rest_object.py:219: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'ReprObject' object has no attribute '__annotations__'. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError _ test_dunder_repr[GetMixin with _repr_attr without _repr_attr value defined] __ fake_manager = id_attr = 'id', repr_attr = 'name', attrs = {'id': 1} expected_repr = '' @pytest.mark.parametrize( "id_attr,repr_attr, attrs, expected_repr", [ ("id", None, {"id": 1}, ""), ( "id", "name", {"id": 1, "name": "fake"}, "", ), ("name", "name", {"name": "fake"}, ""), ("id", "name", {"id": 1}, ""), (None, None, {}, ""), (None, "name", {"name": "fake"}, ""), (None, "name", {}, ""), ], ids=[ "GetMixin with id", "GetMixin with id and _repr_attr", "GetMixin with _repr_attr matching _id_attr", "GetMixin with _repr_attr without _repr_attr value defined", "GetWithoutIDMixin", "GetWithoutIDMixin with _repr_attr", "GetWithoutIDMixin with _repr_attr without _repr_attr value defined", ], ) def test_dunder_repr(fake_manager, id_attr, repr_attr, attrs, expected_repr): class ReprObject(helpers.FakeObject): _id_attr = id_attr _repr_attr = repr_attr > fake_object = ReprObject(fake_manager, attrs) tests/unit/base/test_rest_object.py:219: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'ReprObject' object has no attribute '__annotations__'. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError _____________________ test_dunder_repr[GetWithoutIDMixin] ______________________ fake_manager = id_attr = None, repr_attr = None, attrs = {}, expected_repr = '' @pytest.mark.parametrize( "id_attr,repr_attr, attrs, expected_repr", [ ("id", None, {"id": 1}, ""), ( "id", "name", {"id": 1, "name": "fake"}, "", ), ("name", "name", {"name": "fake"}, ""), ("id", "name", {"id": 1}, ""), (None, None, {}, ""), (None, "name", {"name": "fake"}, ""), (None, "name", {}, ""), ], ids=[ "GetMixin with id", "GetMixin with id and _repr_attr", "GetMixin with _repr_attr matching _id_attr", "GetMixin with _repr_attr without _repr_attr value defined", "GetWithoutIDMixin", "GetWithoutIDMixin with _repr_attr", "GetWithoutIDMixin with _repr_attr without _repr_attr value defined", ], ) def test_dunder_repr(fake_manager, id_attr, repr_attr, attrs, expected_repr): class ReprObject(helpers.FakeObject): _id_attr = id_attr _repr_attr = repr_attr > fake_object = ReprObject(fake_manager, attrs) tests/unit/base/test_rest_object.py:219: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'ReprObject' object has no attribute '__annotations__'. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError _____________ test_dunder_repr[GetWithoutIDMixin with _repr_attr] ______________ fake_manager = id_attr = None, repr_attr = 'name', attrs = {'name': 'fake'} expected_repr = '' @pytest.mark.parametrize( "id_attr,repr_attr, attrs, expected_repr", [ ("id", None, {"id": 1}, ""), ( "id", "name", {"id": 1, "name": "fake"}, "", ), ("name", "name", {"name": "fake"}, ""), ("id", "name", {"id": 1}, ""), (None, None, {}, ""), (None, "name", {"name": "fake"}, ""), (None, "name", {}, ""), ], ids=[ "GetMixin with id", "GetMixin with id and _repr_attr", "GetMixin with _repr_attr matching _id_attr", "GetMixin with _repr_attr without _repr_attr value defined", "GetWithoutIDMixin", "GetWithoutIDMixin with _repr_attr", "GetWithoutIDMixin with _repr_attr without _repr_attr value defined", ], ) def test_dunder_repr(fake_manager, id_attr, repr_attr, attrs, expected_repr): class ReprObject(helpers.FakeObject): _id_attr = id_attr _repr_attr = repr_attr > fake_object = ReprObject(fake_manager, attrs) tests/unit/base/test_rest_object.py:219: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'ReprObject' object has no attribute '__annotations__'. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError _ test_dunder_repr[GetWithoutIDMixin with _repr_attr without _repr_attr value defined] _ fake_manager = id_attr = None, repr_attr = 'name', attrs = {}, expected_repr = '' @pytest.mark.parametrize( "id_attr,repr_attr, attrs, expected_repr", [ ("id", None, {"id": 1}, ""), ( "id", "name", {"id": 1, "name": "fake"}, "", ), ("name", "name", {"name": "fake"}, ""), ("id", "name", {"id": 1}, ""), (None, None, {}, ""), (None, "name", {"name": "fake"}, ""), (None, "name", {}, ""), ], ids=[ "GetMixin with id", "GetMixin with id and _repr_attr", "GetMixin with _repr_attr matching _id_attr", "GetMixin with _repr_attr without _repr_attr value defined", "GetWithoutIDMixin", "GetWithoutIDMixin with _repr_attr", "GetWithoutIDMixin with _repr_attr without _repr_attr value defined", ], ) def test_dunder_repr(fake_manager, id_attr, repr_attr, attrs, expected_repr): class ReprObject(helpers.FakeObject): _id_attr = id_attr _repr_attr = repr_attr > fake_object = ReprObject(fake_manager, attrs) tests/unit/base/test_rest_object.py:219: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'ReprObject' object has no attribute '__annotations__'. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError _________________________________ test_pformat _________________________________ fake_manager = def test_pformat(fake_manager): > fake_object = helpers.FakeObject( fake_manager, {"attr1": "foo" * 10, "ham": "eggs" * 15} ) tests/unit/base/test_rest_object.py:225: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'FakeObject' object has no attribute '__annotations__'. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError _________________________________ test_pprint __________________________________ capfd = <_pytest.capture.CaptureFixture object at 0x7fb4679816a0> fake_manager = def test_pprint(capfd, fake_manager): > fake_object = helpers.FakeObject( fake_manager, {"attr1": "foo" * 10, "ham": "eggs" * 15} ) tests/unit/base/test_rest_object.py:236: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'FakeObject' object has no attribute '__annotations__'. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError __________________________________ test_repr ___________________________________ fake_manager = def test_repr(fake_manager): attrs = {"attr1": "foo"} > obj = helpers.FakeObject(fake_manager, attrs) tests/unit/base/test_rest_object.py:252: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'FakeObject' object has no attribute '__annotations__'. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError ________________________________ test_get_mixin ________________________________ gl = @responses.activate def test_get_mixin(gl): class M(GetMixin, FakeManager): pass url = "http://localhost/api/v4/tests/42" responses.add( method=responses.GET, url=url, json={"id": 42, "foo": "bar"}, status=200, match=[responses.matchers.query_param_matcher({})], ) mgr = M(gl) > obj = mgr.get(42) tests/unit/mixins/test_mixin_methods.py:48: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/exceptions.py:344: in wrapped_f return f(*args, **kwargs) gitlab/mixins.py:126: in get return self._obj_cls(self, server_data, lazy=lazy) gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'FakeObject' object has no attribute '__annotations__'. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError _____________________________ test_get_mixin_lazy ______________________________ gl = def test_get_mixin_lazy(gl): class M(GetMixin, FakeManager): pass url = "http://localhost/api/v4/tests/42" mgr = M(gl) with responses.RequestsMock(assert_all_requests_are_fired=False) as rsps: rsps.add( method=responses.GET, url=url, json={"id": 42, "foo": "bar"}, status=200, match=[responses.matchers.query_param_matcher({})], ) > obj = mgr.get(42, lazy=True) tests/unit/mixins/test_mixin_methods.py:71: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/exceptions.py:344: in wrapped_f return f(*args, **kwargs) gitlab/mixins.py:122: in get return self._obj_cls(self, {self._obj_cls._id_attr: id}, lazy=lazy) gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'FakeObject' object has no attribute '__annotations__' E E If you tried to access object attributes returned from the server, E note that E was created as a `lazy` object and was not initialized with any data.. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError ____________________ test_get_mixin_lazy_missing_attribute _____________________ gl = def test_get_mixin_lazy_missing_attribute(gl): class FakeGetManager(GetMixin, FakeManager): pass manager = FakeGetManager(gl) > obj = manager.get(1, lazy=True) tests/unit/mixins/test_mixin_methods.py:85: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/exceptions.py:344: in wrapped_f return f(*args, **kwargs) gitlab/mixins.py:122: in get return self._obj_cls(self, {self._obj_cls._id_attr: id}, lazy=lazy) gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'FakeObject' object has no attribute '__annotations__' E E If you tried to access object attributes returned from the server, E note that E was created as a `lazy` object and was not initialized with any data.. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError ______________________________ test_refresh_mixin ______________________________ gl = @responses.activate def test_refresh_mixin(gl): class TestClass(RefreshMixin, FakeObject): pass url = "http://localhost/api/v4/tests/42" responses.add( method=responses.GET, url=url, json={"id": 42, "foo": "bar"}, status=200, match=[responses.matchers.query_param_matcher({})], ) mgr = FakeManager(gl) > obj = TestClass(mgr, {"id": 42}) tests/unit/mixins/test_mixin_methods.py:133: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'TestClass' object has no attribute '__annotations__'. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError __________________________ test_get_without_id_mixin ___________________________ gl = @responses.activate def test_get_without_id_mixin(gl): class M(GetWithoutIdMixin, FakeManager): pass url = "http://localhost/api/v4/tests" responses.add( method=responses.GET, url=url, json={"foo": "bar"}, status=200, match=[responses.matchers.query_param_matcher({})], ) mgr = M(gl) > obj = mgr.get() tests/unit/mixins/test_mixin_methods.py:156: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gitlab/exceptions.py:344: in wrapped_f return f(*args, **kwargs) gitlab/mixins.py:159: in get return self._obj_cls(self, server_data) gitlab/base.py:78: in __init__ self._create_managers() gitlab/base.py:204: in _create_managers for attr, annotation in sorted(self.__annotations__.items()): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , name = '__annotations__' def __getattr__(self, name: str) -> Any: if name in self.__dict__["_updated_attrs"]: return self.__dict__["_updated_attrs"][name] if name in self.__dict__["_attrs"]: value = self.__dict__["_attrs"][name] # If the value is a list, we copy it in the _updated_attrs dict # because we are not able to detect changes made on the object # (append, insert, pop, ...). Without forcing the attr # creation __setattr__ is never called, the list never ends up # in the _updated_attrs dict, and the update() and save() # method never push the new data to the server. # See https://github.com/python-gitlab/python-gitlab/issues/306 # # note: _parent_attrs will only store simple values (int) so we # don't make this check in the next block. if isinstance(value, list): self.__dict__["_updated_attrs"][name] = value[:] return self.__dict__["_updated_attrs"][name] return value if name in self.__dict__["_parent_attrs"]: return self.__dict__["_parent_attrs"][name] message = f"{type(self).__name__!r} object has no attribute {name!r}" if self._created_from_list: message = ( f"{message}\n\n" + textwrap.fill( f"{self.__class__!r} was created via a list() call and " f"only a subset of the data may be present. To ensure " f"all data is present get the object using a " f"get(object.id) call. For more details, see:" ) + f"\n\n{_URL_ATTRIBUTE_ERROR}" ) elif self._lazy: message = f"{message}\n\n" + textwrap.fill( f"If you tried to access object attributes returned from the server, " f"note that {self.__class__!r} was created as a `lazy` object and was " f"not initialized with any data." ) > raise AttributeError(message) E AttributeError: 'FakeObject' object has no attribute '__annotations__'. Did you mean: '__annotate__'? gitlab/base.py:134: AttributeError _______________________________ test_list_mixin ________________________________ gl = @responses.activate def test_list_mixin(gl): class M(ListMixin, FakeManager): pass url = "http://localhost/api/v4/tests" headers = { "X-Page": "1", "X-Next-Page": "2", "X-Per-Page": "1", "X-Total-Pages": "2", "X-Total": "2", "Link": ("