Warning: Permanently added '2620:52:3:1:dead:beef:cafe:c15b' (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/8582359-epel-9-x86_64 --chroot epel-9-x86_64


Version: 1.2
PID: 8815
Logging PID: 8816
Task:
{'allow_user_ssh': False,
 'appstream': True,
 'background': False,
 'bootstrap': 'on',
 'build_id': 8582359,
 'buildroot_pkgs': [],
 'chroot': 'epel-9-x86_64',
 'enable_net': True,
 'fedora_review': False,
 'git_hash': 'be085b6b9f058ce6a577931dbc313edc6f12771f',
 'git_repo': 'https://copr-dist-git.fedorainfracloud.org/git/elkhan/PyCharm/pycharm-community',
 'isolation': 'default',
 'memory_reqs': 2048,
 'package_name': 'pycharm-community',
 'package_version': '2024.3.2-1',
 'project_dirname': 'PyCharm',
 'project_name': 'PyCharm',
 'project_owner': 'elkhan',
 'repo_priority': None,
 'repos': [{'baseurl': 'https://download.copr.fedorainfracloud.org/results/elkhan/PyCharm/epel-9-x86_64/',
            'id': 'copr_base',
            'name': 'Copr repository',
            'priority': None}],
 'sandbox': 'elkhan/PyCharm--elkhan',
 'source_json': {},
 'source_type': None,
 'ssh_public_keys': None,
 'storage': None,
 'submitter': 'elkhan',
 'tags': [],
 'task_id': '8582359-epel-9-x86_64',
 'timeout': 18000,
 'uses_devel_repo': False,
 'with_opts': [],
 'without_opts': []}

Running: git clone https://copr-dist-git.fedorainfracloud.org/git/elkhan/PyCharm/pycharm-community /var/lib/copr-rpmbuild/workspace/workdir-91ro61dh/pycharm-community --depth 500 --no-single-branch --recursive

cmd: ['git', 'clone', 'https://copr-dist-git.fedorainfracloud.org/git/elkhan/PyCharm/pycharm-community', '/var/lib/copr-rpmbuild/workspace/workdir-91ro61dh/pycharm-community', '--depth', '500', '--no-single-branch', '--recursive']
cwd: .
rc: 0
stdout: 
stderr: Cloning into '/var/lib/copr-rpmbuild/workspace/workdir-91ro61dh/pycharm-community'...

Running: git checkout be085b6b9f058ce6a577931dbc313edc6f12771f --

cmd: ['git', 'checkout', 'be085b6b9f058ce6a577931dbc313edc6f12771f', '--']
cwd: /var/lib/copr-rpmbuild/workspace/workdir-91ro61dh/pycharm-community
rc: 0
stdout: 
stderr: Note: switching to 'be085b6b9f058ce6a577931dbc313edc6f12771f'.

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 <new-branch-name>

Or undo this operation with:

  git switch -

Turn off this advice by setting config variable advice.detachedHead to false

HEAD is now at be085b6 automatic import of pycharm-community

Running: dist-git-client sources

cmd: ['dist-git-client', 'sources']
cwd: /var/lib/copr-rpmbuild/workspace/workdir-91ro61dh/pycharm-community
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 pycharm-community-2024.3.2.tar.gz
/usr/bin/tail: /var/lib/copr-rpmbuild/main.log: file truncated
INFO: Reading stdout from command: curl --help all
INFO: Calling: curl -H Pragma: -o pycharm-community-2024.3.2.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/elkhan/PyCharm/pycharm-community/pycharm-community-2024.3.2.tar.gz/md5/49c553f351415b3f1045966048f4ef43/pycharm-community-2024.3.2.tar.gz
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  751M  100  751M    0     0  16.2M      0  0:00:46  0:00:46 --:--:-- 17.6M
INFO: Reading stdout from command: md5sum pycharm-community-2024.3.2.tar.gz

Running (timeout=18000): unbuffer mock --spec /var/lib/copr-rpmbuild/workspace/workdir-91ro61dh/pycharm-community/pycharm-community.spec --sources /var/lib/copr-rpmbuild/workspace/workdir-91ro61dh/pycharm-community --resultdir /var/lib/copr-rpmbuild/results --uniqueext 1738090619.985866 -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-91ro61dh/pycharm-community/pycharm-community.spec --sources /var/lib/copr-rpmbuild/workspace/workdir-91ro61dh/pycharm-community --resultdir /var/lib/copr-rpmbuild/results --uniqueext 1738090619.985866 -r /var/lib/copr-rpmbuild/results/configs/child.cfg
Start(bootstrap): init plugins
INFO: tmpfs initialized
INFO: selinux enabled
INFO: chroot_scan: initialized
INFO: compress_logs: initialized
Finish(bootstrap): init plugins
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-91ro61dh/pycharm-community/pycharm-community.spec)  Config(rhel+epel-9-x86_64)
Start: clean chroot
Finish: clean chroot
Mock Version: 6.0
INFO: Mock Version: 6.0
Start(bootstrap): chroot init
INFO: mounting tmpfs at /var/lib/mock/rhel+epel-9-x86_64-bootstrap-1738090619.985866/root.
INFO: calling preinit hooks
INFO: enabled root cache
INFO: enabled package manager cache
Start(bootstrap): cleaning package manager metadata
Finish(bootstrap): cleaning package manager metadata
INFO: Package manager dnf4 detected and used (fallback)
Start(bootstrap): installing dnf tooling
No matches found for the following disable plugin patterns: local, spacewalk, versionlock
Updating Subscription Management repositories.
Unable to read consumer identity

This system is not registered with an entitlement server. You can use subscription-manager to register.

Copr repository                                  18 kB/s | 1.6 kB     00:00    
Red Hat Enterprise Linux - BaseOS                20 MB/s |  37 MB     00:01    
Red Hat Enterprise Linux - AppStream            8.1 MB/s | 9.0 MB     00:01    
Red Hat Enterprise Linux - CodeReady Linux Buil 2.6 MB/s | 2.2 MB     00:00    
Extra Packages for Enterprise Linux 9 - x86_64   13 MB/s | 6.5 MB     00:00    
Dependencies resolved.
===============================================================================================
 Package                                    Arch    Version                       Repo     Size
===============================================================================================
Installing:
 python3-dnf                                noarch  4.14.0-17.el9                 baseos  465 k
 python3-dnf-plugins-core                   noarch  4.3.0-16.el9                  baseos  268 k
 subscription-manager                       x86_64  1.29.42-1.el9                 baseos  908 k
Installing dependencies:
 acl                                        x86_64  2.3.1-4.el9                   baseos   75 k
 alternatives                               x86_64  1.24-1.el9_5.1                baseos   42 k
 attr                                       x86_64  2.5.1-3.el9                   baseos   65 k
 audit-libs                                 x86_64  3.1.5-1.el9                   baseos  124 k
 basesystem                                 noarch  11-13.el9                     baseos  8.0 k
 bash                                       x86_64  5.1.8-9.el9                   baseos  1.7 M
 bzip2-libs                                 x86_64  1.0.8-8.el9                   baseos   42 k
 ca-certificates                            noarch  2024.2.69_v8.0.303-91.4.el9_4 baseos  1.0 M
 coreutils                                  x86_64  8.32-36.el9                   baseos  1.2 M
 coreutils-common                           x86_64  8.32-36.el9                   baseos  2.0 M
 cracklib                                   x86_64  2.9.6-27.el9                  baseos   99 k
 cracklib-dicts                             x86_64  2.9.6-27.el9                  baseos  3.6 M
 crypto-policies                            noarch  20240828-2.git626aa59.el9_5   baseos   90 k
 curl                                       x86_64  7.76.1-31.el9                 baseos  297 k
 cyrus-sasl-lib                             x86_64  2.1.27-21.el9                 baseos  774 k
 dbus                                       x86_64  1:1.12.20-8.el9               baseos  7.9 k
 dbus-broker                                x86_64  28-7.el9                      baseos  175 k
 dbus-common                                noarch  1:1.12.20-8.el9               baseos   18 k
 dbus-libs                                  x86_64  1:1.12.20-8.el9               baseos  154 k
 diffutils                                  x86_64  3.7-12.el9                    baseos  402 k
 dmidecode                                  x86_64  1:3.6-1.el9                   baseos  106 k
 dnf-data                                   noarch  4.14.0-17.el9                 baseos   42 k
 elfutils-default-yama-scope                noarch  0.191-4.el9                   baseos   12 k
 elfutils-libelf                            x86_64  0.191-4.el9                   baseos  210 k
 elfutils-libs                              x86_64  0.191-4.el9                   baseos  262 k
 expat                                      x86_64  2.5.0-3.el9_5.1               baseos  119 k
 file-libs                                  x86_64  5.39-16.el9                   baseos  593 k
 filesystem                                 x86_64  3.16-5.el9                    baseos  4.8 M
 gawk                                       x86_64  5.1.0-6.el9                   baseos  1.0 M
 gdbm-libs                                  x86_64  1:1.23-1.el9                  baseos   59 k
 glib2                                      x86_64  2.68.4-14.el9_4.1             baseos  2.6 M
 glibc                                      x86_64  2.34-125.el9_5.1              baseos  2.0 M
 glibc-common                               x86_64  2.34-125.el9_5.1              baseos  308 k
 glibc-minimal-langpack                     x86_64  2.34-125.el9_5.1              baseos   23 k
 gmp                                        x86_64  1:6.2.0-13.el9                baseos  319 k
 gnupg2                                     x86_64  2.3.3-4.el9                   baseos  2.5 M
 gnutls                                     x86_64  3.8.3-4.el9_4                 baseos  1.1 M
 gobject-introspection                      x86_64  1.68.0-11.el9                 baseos  254 k
 gpgme                                      x86_64  1.15.1-6.el9                  baseos  211 k
 grep                                       x86_64  3.6-5.el9                     baseos  273 k
 gzip                                       x86_64  1.12-1.el9                    baseos  167 k
 ima-evm-utils                              x86_64  1.5-2.el9                     baseos   73 k
 iproute                                    x86_64  6.2.0-6.el9_4                 baseos  819 k
 json-c                                     x86_64  0.14-11.el9                   baseos   45 k
 json-glib                                  x86_64  1.6.6-1.el9                   baseos  167 k
 keyutils                                   x86_64  1.6.3-1.el9                   baseos   78 k
 keyutils-libs                              x86_64  1.6.3-1.el9                   baseos   34 k
 kmod-libs                                  x86_64  28-10.el9                     baseos   65 k
 krb5-libs                                  x86_64  1.21.1-4.el9_5                baseos  771 k
 libacl                                     x86_64  2.3.1-4.el9                   baseos   24 k
 libarchive                                 x86_64  3.5.3-4.el9                   baseos  392 k
 libassuan                                  x86_64  2.5.5-3.el9                   baseos   71 k
 libattr                                    x86_64  2.5.1-3.el9                   baseos   20 k
 libblkid                                   x86_64  2.37.4-20.el9                 baseos  109 k
 libbpf                                     x86_64  2:1.4.0-1.el9                 baseos  179 k
 libbrotli                                  x86_64  1.0.9-7.el9_5                 baseos  316 k
 libcap                                     x86_64  2.48-9.el9_2                  baseos   74 k
 libcap-ng                                  x86_64  0.8.2-7.el9                   baseos   36 k
 libcom_err                                 x86_64  1.46.5-5.el9                  baseos   28 k
 libcomps                                   x86_64  0.1.18-1.el9                  baseos   80 k
 libcurl                                    x86_64  7.76.1-31.el9                 baseos  286 k
 libdb                                      x86_64  5.3.28-54.el9                 baseos  737 k
 libdnf                                     x86_64  0.69.0-12.el9                 baseos  665 k
 libdnf-plugin-subscription-manager         x86_64  1.29.42-1.el9                 baseos   44 k
 libeconf                                   x86_64  0.4.1-4.el9                   baseos   30 k
 libevent                                   x86_64  2.1.12-8.el9_4                baseos  266 k
 libfdisk                                   x86_64  2.37.4-20.el9                 baseos  155 k
 libffi                                     x86_64  3.4.2-8.el9                   baseos   40 k
 libgcc                                     x86_64  11.5.0-2.el9                  baseos   91 k
 libgcrypt                                  x86_64  1.10.0-11.el9                 baseos  510 k
 libgomp                                    x86_64  11.5.0-2.el9                  baseos  266 k
 libgpg-error                               x86_64  1.42-5.el9                    baseos  220 k
 libidn2                                    x86_64  2.3.0-7.el9                   baseos  105 k
 libksba                                    x86_64  1.5.1-7.el9                   baseos  157 k
 libmnl                                     x86_64  1.0.4-16.el9_4                baseos   30 k
 libmodulemd                                x86_64  2.13.0-2.el9                  baseos  236 k
 libmount                                   x86_64  2.37.4-20.el9                 baseos  136 k
 libnghttp2                                 x86_64  1.43.0-6.el9                  baseos   75 k
 libpsl                                     x86_64  0.21.1-5.el9                  baseos   66 k
 libpwquality                               x86_64  1.4.4-8.el9                   baseos  123 k
 librepo                                    x86_64  1.14.5-2.el9                  baseos   90 k
 libreport-filesystem                       noarch  2.15.2-6.el9                  baseos   15 k
 librhsm                                    x86_64  0.0.3-9.el9                   baseos   37 k
 libseccomp                                 x86_64  2.5.2-2.el9                   baseos   74 k
 libselinux                                 x86_64  3.6-1.el9                     baseos   88 k
 libselinux-utils                           x86_64  3.6-1.el9                     baseos  194 k
 libsemanage                                x86_64  3.6-2.1.el9_5                 baseos  120 k
 libsepol                                   x86_64  3.6-1.el9                     baseos  331 k
 libsigsegv                                 x86_64  2.13-4.el9                    baseos   30 k
 libsmartcols                               x86_64  2.37.4-20.el9                 baseos   64 k
 libsolv                                    x86_64  0.7.24-3.el9                  baseos  407 k
 libssh                                     x86_64  0.10.4-13.el9                 baseos  220 k
 libssh-config                              noarch  0.10.4-13.el9                 baseos   11 k
 libstdc++                                  x86_64  11.5.0-2.el9                  baseos  742 k
 libtasn1                                   x86_64  4.16.0-8.el9_1                baseos   77 k
 libunistring                               x86_64  0.9.10-15.el9                 baseos  499 k
 libuser                                    x86_64  0.63-15.el9                   baseos  417 k
 libutempter                                x86_64  1.2.1-6.el9                   baseos   30 k
 libuuid                                    x86_64  2.37.4-20.el9                 baseos   30 k
 libverto                                   x86_64  0.3.2-3.el9                   baseos   24 k
 libxcrypt                                  x86_64  4.4.18-3.el9                  baseos  120 k
 libxml2                                    x86_64  2.9.13-6.el9_4                baseos  752 k
 libyaml                                    x86_64  0.2.5-7.el9                   baseos   63 k
 libzstd                                    x86_64  1.5.1-2.el9                   baseos  332 k
 lua-libs                                   x86_64  5.4.4-4.el9                   baseos  132 k
 lz4-libs                                   x86_64  1.9.3-5.el9                   baseos   69 k
 mpfr                                       x86_64  4.1.0-7.el9                   baseos  329 k
 ncurses-base                               noarch  6.2-10.20210508.el9           baseos   99 k
 ncurses-libs                               x86_64  6.2-10.20210508.el9           baseos  332 k
 nettle                                     x86_64  3.9.1-1.el9                   baseos  564 k
 npth                                       x86_64  1.6-8.el9                     baseos   27 k
 openldap                                   x86_64  2.6.6-3.el9                   baseos  286 k
 openssl                                    x86_64  1:3.2.2-6.el9_5               baseos  1.4 M
 openssl-fips-provider                      x86_64  3.0.7-6.el9_5                 baseos  9.4 k
 openssl-fips-provider-so                   x86_64  3.0.7-6.el9_5                 baseos  577 k
 openssl-libs                               x86_64  1:3.2.2-6.el9_5               baseos  2.1 M
 p11-kit                                    x86_64  0.25.3-3.el9_5                baseos  536 k
 p11-kit-trust                              x86_64  0.25.3-3.el9_5                baseos  144 k
 pam                                        x86_64  1.5.1-22.el9_5                baseos  632 k
 passwd                                     x86_64  0.80-12.el9                   baseos  126 k
 pcre                                       x86_64  8.44-4.el9                    baseos  200 k
 pcre2                                      x86_64  10.40-6.el9                   baseos  236 k
 pcre2-syntax                               noarch  10.40-6.el9                   baseos  144 k
 policycoreutils                            x86_64  3.6-2.1.el9                   baseos  246 k
 popt                                       x86_64  1.18-8.el9                    baseos   69 k
 psmisc                                     x86_64  23.4-3.el9                    baseos  247 k
 publicsuffix-list-dafsa                    noarch  20210518-3.el9                baseos   59 k
 python3                                    x86_64  3.9.21-1.el9_5                baseos   30 k
 python3-chardet                            noarch  4.0.0-5.el9                   baseos  243 k
 python3-cloud-what                         x86_64  1.29.42-1.el9                 baseos   68 k
 python3-dateutil                           noarch  1:2.8.1-7.el9                 baseos  305 k
 python3-dbus                               x86_64  1.2.18-2.el9                  baseos  148 k
 python3-decorator                          noarch  4.4.2-6.el9                   baseos   31 k
 python3-gobject-base                       x86_64  3.40.1-6.el9                  baseos  187 k
 python3-gobject-base-noarch                noarch  3.40.1-6.el9                  baseos  165 k
 python3-gpg                                x86_64  1.15.1-6.el9                  baseos  285 k
 python3-hawkey                             x86_64  0.69.0-12.el9                 baseos  106 k
 python3-idna                               noarch  2.10-7.el9_4.1                baseos  106 k
 python3-iniparse                           noarch  0.4-45.el9                    baseos   51 k
 python3-inotify                            noarch  0.9.6-25.el9                  baseos   56 k
 python3-libcomps                           x86_64  0.1.18-1.el9                  baseos   52 k
 python3-libdnf                             x86_64  0.69.0-12.el9                 baseos  785 k
 python3-librepo                            x86_64  1.14.5-2.el9                  baseos   50 k
 python3-libs                               x86_64  3.9.21-1.el9_5                baseos  8.1 M
 python3-pip-wheel                          noarch  21.3.1-1.el9                  baseos  1.1 M
 python3-pysocks                            noarch  1.7.1-12.el9                  baseos   38 k
 python3-requests                           noarch  2.25.1-8.el9                  baseos  129 k
 python3-rpm                                x86_64  4.16.1.3-34.el9               baseos   68 k
 python3-setuptools                         noarch  53.0.0-13.el9                 baseos  947 k
 python3-setuptools-wheel                   noarch  53.0.0-13.el9                 baseos  469 k
 python3-six                                noarch  1.15.0-9.el9                  baseos   40 k
 python3-subscription-manager-rhsm          x86_64  1.29.42-1.el9                 baseos  153 k
 python3-systemd                            x86_64  234-19.el9                    baseos   93 k
 python3-urllib3                            noarch  1.26.5-6.el9                  baseos  219 k
 readline                                   x86_64  8.1-4.el9                     baseos  215 k
 redhat-release                             x86_64  9.5-0.6.el9                   baseos   45 k
 rpm                                        x86_64  4.16.1.3-34.el9               baseos  541 k
 rpm-build-libs                             x86_64  4.16.1.3-34.el9               baseos   90 k
 rpm-libs                                   x86_64  4.16.1.3-34.el9               baseos  311 k
 rpm-plugin-selinux                         x86_64  4.16.1.3-34.el9               baseos   18 k
 rpm-sign-libs                              x86_64  4.16.1.3-34.el9               baseos   22 k
 sed                                        x86_64  4.8-9.el9                     baseos  309 k
 selinux-policy                             noarch  38.1.45-3.el9_5               baseos   51 k
 selinux-policy-targeted                    noarch  38.1.45-3.el9_5               baseos  6.9 M
 setup                                      noarch  2.13.7-10.el9                 baseos  150 k
 shadow-utils                               x86_64  2:4.9-10.el9_5                baseos  1.2 M
 sqlite-libs                                x86_64  3.34.1-7.el9_3                baseos  622 k
 subscription-manager-rhsm-certificates     noarch  20220623-1.el9                baseos   22 k
 systemd                                    x86_64  252-46.el9_5.2                baseos  4.2 M
 systemd-libs                               x86_64  252-46.el9_5.2                baseos  684 k
 systemd-pam                                x86_64  252-46.el9_5.2                baseos  287 k
 systemd-rpm-macros                         noarch  252-46.el9_5.2                baseos   75 k
 tpm2-tss                                   x86_64  3.2.3-1.el9                   baseos  607 k
 tzdata                                     noarch  2024b-2.el9                   baseos  841 k
 usermode                                   x86_64  1.114-5.el9                   baseos  192 k
 util-linux                                 x86_64  2.37.4-20.el9                 baseos  2.3 M
 util-linux-core                            x86_64  2.37.4-20.el9                 baseos  468 k
 virt-what                                  x86_64  1.25-10.el9                   baseos   45 k
 which                                      x86_64  2.21-29.el9                   baseos   45 k
 xz-libs                                    x86_64  5.2.5-8.el9_0                 baseos   94 k
 zlib                                       x86_64  1.2.11-40.el9                 baseos   93 k

Transaction Summary
===============================================================================================
Install  184 Packages

Total download size: 85 M
Installed size: 260 M
Downloading Packages:
(1/184): basesystem-11-13.el9.noarch.rpm         25 kB/s | 8.0 kB     00:00    
(2/184): bzip2-libs-1.0.8-8.el9.x86_64.rpm      114 kB/s |  42 kB     00:00    
(3/184): attr-2.5.1-3.el9.x86_64.rpm            111 kB/s |  65 kB     00:00    
(4/184): cracklib-2.9.6-27.el9.x86_64.rpm       366 kB/s |  99 kB     00:00    
(5/184): gpgme-1.15.1-6.el9.x86_64.rpm          876 kB/s | 211 kB     00:00    
(6/184): json-c-0.14-11.el9.x86_64.rpm          163 kB/s |  45 kB     00:00    
(7/184): json-glib-1.6.6-1.el9.x86_64.rpm       545 kB/s | 167 kB     00:00    
(8/184): grep-3.6-5.el9.x86_64.rpm              791 kB/s | 273 kB     00:00    
(9/184): libassuan-2.5.5-3.el9.x86_64.rpm       258 kB/s |  71 kB     00:00    
(10/184): libattr-2.5.1-3.el9.x86_64.rpm         84 kB/s |  20 kB     00:00    
(11/184): libcap-ng-0.8.2-7.el9.x86_64.rpm      131 kB/s |  36 kB     00:00    
(12/184): libgpg-error-1.42-5.el9.x86_64.rpm    1.5 MB/s | 220 kB     00:00    
(13/184): libidn2-2.3.0-7.el9.x86_64.rpm        916 kB/s | 105 kB     00:00    
(14/184): libcomps-0.1.18-1.el9.x86_64.rpm      333 kB/s |  80 kB     00:00    
(15/184): libmodulemd-2.13.0-2.el9.x86_64.rpm   1.3 MB/s | 236 kB     00:00    
(16/184): libpwquality-1.4.4-8.el9.x86_64.rpm   716 kB/s | 123 kB     00:00    
(17/184): libpsl-0.21.1-5.el9.x86_64.rpm        203 kB/s |  66 kB     00:00    
(18/184): libreport-filesystem-2.15.2-6.el9.noa  83 kB/s |  15 kB     00:00    
(19/184): libseccomp-2.5.2-2.el9.x86_64.rpm     244 kB/s |  74 kB     00:00    
(20/184): libsigsegv-2.13-4.el9.x86_64.rpm      123 kB/s |  30 kB     00:00    
(21/184): libunistring-0.9.10-15.el9.x86_64.rpm 1.8 MB/s | 499 kB     00:00    
(22/184): libverto-0.3.2-3.el9.x86_64.rpm        78 kB/s |  24 kB     00:00    
(23/184): libutempter-1.2.1-6.el9.x86_64.rpm     86 kB/s |  30 kB     00:00    
(24/184): libxcrypt-4.4.18-3.el9.x86_64.rpm     244 kB/s | 120 kB     00:00    
(25/184): libzstd-1.5.1-2.el9.x86_64.rpm        1.0 MB/s | 332 kB     00:00    
(26/184): lz4-libs-1.9.3-5.el9.x86_64.rpm       591 kB/s |  69 kB     00:00    
(27/184): libyaml-0.2.5-7.el9.x86_64.rpm         96 kB/s |  63 kB     00:00    
(28/184): mpfr-4.1.0-7.el9.x86_64.rpm           858 kB/s | 329 kB     00:00    
(29/184): npth-1.6-8.el9.x86_64.rpm              68 kB/s |  27 kB     00:00    
(30/184): publicsuffix-list-dafsa-20210518-3.el 318 kB/s |  59 kB     00:00    
(31/184): popt-1.18-8.el9.x86_64.rpm            321 kB/s |  69 kB     00:00    
(32/184): passwd-0.80-12.el9.x86_64.rpm         253 kB/s | 126 kB     00:00    
(33/184): python3-chardet-4.0.0-5.el9.noarch.rp 619 kB/s | 243 kB     00:00    
(34/184): python3-dbus-1.2.18-2.el9.x86_64.rpm  314 kB/s | 148 kB     00:00    
(35/184): python3-decorator-4.4.2-6.el9.noarch.  60 kB/s |  31 kB     00:00    
(36/184): python3-gpg-1.15.1-6.el9.x86_64.rpm   675 kB/s | 285 kB     00:00    
(37/184): python3-iniparse-0.4-45.el9.noarch.rp 132 kB/s |  51 kB     00:00    
(38/184): python3-inotify-0.9.6-25.el9.noarch.r 157 kB/s |  56 kB     00:00    
(39/184): python3-pysocks-1.7.1-12.el9.noarch.r 143 kB/s |  38 kB     00:00    
(40/184): python3-libcomps-0.1.18-1.el9.x86_64. 165 kB/s |  52 kB     00:00    
(41/184): readline-8.1-4.el9.x86_64.rpm         815 kB/s | 215 kB     00:00    
(42/184): cracklib-dicts-2.9.6-27.el9.x86_64.rp  10 MB/s | 3.6 MB     00:00    
(43/184): sed-4.8-9.el9.x86_64.rpm              833 kB/s | 309 kB     00:00    
(44/184): gawk-5.1.0-6.el9.x86_64.rpm           4.6 MB/s | 1.0 MB     00:00    
(45/184): diffutils-3.7-12.el9.x86_64.rpm       1.1 MB/s | 402 kB     00:00    
(46/184): psmisc-23.4-3.el9.x86_64.rpm          967 kB/s | 247 kB     00:00    
(47/184): subscription-manager-rhsm-certificate 145 kB/s |  22 kB     00:00    
(48/184): xz-libs-5.2.5-8.el9_0.x86_64.rpm      640 kB/s |  94 kB     00:00    
(49/184): python3-six-1.15.0-9.el9.noarch.rpm   146 kB/s |  40 kB     00:00    
(50/184): dbus-broker-28-7.el9.x86_64.rpm       1.5 MB/s | 175 kB     00:00    
(51/184): gzip-1.12-1.el9.x86_64.rpm            983 kB/s | 167 kB     00:00    
(52/184): cyrus-sasl-lib-2.1.27-21.el9.x86_64.r 2.3 MB/s | 774 kB     00:00    
(53/184): libtasn1-4.16.0-8.el9_1.x86_64.rpm    335 kB/s |  77 kB     00:00    
(54/184): python3-gobject-base-noarch-3.40.1-6. 1.4 MB/s | 165 kB     00:00    
(55/184): python3-gobject-base-3.40.1-6.el9.x86 975 kB/s | 187 kB     00:00    
(56/184): gobject-introspection-1.68.0-11.el9.x 1.1 MB/s | 254 kB     00:00    
(57/184): keyutils-1.6.3-1.el9.x86_64.rpm       489 kB/s |  78 kB     00:00    
(58/184): keyutils-libs-1.6.3-1.el9.x86_64.rpm  206 kB/s |  34 kB     00:00    
(59/184): dbus-1.12.20-8.el9.x86_64.rpm          51 kB/s | 7.9 kB     00:00    
(60/184): libcap-2.48-9.el9_2.x86_64.rpm        383 kB/s |  74 kB     00:00    
(61/184): libarchive-3.5.3-4.el9.x86_64.rpm     1.8 MB/s | 392 kB     00:00    
(62/184): dbus-common-1.12.20-8.el9.noarch.rpm  127 kB/s |  18 kB     00:00    
(63/184): gmp-6.2.0-13.el9.x86_64.rpm           2.3 MB/s | 319 kB     00:00    
(64/184): dbus-libs-1.12.20-8.el9.x86_64.rpm    1.0 MB/s | 154 kB     00:00    
(65/184): libffi-3.4.2-8.el9.x86_64.rpm         375 kB/s |  40 kB     00:00    
(66/184): gnupg2-2.3.3-4.el9.x86_64.rpm          16 MB/s | 2.5 MB     00:00    
(67/184): lua-libs-5.4.4-4.el9.x86_64.rpm       782 kB/s | 132 kB     00:00    
(68/184): ncurses-base-6.2-10.20210508.el9.noar 625 kB/s |  99 kB     00:00    
(69/184): python3-dateutil-2.8.1-7.el9.noarch.r 1.8 MB/s | 305 kB     00:00    
(70/184): zlib-1.2.11-40.el9.x86_64.rpm         738 kB/s |  93 kB     00:00    
(71/184): ncurses-libs-6.2-10.20210508.el9.x86_ 1.0 MB/s | 332 kB     00:00    
(72/184): which-2.21-29.el9.x86_64.rpm          212 kB/s |  45 kB     00:00    
(73/184): file-libs-5.39-16.el9.x86_64.rpm      3.9 MB/s | 593 kB     00:00    
(74/184): acl-2.3.1-4.el9.x86_64.rpm            466 kB/s |  75 kB     00:00    
(75/184): bash-5.1.8-9.el9.x86_64.rpm           7.6 MB/s | 1.7 MB     00:00    
(76/184): libacl-2.3.1-4.el9.x86_64.rpm         190 kB/s |  24 kB     00:00    
(77/184): librepo-1.14.5-2.el9.x86_64.rpm       668 kB/s |  90 kB     00:00    
(78/184): libselinux-3.6-1.el9.x86_64.rpm       602 kB/s |  88 kB     00:00    
(79/184): libsepol-3.6-1.el9.x86_64.rpm         2.9 MB/s | 331 kB     00:00    
(80/184): nettle-3.9.1-1.el9.x86_64.rpm         4.6 MB/s | 564 kB     00:00    
(81/184): libselinux-utils-3.6-1.el9.x86_64.rpm 638 kB/s | 194 kB     00:00    
(82/184): iproute-6.2.0-6.el9_4.x86_64.rpm      1.4 MB/s | 819 kB     00:00    
(83/184): openldap-2.6.6-3.el9.x86_64.rpm       2.4 MB/s | 286 kB     00:00    
(84/184): policycoreutils-3.6-2.1.el9.x86_64.rp 1.5 MB/s | 246 kB     00:00    
(85/184): python3-librepo-1.14.5-2.el9.x86_64.r 492 kB/s |  50 kB     00:00    
(86/184): python3-requests-2.25.1-8.el9.noarch. 786 kB/s | 129 kB     00:00    
(87/184): sqlite-libs-3.34.1-7.el9_3.x86_64.rpm 5.2 MB/s | 622 kB     00:00    
(88/184): setup-2.13.7-10.el9.noarch.rpm        716 kB/s | 150 kB     00:00    
(89/184): ca-certificates-2024.2.69_v8.0.303-91 5.6 MB/s | 1.0 MB     00:00    
(90/184): libcom_err-1.46.5-5.el9.x86_64.rpm    278 kB/s |  28 kB     00:00    
(91/184): gnutls-3.8.3-4.el9_4.x86_64.rpm       4.2 MB/s | 1.1 MB     00:00    
(92/184): libevent-2.1.12-8.el9_4.x86_64.rpm    2.1 MB/s | 266 kB     00:00    
(93/184): libmnl-1.0.4-16.el9_4.x86_64.rpm      230 kB/s |  30 kB     00:00    
(94/184): libssh-0.10.4-13.el9.x86_64.rpm       1.8 MB/s | 220 kB     00:00    
(95/184): libssh-config-0.10.4-13.el9.noarch.rp  82 kB/s |  11 kB     00:00    
(96/184): libxml2-2.9.13-6.el9_4.x86_64.rpm     5.7 MB/s | 752 kB     00:00    
(97/184): alternatives-1.24-1.el9_5.1.x86_64.rp 274 kB/s |  42 kB     00:00    
(98/184): python3-idna-2.10-7.el9_4.1.noarch.rp 432 kB/s | 106 kB     00:00    
(99/184): audit-libs-3.1.5-1.el9.x86_64.rpm     745 kB/s | 124 kB     00:00    
(100/184): coreutils-common-8.32-36.el9.x86_64.  14 MB/s | 2.0 MB     00:00    
(101/184): crypto-policies-20240828-2.git626aa5 617 kB/s |  90 kB     00:00    
(102/184): coreutils-8.32-36.el9.x86_64.rpm     5.5 MB/s | 1.2 MB     00:00    
(103/184): dmidecode-3.6-1.el9.x86_64.rpm       968 kB/s | 106 kB     00:00    
(104/184): curl-7.76.1-31.el9.x86_64.rpm        2.5 MB/s | 297 kB     00:00    
(105/184): elfutils-default-yama-scope-0.191-4. 131 kB/s |  12 kB     00:00    
(106/184): elfutils-libelf-0.191-4.el9.x86_64.r 1.7 MB/s | 210 kB     00:00    
(107/184): dnf-data-4.14.0-17.el9.noarch.rpm    204 kB/s |  42 kB     00:00    
(108/184): gdbm-libs-1.23-1.el9.x86_64.rpm      534 kB/s |  59 kB     00:00    
(109/184): elfutils-libs-0.191-4.el9.x86_64.rpm 1.4 MB/s | 262 kB     00:00    
(110/184): filesystem-3.16-5.el9.x86_64.rpm      19 MB/s | 4.8 MB     00:00    
(111/184): glibc-2.34-125.el9_5.1.x86_64.rpm     17 MB/s | 2.0 MB     00:00    
(112/184): glibc-common-2.34-125.el9_5.1.x86_64 2.6 MB/s | 308 kB     00:00    
(113/184): glib2-2.68.4-14.el9_4.1.x86_64.rpm   9.9 MB/s | 2.6 MB     00:00    
(114/184): glibc-minimal-langpack-2.34-125.el9_ 178 kB/s |  23 kB     00:00    
(115/184): ima-evm-utils-1.5-2.el9.x86_64.rpm   758 kB/s |  73 kB     00:00    
(116/184): kmod-libs-28-10.el9.x86_64.rpm       465 kB/s |  65 kB     00:00    
(117/184): libbpf-1.4.0-1.el9.x86_64.rpm        1.8 MB/s | 179 kB     00:00    
(118/184): libcurl-7.76.1-31.el9.x86_64.rpm     2.9 MB/s | 286 kB     00:00    
(119/184): libdb-5.3.28-54.el9.x86_64.rpm       6.9 MB/s | 737 kB     00:00    
(120/184): libdnf-0.69.0-12.el9.x86_64.rpm      6.0 MB/s | 665 kB     00:00    
(121/184): libdnf-plugin-subscription-manager-1 346 kB/s |  44 kB     00:00    
(122/184): libblkid-2.37.4-20.el9.x86_64.rpm    263 kB/s | 109 kB     00:00    
(123/184): libeconf-0.4.1-4.el9.x86_64.rpm      203 kB/s |  30 kB     00:00    
(124/184): libgcc-11.5.0-2.el9.x86_64.rpm       682 kB/s |  91 kB     00:00    
(125/184): libgcrypt-1.10.0-11.el9.x86_64.rpm   4.3 MB/s | 510 kB     00:00    
(126/184): libgomp-11.5.0-2.el9.x86_64.rpm      2.2 MB/s | 266 kB     00:00    
(127/184): libksba-1.5.1-7.el9.x86_64.rpm       1.4 MB/s | 157 kB     00:00    
(128/184): libfdisk-2.37.4-20.el9.x86_64.rpm    436 kB/s | 155 kB     00:00    
(129/184): libmount-2.37.4-20.el9.x86_64.rpm    990 kB/s | 136 kB     00:00    
(130/184): libnghttp2-1.43.0-6.el9.x86_64.rpm   664 kB/s |  75 kB     00:00    
(131/184): libsmartcols-2.37.4-20.el9.x86_64.rp 629 kB/s |  64 kB     00:00    
(132/184): librhsm-0.0.3-9.el9.x86_64.rpm       202 kB/s |  37 kB     00:00    
(133/184): libsolv-0.7.24-3.el9.x86_64.rpm      1.9 MB/s | 407 kB     00:00    
(134/184): libstdc++-11.5.0-2.el9.x86_64.rpm    5.5 MB/s | 742 kB     00:00    
(135/184): libuser-0.63-15.el9.x86_64.rpm       2.7 MB/s | 417 kB     00:00    
(136/184): openssl-3.2.2-6.el9_5.x86_64.rpm      11 MB/s | 1.4 MB     00:00    
(137/184): libuuid-2.37.4-20.el9.x86_64.rpm     225 kB/s |  30 kB     00:00    
(138/184): openssl-fips-provider-3.0.7-6.el9_5.  43 kB/s | 9.4 kB     00:00    
(139/184): openssl-fips-provider-so-3.0.7-6.el9 3.7 MB/s | 577 kB     00:00    
(140/184): openssl-libs-3.2.2-6.el9_5.x86_64.rp  10 MB/s | 2.1 MB     00:00    
(141/184): pcre2-10.40-6.el9.x86_64.rpm         2.1 MB/s | 236 kB     00:00    
(142/184): pcre-8.44-4.el9.x86_64.rpm           1.4 MB/s | 200 kB     00:00    
(143/184): pcre2-syntax-10.40-6.el9.noarch.rpm  1.0 MB/s | 144 kB     00:00    
(144/184): python3-cloud-what-1.29.42-1.el9.x86 670 kB/s |  68 kB     00:00    
(145/184): python3-dnf-4.14.0-17.el9.noarch.rpm 4.3 MB/s | 465 kB     00:00    
(146/184): python3-dnf-plugins-core-4.3.0-16.el 2.4 MB/s | 268 kB     00:00    
(147/184): python3-hawkey-0.69.0-12.el9.x86_64. 893 kB/s | 106 kB     00:00    
(148/184): python3-libdnf-0.69.0-12.el9.x86_64. 4.2 MB/s | 785 kB     00:00    
(149/184): python3-rpm-4.16.1.3-34.el9.x86_64.r 707 kB/s |  68 kB     00:00    
(150/184): python3-pip-wheel-21.3.1-1.el9.noarc 6.0 MB/s | 1.1 MB     00:00    
(151/184): python3-setuptools-53.0.0-13.el9.noa 8.0 MB/s | 947 kB     00:00    
(152/184): python3-subscription-manager-rhsm-1. 1.4 MB/s | 153 kB     00:00    
(153/184): python3-systemd-234-19.el9.x86_64.rp 745 kB/s |  93 kB     00:00    
(154/184): python3-urllib3-1.26.5-6.el9.noarch. 1.5 MB/s | 219 kB     00:00    
(155/184): python3-setuptools-wheel-53.0.0-13.e 1.4 MB/s | 469 kB     00:00    
(156/184): rpm-4.16.1.3-34.el9.x86_64.rpm       5.3 MB/s | 541 kB     00:00    
(157/184): rpm-build-libs-4.16.1.3-34.el9.x86_6 585 kB/s |  90 kB     00:00    
(158/184): redhat-release-9.5-0.6.el9.x86_64.rp 136 kB/s |  45 kB     00:00    
(159/184): rpm-libs-4.16.1.3-34.el9.x86_64.rpm  1.9 MB/s | 311 kB     00:00    
(160/184): rpm-plugin-selinux-4.16.1.3-34.el9.x 109 kB/s |  18 kB     00:00    
(161/184): rpm-sign-libs-4.16.1.3-34.el9.x86_64 219 kB/s |  22 kB     00:00    
(162/184): subscription-manager-1.29.42-1.el9.x 5.3 MB/s | 908 kB     00:00    
(163/184): selinux-policy-38.1.45-3.el9_5.noarc 184 kB/s |  51 kB     00:00    
(164/184): selinux-policy-targeted-38.1.45-3.el  30 MB/s | 6.9 MB     00:00    
(165/184): systemd-libs-252-46.el9_5.2.x86_64.r 4.2 MB/s | 684 kB     00:00    
(166/184): systemd-pam-252-46.el9_5.2.x86_64.rp 1.8 MB/s | 287 kB     00:00    
(167/184): systemd-rpm-macros-252-46.el9_5.2.no 459 kB/s |  75 kB     00:00    
(168/184): tpm2-tss-3.2.3-1.el9.x86_64.rpm      3.9 MB/s | 607 kB     00:00    
(169/184): systemd-252-46.el9_5.2.x86_64.rpm     11 MB/s | 4.2 MB     00:00    
(170/184): tzdata-2024b-2.el9.noarch.rpm        5.5 MB/s | 841 kB     00:00    
(171/184): usermode-1.114-5.el9.x86_64.rpm      1.1 MB/s | 192 kB     00:00    
(172/184): util-linux-2.37.4-20.el9.x86_64.rpm  7.8 MB/s | 2.3 MB     00:00    
(173/184): util-linux-core-2.37.4-20.el9.x86_64 1.9 MB/s | 468 kB     00:00    
(174/184): krb5-libs-1.21.1-4.el9_5.x86_64.rpm  4.8 MB/s | 771 kB     00:00    
(175/184): virt-what-1.25-10.el9.x86_64.rpm     147 kB/s |  45 kB     00:00    
(176/184): expat-2.5.0-3.el9_5.1.x86_64.rpm     1.0 MB/s | 119 kB     00:00    
(177/184): python3-3.9.21-1.el9_5.x86_64.rpm    229 kB/s |  30 kB     00:00    
(178/184): python3-libs-3.9.21-1.el9_5.x86_64.r  27 MB/s | 8.1 MB     00:00    
(179/184): libbrotli-1.0.9-7.el9_5.x86_64.rpm   1.3 MB/s | 316 kB     00:00    
(180/184): pam-1.5.1-22.el9_5.x86_64.rpm        1.5 MB/s | 632 kB     00:00    
(181/184): p11-kit-0.25.3-3.el9_5.x86_64.rpm    3.5 MB/s | 536 kB     00:00    
(182/184): p11-kit-trust-0.25.3-3.el9_5.x86_64. 1.4 MB/s | 144 kB     00:00    
(183/184): libsemanage-3.6-2.1.el9_5.x86_64.rpm 1.2 MB/s | 120 kB     00:00    
(184/184): shadow-utils-4.9-10.el9_5.x86_64.rpm 5.8 MB/s | 1.2 MB     00:00    
--------------------------------------------------------------------------------
Total                                           6.7 MB/s |  85 MB     00:12     
Red Hat Enterprise Linux - BaseOS               3.5 MB/s | 3.6 kB     00:00    
Importing GPG key 0xFD431D51:
 Userid     : "Red Hat, Inc. (release key 2) <security@redhat.com>"
 Fingerprint: 567E 347A D004 4ADE 55BA 8A5F 199E 2F91 FD43 1D51
 From       : /usr/share/distribution-gpg-keys/redhat/RPM-GPG-KEY-redhat9-release
Key imported successfully
Importing GPG key 0x5A6340B3:
 Userid     : "Red Hat, Inc. (auxiliary key 3) <security@redhat.com>"
 Fingerprint: 7E46 2425 8C40 6535 D56D 6F13 5054 E4A4 5A63 40B3
 From       : /usr/share/distribution-gpg-keys/redhat/RPM-GPG-KEY-redhat9-release
Key imported successfully
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
  Running scriptlet: filesystem-3.16-5.el9.x86_64                           1/1 
  Running scriptlet: selinux-policy-targeted-38.1.45-3.el9_5.noarch         1/1 
  Preparing        :                                                        1/1 
  Installing       : libgcc-11.5.0-2.el9.x86_64                           1/184 
  Running scriptlet: libgcc-11.5.0-2.el9.x86_64                           1/184 
  Installing       : tzdata-2024b-2.el9.noarch                            2/184 
  Installing       : subscription-manager-rhsm-certificates-20220623-     3/184 
  Installing       : redhat-release-9.5-0.6.el9.x86_64                    4/184 
  Installing       : setup-2.13.7-10.el9.noarch                           5/184 
warning: /etc/hosts created as /etc/hosts.rpmnew

  Running scriptlet: setup-2.13.7-10.el9.noarch                           5/184 
  Installing       : filesystem-3.16-5.el9.x86_64                         6/184 
  Installing       : basesystem-11-13.el9.noarch                          7/184 
  Installing       : python3-setuptools-wheel-53.0.0-13.el9.noarch        8/184 
  Installing       : pcre2-syntax-10.40-6.el9.noarch                      9/184 
  Installing       : coreutils-common-8.32-36.el9.x86_64                 10/184 
  Installing       : libssh-config-0.10.4-13.el9.noarch                  11/184 
  Installing       : ncurses-base-6.2-10.20210508.el9.noarch             12/184 
  Installing       : ncurses-libs-6.2-10.20210508.el9.x86_64             13/184 
  Installing       : bash-5.1.8-9.el9.x86_64                             14/184 
  Running scriptlet: bash-5.1.8-9.el9.x86_64                             14/184 
  Installing       : glibc-common-2.34-125.el9_5.1.x86_64                15/184 
  Installing       : glibc-minimal-langpack-2.34-125.el9_5.1.x86_64      16/184 
  Running scriptlet: glibc-2.34-125.el9_5.1.x86_64                       17/184 
  Installing       : glibc-2.34-125.el9_5.1.x86_64                       17/184 
  Running scriptlet: glibc-2.34-125.el9_5.1.x86_64                       17/184 
warning: posix.fork(): .fork(), .exec(), .wait() and .redirect2null() are deprecated, use rpm.spawn() or rpm.execute() instead
warning: posix.wait(): .fork(), .exec(), .wait() and .redirect2null() are deprecated, use rpm.spawn() or rpm.execute() instead
warning: posix.exec(): .fork(), .exec(), .wait() and .redirect2null() are deprecated, use rpm.spawn() or rpm.execute() instead
warning: posix.fork(): .fork(), .exec(), .wait() and .redirect2null() are deprecated, use rpm.spawn() or rpm.execute() instead
warning: posix.wait(): .fork(), .exec(), .wait() and .redirect2null() are deprecated, use rpm.spawn() or rpm.execute() instead
warning: posix.exec(): .fork(), .exec(), .wait() and .redirect2null() are deprecated, use rpm.spawn() or rpm.execute() instead
  Installing       : zlib-1.2.11-40.el9.x86_64                           18/184 
  Installing       : xz-libs-5.2.5-8.el9_0.x86_64                        19/184 
  Installing       : bzip2-libs-1.0.8-8.el9.x86_64                       20/184 
  Installing       : libzstd-1.5.1-2.el9.x86_64                          21/184 
  Installing       : libxcrypt-4.4.18-3.el9.x86_64                       22/184 
  Installing       : libcap-2.48-9.el9_2.x86_64                          23/184 
  Installing       : sqlite-libs-3.34.1-7.el9_3.x86_64                   24/184 
  Installing       : popt-1.18-8.el9.x86_64                              25/184 
  Installing       : libuuid-2.37.4-20.el9.x86_64                        26/184 
  Installing       : libgpg-error-1.42-5.el9.x86_64                      27/184 
  Installing       : libffi-3.4.2-8.el9.x86_64                           28/184 
  Installing       : elfutils-libelf-0.191-4.el9.x86_64                  29/184 
  Installing       : libxml2-2.9.13-6.el9_4.x86_64                       30/184 
  Installing       : libattr-2.5.1-3.el9.x86_64                          31/184 
  Installing       : libacl-2.3.1-4.el9.x86_64                           32/184 
  Installing       : readline-8.1-4.el9.x86_64                           33/184 
  Installing       : lua-libs-5.4.4-4.el9.x86_64                         34/184 
  Installing       : libsepol-3.6-1.el9.x86_64                           35/184 
  Installing       : libsmartcols-2.37.4-20.el9.x86_64                   36/184 
  Installing       : crypto-policies-20240828-2.git626aa59.el9_5.noar    37/184 
  Running scriptlet: crypto-policies-20240828-2.git626aa59.el9_5.noar    37/184 
  Installing       : libgcrypt-1.10.0-11.el9.x86_64                      38/184 
  Installing       : json-c-0.14-11.el9.x86_64                           39/184 
  Installing       : libcap-ng-0.8.2-7.el9.x86_64                        40/184 
  Installing       : audit-libs-3.1.5-1.el9.x86_64                       41/184 
  Installing       : libunistring-0.9.10-15.el9.x86_64                   42/184 
  Installing       : libidn2-2.3.0-7.el9.x86_64                          43/184 
  Installing       : lz4-libs-1.9.3-5.el9.x86_64                         44/184 
  Installing       : libtasn1-4.16.0-8.el9_1.x86_64                      45/184 
  Installing       : p11-kit-0.25.3-3.el9_5.x86_64                       46/184 
  Installing       : keyutils-libs-1.6.3-1.el9.x86_64                    47/184 
  Installing       : gmp-1:6.2.0-13.el9.x86_64                           48/184 
  Installing       : libcom_err-1.46.5-5.el9.x86_64                      49/184 
  Installing       : dmidecode-1:3.6-1.el9.x86_64                        50/184 
  Installing       : libstdc++-11.5.0-2.el9.x86_64                       51/184 
  Installing       : pcre2-10.40-6.el9.x86_64                            52/184 
  Installing       : libselinux-3.6-1.el9.x86_64                         53/184 
  Installing       : sed-4.8-9.el9.x86_64                                54/184 
  Installing       : expat-2.5.0-3.el9_5.1.x86_64                        55/184 
  Installing       : libselinux-utils-3.6-1.el9.x86_64                   56/184 
  Installing       : libsemanage-3.6-2.1.el9_5.x86_64                    57/184 
  Installing       : shadow-utils-2:4.9-10.el9_5.x86_64                  58/184 
  Installing       : libassuan-2.5.5-3.el9.x86_64                        59/184 
  Installing       : file-libs-5.39-16.el9.x86_64                        60/184 
  Installing       : libsigsegv-2.13-4.el9.x86_64                        61/184 
  Installing       : gdbm-libs-1:1.23-1.el9.x86_64                       62/184 
  Installing       : libdb-5.3.28-54.el9.x86_64                          63/184 
  Installing       : pcre-8.44-4.el9.x86_64                              64/184 
  Installing       : grep-3.6-5.el9.x86_64                               65/184 
  Running scriptlet: libutempter-1.2.1-6.el9.x86_64                      66/184 
  Installing       : libutempter-1.2.1-6.el9.x86_64                      66/184 
  Installing       : libcomps-0.1.18-1.el9.x86_64                        67/184 
  Installing       : mpfr-4.1.0-7.el9.x86_64                             68/184 
  Installing       : gawk-5.1.0-6.el9.x86_64                             69/184 
  Installing       : keyutils-1.6.3-1.el9.x86_64                         70/184 
  Installing       : acl-2.3.1-4.el9.x86_64                              71/184 
  Installing       : attr-2.5.1-3.el9.x86_64                             72/184 
  Installing       : libbpf-2:1.4.0-1.el9.x86_64                         73/184 
  Installing       : libksba-1.5.1-7.el9.x86_64                          74/184 
  Installing       : libseccomp-2.5.2-2.el9.x86_64                       75/184 
  Installing       : libverto-0.3.2-3.el9.x86_64                         76/184 
  Installing       : libyaml-0.2.5-7.el9.x86_64                          77/184 
  Installing       : npth-1.6-8.el9.x86_64                               78/184 
  Installing       : diffutils-3.7-12.el9.x86_64                         79/184 
  Installing       : psmisc-23.4-3.el9.x86_64                            80/184 
  Installing       : which-2.21-29.el9.x86_64                            81/184 
  Installing       : nettle-3.9.1-1.el9.x86_64                           82/184 
  Installing       : libmnl-1.0.4-16.el9_4.x86_64                        83/184 
  Installing       : iproute-6.2.0-6.el9_4.x86_64                        84/184 
  Installing       : alternatives-1.24-1.el9_5.1.x86_64                  85/184 
  Installing       : p11-kit-trust-0.25.3-3.el9_5.x86_64                 86/184 
  Running scriptlet: p11-kit-trust-0.25.3-3.el9_5.x86_64                 86/184 
  Installing       : openssl-fips-provider-so-3.0.7-6.el9_5.x86_64       87/184 
  Installing       : openssl-fips-provider-3.0.7-6.el9_5.x86_64          88/184 
  Installing       : openssl-libs-1:3.2.2-6.el9_5.x86_64                 89/184 
  Installing       : coreutils-8.32-36.el9.x86_64                        90/184 
  Running scriptlet: ca-certificates-2024.2.69_v8.0.303-91.4.el9_4.no    91/184 
  Installing       : ca-certificates-2024.2.69_v8.0.303-91.4.el9_4.no    91/184 
  Running scriptlet: ca-certificates-2024.2.69_v8.0.303-91.4.el9_4.no    91/184 
  Installing       : systemd-libs-252-46.el9_5.2.x86_64                  92/184 
  Running scriptlet: systemd-libs-252-46.el9_5.2.x86_64                  92/184 
  Installing       : libblkid-2.37.4-20.el9.x86_64                       93/184 
  Running scriptlet: libblkid-2.37.4-20.el9.x86_64                       93/184 
  Installing       : libmount-2.37.4-20.el9.x86_64                       94/184 
  Installing       : krb5-libs-1.21.1-4.el9_5.x86_64                     95/184 
  Installing       : libfdisk-2.37.4-20.el9.x86_64                       96/184 
  Installing       : gnutls-3.8.3-4.el9_4.x86_64                         97/184 
  Installing       : glib2-2.68.4-14.el9_4.1.x86_64                      98/184 
  Installing       : json-glib-1.6.6-1.el9.x86_64                        99/184 
  Installing       : librhsm-0.0.3-9.el9.x86_64                         100/184 
  Installing       : gobject-introspection-1.68.0-11.el9.x86_64         101/184 
  Installing       : cyrus-sasl-lib-2.1.27-21.el9.x86_64                102/184 
  Installing       : libssh-0.10.4-13.el9.x86_64                        103/184 
  Installing       : util-linux-core-2.37.4-20.el9.x86_64               104/184 
  Running scriptlet: util-linux-core-2.37.4-20.el9.x86_64               104/184 
  Installing       : dbus-libs-1:1.12.20-8.el9.x86_64                   105/184 
  Installing       : python3-pip-wheel-21.3.1-1.el9.noarch              106/184 
  Installing       : python3-libs-3.9.21-1.el9_5.x86_64                 107/184 
  Installing       : python3-3.9.21-1.el9_5.x86_64                      108/184 
  Installing       : python3-six-1.15.0-9.el9.noarch                    109/184 
  Installing       : python3-dateutil-1:2.8.1-7.el9.noarch              110/184 
  Installing       : python3-iniparse-0.4-45.el9.noarch                 111/184 
  Installing       : python3-dbus-1.2.18-2.el9.x86_64                   112/184 
  Installing       : python3-gobject-base-noarch-3.40.1-6.el9.noarch    113/184 
  Installing       : python3-gobject-base-3.40.1-6.el9.x86_64           114/184 
  Installing       : python3-idna-2.10-7.el9_4.1.noarch                 115/184 
  Installing       : python3-setuptools-53.0.0-13.el9.noarch            116/184 
  Installing       : python3-inotify-0.9.6-25.el9.noarch                117/184 
  Installing       : python3-chardet-4.0.0-5.el9.noarch                 118/184 
  Installing       : python3-decorator-4.4.2-6.el9.noarch               119/184 
  Installing       : python3-libcomps-0.1.18-1.el9.x86_64               120/184 
  Installing       : python3-pysocks-1.7.1-12.el9.noarch                121/184 
  Installing       : python3-urllib3-1.26.5-6.el9.noarch                122/184 
  Installing       : python3-requests-2.25.1-8.el9.noarch               123/184 
  Installing       : python3-cloud-what-1.29.42-1.el9.x86_64            124/184 
  Installing       : python3-systemd-234-19.el9.x86_64                  125/184 
  Installing       : gzip-1.12-1.el9.x86_64                             126/184 
  Installing       : cracklib-2.9.6-27.el9.x86_64                       127/184 
  Installing       : cracklib-dicts-2.9.6-27.el9.x86_64                 128/184 
  Installing       : openssl-1:3.2.2-6.el9_5.x86_64                     129/184 
  Installing       : libarchive-3.5.3-4.el9.x86_64                      130/184 
  Installing       : libevent-2.1.12-8.el9_4.x86_64                     131/184 
  Installing       : openldap-2.6.6-3.el9.x86_64                        132/184 
  Installing       : gnupg2-2.3.3-4.el9.x86_64                          133/184 
  Installing       : gpgme-1.15.1-6.el9.x86_64                          134/184 
  Installing       : python3-gpg-1.15.1-6.el9.x86_64                    135/184 
  Installing       : kmod-libs-28-10.el9.x86_64                         136/184 
  Installing       : libeconf-0.4.1-4.el9.x86_64                        137/184 
  Installing       : libpwquality-1.4.4-8.el9.x86_64                    138/184 
  Installing       : pam-1.5.1-22.el9_5.x86_64                          139/184 
  Installing       : util-linux-2.37.4-20.el9.x86_64                    140/184 
  Installing       : libuser-0.63-15.el9.x86_64                         141/184 
  Installing       : passwd-0.80-12.el9.x86_64                          142/184 
  Installing       : usermode-1.114-5.el9.x86_64                        143/184 
  Installing       : virt-what-1.25-10.el9.x86_64                       144/184 
  Installing       : libgomp-11.5.0-2.el9.x86_64                        145/184 
  Installing       : libnghttp2-1.43.0-6.el9.x86_64                     146/184 
  Installing       : libbrotli-1.0.9-7.el9_5.x86_64                     147/184 
  Installing       : elfutils-default-yama-scope-0.191-4.el9.noarch     148/184 
  Running scriptlet: elfutils-default-yama-scope-0.191-4.el9.noarch     148/184 
  Installing       : elfutils-libs-0.191-4.el9.x86_64                   149/184 
  Installing       : systemd-rpm-macros-252-46.el9_5.2.noarch           150/184 
  Installing       : publicsuffix-list-dafsa-20210518-3.el9.noarch      151/184 
  Installing       : libpsl-0.21.1-5.el9.x86_64                         152/184 
  Installing       : libcurl-7.76.1-31.el9.x86_64                       153/184 
  Installing       : librepo-1.14.5-2.el9.x86_64                        154/184 
  Installing       : python3-librepo-1.14.5-2.el9.x86_64                155/184 
  Installing       : curl-7.76.1-31.el9.x86_64                          156/184 
  Installing       : rpm-libs-4.16.1.3-34.el9.x86_64                    157/184 
  Installing       : rpm-4.16.1.3-34.el9.x86_64                         158/184 
  Installing       : policycoreutils-3.6-2.1.el9.x86_64                 159/184 
  Running scriptlet: policycoreutils-3.6-2.1.el9.x86_64                 159/184 
  Installing       : selinux-policy-38.1.45-3.el9_5.noarch              160/184 
  Running scriptlet: selinux-policy-38.1.45-3.el9_5.noarch              160/184 
  Running scriptlet: selinux-policy-targeted-38.1.45-3.el9_5.noarch     161/184 
  Installing       : selinux-policy-targeted-38.1.45-3.el9_5.noarch     161/184 
  Running scriptlet: selinux-policy-targeted-38.1.45-3.el9_5.noarch     161/184 
  Installing       : dbus-1:1.12.20-8.el9.x86_64                        162/184 
  Installing       : systemd-pam-252-46.el9_5.2.x86_64                  163/184 
  Running scriptlet: systemd-252-46.el9_5.2.x86_64                      164/184 
  Installing       : systemd-252-46.el9_5.2.x86_64                      164/184 
  Running scriptlet: systemd-252-46.el9_5.2.x86_64                      164/184 
  Installing       : dbus-common-1:1.12.20-8.el9.noarch                 165/184 
  Running scriptlet: dbus-common-1:1.12.20-8.el9.noarch                 165/184 
Created symlink /etc/systemd/system/sockets.target.wants/dbus.socket → /usr/lib/systemd/system/dbus.socket.
Created symlink /etc/systemd/user/sockets.target.wants/dbus.socket → /usr/lib/systemd/user/dbus.socket.

  Running scriptlet: dbus-broker-28-7.el9.x86_64                        166/184 
  Installing       : dbus-broker-28-7.el9.x86_64                        166/184 
  Running scriptlet: dbus-broker-28-7.el9.x86_64                        166/184 
Created symlink /etc/systemd/system/dbus.service → /usr/lib/systemd/system/dbus-broker.service.
Created symlink /etc/systemd/user/dbus.service → /usr/lib/systemd/user/dbus-broker.service.

  Installing       : libmodulemd-2.13.0-2.el9.x86_64                    167/184 
  Installing       : libsolv-0.7.24-3.el9.x86_64                        168/184 
  Installing       : libdnf-0.69.0-12.el9.x86_64                        169/184 
  Installing       : python3-libdnf-0.69.0-12.el9.x86_64                170/184 
  Installing       : python3-hawkey-0.69.0-12.el9.x86_64                171/184 
  Installing       : libdnf-plugin-subscription-manager-1.29.42-1.el9   172/184 
  Installing       : rpm-build-libs-4.16.1.3-34.el9.x86_64              173/184 
  Running scriptlet: tpm2-tss-3.2.3-1.el9.x86_64                        174/184 
  Installing       : tpm2-tss-3.2.3-1.el9.x86_64                        174/184 
  Installing       : ima-evm-utils-1.5-2.el9.x86_64                     175/184 
  Installing       : rpm-sign-libs-4.16.1.3-34.el9.x86_64               176/184 
  Installing       : python3-rpm-4.16.1.3-34.el9.x86_64                 177/184 
  Installing       : python3-subscription-manager-rhsm-1.29.42-1.el9.   178/184 
  Installing       : libreport-filesystem-2.15.2-6.el9.noarch           179/184 
  Installing       : dnf-data-4.14.0-17.el9.noarch                      180/184 
warning: /etc/dnf/dnf.conf created as /etc/dnf/dnf.conf.rpmnew

  Installing       : python3-dnf-4.14.0-17.el9.noarch                   181/184 
  Installing       : python3-dnf-plugins-core-4.3.0-16.el9.noarch       182/184 
  Running scriptlet: subscription-manager-1.29.42-1.el9.x86_64          183/184 
  Installing       : subscription-manager-1.29.42-1.el9.x86_64          183/184 
  Running scriptlet: subscription-manager-1.29.42-1.el9.x86_64          183/184 
Created symlink /etc/systemd/system/multi-user.target.wants/rhsmcertd.service → /usr/lib/systemd/system/rhsmcertd.service.
/var/tmp/rpm-tmp.qdkRvu: line 17: find: command not found
/var/tmp/rpm-tmp.qdkRvu: line 17: xargs: command not found

  Installing       : rpm-plugin-selinux-4.16.1.3-34.el9.x86_64          184/184 
  Running scriptlet: filesystem-3.16-5.el9.x86_64                       184/184 
  Running scriptlet: ca-certificates-2024.2.69_v8.0.303-91.4.el9_4.no   184/184 
  Running scriptlet: rpm-4.16.1.3-34.el9.x86_64                         184/184 
  Running scriptlet: selinux-policy-targeted-38.1.45-3.el9_5.noarch     184/184 
  Running scriptlet: systemd-252-46.el9_5.2.x86_64                      184/184 
  Running scriptlet: subscription-manager-1.29.42-1.el9.x86_64          184/184 
  Running scriptlet: rpm-plugin-selinux-4.16.1.3-34.el9.x86_64          184/184 
Installed products updated.

Installed:
  acl-2.3.1-4.el9.x86_64                                                        
  alternatives-1.24-1.el9_5.1.x86_64                                            
  attr-2.5.1-3.el9.x86_64                                                       
  audit-libs-3.1.5-1.el9.x86_64                                                 
  basesystem-11-13.el9.noarch                                                   
  bash-5.1.8-9.el9.x86_64                                                       
  bzip2-libs-1.0.8-8.el9.x86_64                                                 
  ca-certificates-2024.2.69_v8.0.303-91.4.el9_4.noarch                          
  coreutils-8.32-36.el9.x86_64                                                  
  coreutils-common-8.32-36.el9.x86_64                                           
  cracklib-2.9.6-27.el9.x86_64                                                  
  cracklib-dicts-2.9.6-27.el9.x86_64                                            
  crypto-policies-20240828-2.git626aa59.el9_5.noarch                            
  curl-7.76.1-31.el9.x86_64                                                     
  cyrus-sasl-lib-2.1.27-21.el9.x86_64                                           
  dbus-1:1.12.20-8.el9.x86_64                                                   
  dbus-broker-28-7.el9.x86_64                                                   
  dbus-common-1:1.12.20-8.el9.noarch                                            
  dbus-libs-1:1.12.20-8.el9.x86_64                                              
  diffutils-3.7-12.el9.x86_64                                                   
  dmidecode-1:3.6-1.el9.x86_64                                                  
  dnf-data-4.14.0-17.el9.noarch                                                 
  elfutils-default-yama-scope-0.191-4.el9.noarch                                
  elfutils-libelf-0.191-4.el9.x86_64                                            
  elfutils-libs-0.191-4.el9.x86_64                                              
  expat-2.5.0-3.el9_5.1.x86_64                                                  
  file-libs-5.39-16.el9.x86_64                                                  
  filesystem-3.16-5.el9.x86_64                                                  
  gawk-5.1.0-6.el9.x86_64                                                       
  gdbm-libs-1:1.23-1.el9.x86_64                                                 
  glib2-2.68.4-14.el9_4.1.x86_64                                                
  glibc-2.34-125.el9_5.1.x86_64                                                 
  glibc-common-2.34-125.el9_5.1.x86_64                                          
  glibc-minimal-langpack-2.34-125.el9_5.1.x86_64                                
  gmp-1:6.2.0-13.el9.x86_64                                                     
  gnupg2-2.3.3-4.el9.x86_64                                                     
  gnutls-3.8.3-4.el9_4.x86_64                                                   
  gobject-introspection-1.68.0-11.el9.x86_64                                    
  gpgme-1.15.1-6.el9.x86_64                                                     
  grep-3.6-5.el9.x86_64                                                         
  gzip-1.12-1.el9.x86_64                                                        
  ima-evm-utils-1.5-2.el9.x86_64                                                
  iproute-6.2.0-6.el9_4.x86_64                                                  
  json-c-0.14-11.el9.x86_64                                                     
  json-glib-1.6.6-1.el9.x86_64                                                  
  keyutils-1.6.3-1.el9.x86_64                                                   
  keyutils-libs-1.6.3-1.el9.x86_64                                              
  kmod-libs-28-10.el9.x86_64                                                    
  krb5-libs-1.21.1-4.el9_5.x86_64                                               
  libacl-2.3.1-4.el9.x86_64                                                     
  libarchive-3.5.3-4.el9.x86_64                                                 
  libassuan-2.5.5-3.el9.x86_64                                                  
  libattr-2.5.1-3.el9.x86_64                                                    
  libblkid-2.37.4-20.el9.x86_64                                                 
  libbpf-2:1.4.0-1.el9.x86_64                                                   
  libbrotli-1.0.9-7.el9_5.x86_64                                                
  libcap-2.48-9.el9_2.x86_64                                                    
  libcap-ng-0.8.2-7.el9.x86_64                                                  
  libcom_err-1.46.5-5.el9.x86_64                                                
  libcomps-0.1.18-1.el9.x86_64                                                  
  libcurl-7.76.1-31.el9.x86_64                                                  
  libdb-5.3.28-54.el9.x86_64                                                    
  libdnf-0.69.0-12.el9.x86_64                                                   
  libdnf-plugin-subscription-manager-1.29.42-1.el9.x86_64                       
  libeconf-0.4.1-4.el9.x86_64                                                   
  libevent-2.1.12-8.el9_4.x86_64                                                
  libfdisk-2.37.4-20.el9.x86_64                                                 
  libffi-3.4.2-8.el9.x86_64                                                     
  libgcc-11.5.0-2.el9.x86_64                                                    
  libgcrypt-1.10.0-11.el9.x86_64                                                
  libgomp-11.5.0-2.el9.x86_64                                                   
  libgpg-error-1.42-5.el9.x86_64                                                
  libidn2-2.3.0-7.el9.x86_64                                                    
  libksba-1.5.1-7.el9.x86_64                                                    
  libmnl-1.0.4-16.el9_4.x86_64                                                  
  libmodulemd-2.13.0-2.el9.x86_64                                               
  libmount-2.37.4-20.el9.x86_64                                                 
  libnghttp2-1.43.0-6.el9.x86_64                                                
  libpsl-0.21.1-5.el9.x86_64                                                    
  libpwquality-1.4.4-8.el9.x86_64                                               
  librepo-1.14.5-2.el9.x86_64                                                   
  libreport-filesystem-2.15.2-6.el9.noarch                                      
  librhsm-0.0.3-9.el9.x86_64                                                    
  libseccomp-2.5.2-2.el9.x86_64                                                 
  libselinux-3.6-1.el9.x86_64                                                   
  libselinux-utils-3.6-1.el9.x86_64                                             
  libsemanage-3.6-2.1.el9_5.x86_64                                              
  libsepol-3.6-1.el9.x86_64                                                     
  libsigsegv-2.13-4.el9.x86_64                                                  
  libsmartcols-2.37.4-20.el9.x86_64                                             
  libsolv-0.7.24-3.el9.x86_64                                                   
  libssh-0.10.4-13.el9.x86_64                                                   
  libssh-config-0.10.4-13.el9.noarch                                            
  libstdc++-11.5.0-2.el9.x86_64                                                 
  libtasn1-4.16.0-8.el9_1.x86_64                                                
  libunistring-0.9.10-15.el9.x86_64                                             
  libuser-0.63-15.el9.x86_64                                                    
  libutempter-1.2.1-6.el9.x86_64                                                
  libuuid-2.37.4-20.el9.x86_64                                                  
  libverto-0.3.2-3.el9.x86_64                                                   
  libxcrypt-4.4.18-3.el9.x86_64                                                 
  libxml2-2.9.13-6.el9_4.x86_64                                                 
  libyaml-0.2.5-7.el9.x86_64                                                    
  libzstd-1.5.1-2.el9.x86_64                                                    
  lua-libs-5.4.4-4.el9.x86_64                                                   
  lz4-libs-1.9.3-5.el9.x86_64                                                   
  mpfr-4.1.0-7.el9.x86_64                                                       
  ncurses-base-6.2-10.20210508.el9.noarch                                       
  ncurses-libs-6.2-10.20210508.el9.x86_64                                       
  nettle-3.9.1-1.el9.x86_64                                                     
  npth-1.6-8.el9.x86_64                                                         
  openldap-2.6.6-3.el9.x86_64                                                   
  openssl-1:3.2.2-6.el9_5.x86_64                                                
  openssl-fips-provider-3.0.7-6.el9_5.x86_64                                    
  openssl-fips-provider-so-3.0.7-6.el9_5.x86_64                                 
  openssl-libs-1:3.2.2-6.el9_5.x86_64                                           
  p11-kit-0.25.3-3.el9_5.x86_64                                                 
  p11-kit-trust-0.25.3-3.el9_5.x86_64                                           
  pam-1.5.1-22.el9_5.x86_64                                                     
  passwd-0.80-12.el9.x86_64                                                     
  pcre-8.44-4.el9.x86_64                                                        
  pcre2-10.40-6.el9.x86_64                                                      
  pcre2-syntax-10.40-6.el9.noarch                                               
  policycoreutils-3.6-2.1.el9.x86_64                                            
  popt-1.18-8.el9.x86_64                                                        
  psmisc-23.4-3.el9.x86_64                                                      
  publicsuffix-list-dafsa-20210518-3.el9.noarch                                 
  python3-3.9.21-1.el9_5.x86_64                                                 
  python3-chardet-4.0.0-5.el9.noarch                                            
  python3-cloud-what-1.29.42-1.el9.x86_64                                       
  python3-dateutil-1:2.8.1-7.el9.noarch                                         
  python3-dbus-1.2.18-2.el9.x86_64                                              
  python3-decorator-4.4.2-6.el9.noarch                                          
  python3-dnf-4.14.0-17.el9.noarch                                              
  python3-dnf-plugins-core-4.3.0-16.el9.noarch                                  
  python3-gobject-base-3.40.1-6.el9.x86_64                                      
  python3-gobject-base-noarch-3.40.1-6.el9.noarch                               
  python3-gpg-1.15.1-6.el9.x86_64                                               
  python3-hawkey-0.69.0-12.el9.x86_64                                           
  python3-idna-2.10-7.el9_4.1.noarch                                            
  python3-iniparse-0.4-45.el9.noarch                                            
  python3-inotify-0.9.6-25.el9.noarch                                           
  python3-libcomps-0.1.18-1.el9.x86_64                                          
  python3-libdnf-0.69.0-12.el9.x86_64                                           
  python3-librepo-1.14.5-2.el9.x86_64                                           
  python3-libs-3.9.21-1.el9_5.x86_64                                            
  python3-pip-wheel-21.3.1-1.el9.noarch                                         
  python3-pysocks-1.7.1-12.el9.noarch                                           
  python3-requests-2.25.1-8.el9.noarch                                          
  python3-rpm-4.16.1.3-34.el9.x86_64                                            
  python3-setuptools-53.0.0-13.el9.noarch                                       
  python3-setuptools-wheel-53.0.0-13.el9.noarch                                 
  python3-six-1.15.0-9.el9.noarch                                               
  python3-subscription-manager-rhsm-1.29.42-1.el9.x86_64                        
  python3-systemd-234-19.el9.x86_64                                             
  python3-urllib3-1.26.5-6.el9.noarch                                           
  readline-8.1-4.el9.x86_64                                                     
  redhat-release-9.5-0.6.el9.x86_64                                             
  rpm-4.16.1.3-34.el9.x86_64                                                    
  rpm-build-libs-4.16.1.3-34.el9.x86_64                                         
  rpm-libs-4.16.1.3-34.el9.x86_64                                               
  rpm-plugin-selinux-4.16.1.3-34.el9.x86_64                                     
  rpm-sign-libs-4.16.1.3-34.el9.x86_64                                          
  sed-4.8-9.el9.x86_64                                                          
  selinux-policy-38.1.45-3.el9_5.noarch                                         
  selinux-policy-targeted-38.1.45-3.el9_5.noarch                                
  setup-2.13.7-10.el9.noarch                                                    
  shadow-utils-2:4.9-10.el9_5.x86_64                                            
  sqlite-libs-3.34.1-7.el9_3.x86_64                                             
  subscription-manager-1.29.42-1.el9.x86_64                                     
  subscription-manager-rhsm-certificates-20220623-1.el9.noarch                  
  systemd-252-46.el9_5.2.x86_64                                                 
  systemd-libs-252-46.el9_5.2.x86_64                                            
  systemd-pam-252-46.el9_5.2.x86_64                                             
  systemd-rpm-macros-252-46.el9_5.2.noarch                                      
  tpm2-tss-3.2.3-1.el9.x86_64                                                   
  tzdata-2024b-2.el9.noarch                                                     
  usermode-1.114-5.el9.x86_64                                                   
  util-linux-2.37.4-20.el9.x86_64                                               
  util-linux-core-2.37.4-20.el9.x86_64                                          
  virt-what-1.25-10.el9.x86_64                                                  
  which-2.21-29.el9.x86_64                                                      
  xz-libs-5.2.5-8.el9_0.x86_64                                                  
  zlib-1.2.11-40.el9.x86_64                                                     

Complete!
Finish(bootstrap): installing dnf tooling
Start(bootstrap): creating root cache
Finish(bootstrap): creating root cache
Finish(bootstrap): chroot init
Start: chroot init
INFO: mounting tmpfs at /var/lib/mock/rhel+epel-9-x86_64-1738090619.985866/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 dnf4 detected and used (direct choice)
INFO: Buildroot is handled by package management installed into bootstrap:
  rpm-4.16.1.3-34.el9.x86_64
  python3-dnf-4.14.0-17.el9.noarch
  python3-dnf-plugins-core-4.3.0-16.el9.noarch
Start: installing minimal buildroot with dnf
No matches found for the following disable plugin patterns: local, spacewalk, versionlock
Updating Subscription Management repositories.
Unable to read consumer identity

This system is not registered with an entitlement server. You can use subscription-manager to register.

Copr repository                                 396 kB/s |  61 kB     00:00    
Red Hat Enterprise Linux - BaseOS                24 MB/s |  42 MB     00:01    
Red Hat Enterprise Linux - AppStream             23 MB/s |  49 MB     00:02    
Red Hat Enterprise Linux - CodeReady Linux Buil  12 MB/s |  11 MB     00:00    
Extra Packages for Enterprise Linux 9 - x86_64   38 MB/s |  23 MB     00:00    
Dependencies resolved.
================================================================================
 Package                     Arch   Version                     Repo       Size
================================================================================
Installing:
 bash                        x86_64 5.1.8-9.el9                 baseos    1.7 M
 bzip2                       x86_64 1.0.8-8.el9                 baseos     60 k
 coreutils                   x86_64 8.32-36.el9                 baseos    1.2 M
 cpio                        x86_64 2.13-16.el9                 baseos    279 k
 diffutils                   x86_64 3.7-12.el9                  baseos    402 k
 epel-rpm-macros             noarch 9-15.el9                    epel       15 k
 findutils                   x86_64 1:4.8.0-7.el9               baseos    550 k
 gawk                        x86_64 5.1.0-6.el9                 baseos    1.0 M
 glibc-minimal-langpack      x86_64 2.34-125.el9_5.1            baseos     23 k
 grep                        x86_64 3.6-5.el9                   baseos    273 k
 gzip                        x86_64 1.12-1.el9                  baseos    167 k
 info                        x86_64 6.7-15.el9                  baseos    228 k
 patch                       x86_64 2.7.6-16.el9                appstream 130 k
 redhat-release              x86_64 9.5-0.6.el9                 baseos     45 k
 redhat-rpm-config           noarch 208-1.el9                   appstream  75 k
 rpm-build                   x86_64 4.16.1.3-34.el9             appstream  71 k
 sed                         x86_64 4.8-9.el9                   baseos    309 k
 tar                         x86_64 2:1.34-7.el9                baseos    889 k
 unzip                       x86_64 6.0-57.el9                  baseos    186 k
 util-linux                  x86_64 2.37.4-20.el9               baseos    2.3 M
 which                       x86_64 2.21-29.el9                 baseos     45 k
 xz                          x86_64 5.2.5-8.el9_0               baseos    230 k
Installing dependencies:
 alternatives                x86_64 1.24-1.el9_5.1              baseos     42 k
 ansible-srpm-macros         noarch 1-16.el9                    epel       21 k
 audit-libs                  x86_64 3.1.5-1.el9                 baseos    124 k
 basesystem                  noarch 11-13.el9                   baseos    8.0 k
 binutils                    x86_64 2.35.2-54.el9               baseos    4.6 M
 binutils-gold               x86_64 2.35.2-54.el9               baseos    735 k
 bzip2-libs                  x86_64 1.0.8-8.el9                 baseos     42 k
 ca-certificates             noarch 2024.2.69_v8.0.303-91.4.el9_4
                                                                baseos    1.0 M
 coreutils-common            x86_64 8.32-36.el9                 baseos    2.0 M
 cracklib                    x86_64 2.9.6-27.el9                baseos     99 k
 cracklib-dicts              x86_64 2.9.6-27.el9                baseos    3.6 M
 crypto-policies             noarch 20240828-2.git626aa59.el9_5 baseos     90 k
 curl                        x86_64 7.76.1-31.el9               baseos    297 k
 cyrus-sasl-lib              x86_64 2.1.27-21.el9               baseos    774 k
 debugedit                   x86_64 5.0-5.el9                   appstream  81 k
 dwz                         x86_64 0.14-3.el9                  appstream 130 k
 ed                          x86_64 1.14.2-12.el9               baseos     78 k
 efi-srpm-macros             noarch 6-2.el9_0                   appstream  24 k
 elfutils                    x86_64 0.191-4.el9                 baseos    566 k
 elfutils-debuginfod-client  x86_64 0.191-4.el9                 baseos     39 k
 elfutils-default-yama-scope noarch 0.191-4.el9                 baseos     12 k
 elfutils-libelf             x86_64 0.191-4.el9                 baseos    210 k
 elfutils-libs               x86_64 0.191-4.el9                 baseos    262 k
 file                        x86_64 5.39-16.el9                 baseos     52 k
 file-libs                   x86_64 5.39-16.el9                 baseos    593 k
 filesystem                  x86_64 3.16-5.el9                  baseos    4.8 M
 fonts-srpm-macros           noarch 1:2.0.5-7.el9.1             appstream  29 k
 forge-srpm-macros           noarch 0.4.0-1.el9                 epel       19 k
 fpc-srpm-macros             noarch 1.3-7.el9                   epel      7.5 k
 gdb-minimal                 x86_64 14.2-3.el9                  appstream 4.2 M
 gdbm-libs                   x86_64 1:1.23-1.el9                baseos     59 k
 ghc-srpm-macros             noarch 1.5.0-6.el9                 appstream 9.0 k
 ghc-srpm-macros-epel        noarch 1.9.1-1.el9                 epel      7.5 k
 glibc                       x86_64 2.34-125.el9_5.1            baseos    2.0 M
 glibc-common                x86_64 2.34-125.el9_5.1            baseos    308 k
 glibc-gconv-extra           x86_64 2.34-125.el9_5.1            baseos    1.7 M
 gmp                         x86_64 1:6.2.0-13.el9              baseos    319 k
 go-srpm-macros              noarch 3.6.0-3.el9                 appstream  28 k
 go-srpm-macros-epel         noarch 3.6.0.1-1.el9               epel       26 k
 groff-base                  x86_64 1.22.4-10.el9               baseos    1.1 M
 kernel-srpm-macros          noarch 1.0-13.el9                  appstream  17 k
 keyutils-libs               x86_64 1.6.3-1.el9                 baseos     34 k
 krb5-libs                   x86_64 1.21.1-4.el9_5              baseos    771 k
 libacl                      x86_64 2.3.1-4.el9                 baseos     24 k
 libarchive                  x86_64 3.5.3-4.el9                 baseos    392 k
 libattr                     x86_64 2.5.1-3.el9                 baseos     20 k
 libblkid                    x86_64 2.37.4-20.el9               baseos    109 k
 libbrotli                   x86_64 1.0.9-7.el9_5               baseos    316 k
 libcap                      x86_64 2.48-9.el9_2                baseos     74 k
 libcap-ng                   x86_64 0.8.2-7.el9                 baseos     36 k
 libcom_err                  x86_64 1.46.5-5.el9                baseos     28 k
 libcurl                     x86_64 7.76.1-31.el9               baseos    286 k
 libdb                       x86_64 5.3.28-54.el9               baseos    737 k
 libeconf                    x86_64 0.4.1-4.el9                 baseos     30 k
 libevent                    x86_64 2.1.12-8.el9_4              baseos    266 k
 libfdisk                    x86_64 2.37.4-20.el9               baseos    155 k
 libffi                      x86_64 3.4.2-8.el9                 baseos     40 k
 libgcc                      x86_64 11.5.0-2.el9                baseos     91 k
 libgcrypt                   x86_64 1.10.0-11.el9               baseos    510 k
 libgomp                     x86_64 11.5.0-2.el9                baseos    266 k
 libgpg-error                x86_64 1.42-5.el9                  baseos    220 k
 libidn2                     x86_64 2.3.0-7.el9                 baseos    105 k
 libmount                    x86_64 2.37.4-20.el9               baseos    136 k
 libnghttp2                  x86_64 1.43.0-6.el9                baseos     75 k
 libpkgconf                  x86_64 1.7.3-10.el9                baseos     37 k
 libpsl                      x86_64 0.21.1-5.el9                baseos     66 k
 libpwquality                x86_64 1.4.4-8.el9                 baseos    123 k
 libselinux                  x86_64 3.6-1.el9                   baseos     88 k
 libsemanage                 x86_64 3.6-2.1.el9_5               baseos    120 k
 libsepol                    x86_64 3.6-1.el9                   baseos    331 k
 libsigsegv                  x86_64 2.13-4.el9                  baseos     30 k
 libsmartcols                x86_64 2.37.4-20.el9               baseos     64 k
 libssh                      x86_64 0.10.4-13.el9               baseos    220 k
 libssh-config               noarch 0.10.4-13.el9               baseos     11 k
 libstdc++                   x86_64 11.5.0-2.el9                baseos    742 k
 libtasn1                    x86_64 4.16.0-8.el9_1              baseos     77 k
 libunistring                x86_64 0.9.10-15.el9               baseos    499 k
 libutempter                 x86_64 1.2.1-6.el9                 baseos     30 k
 libuuid                     x86_64 2.37.4-20.el9               baseos     30 k
 libverto                    x86_64 0.3.2-3.el9                 baseos     24 k
 libxcrypt                   x86_64 4.4.18-3.el9                baseos    120 k
 libxml2                     x86_64 2.9.13-6.el9_4              baseos    752 k
 libzstd                     x86_64 1.5.1-2.el9                 baseos    332 k
 lua-libs                    x86_64 5.4.4-4.el9                 baseos    132 k
 lua-srpm-macros             noarch 1-6.el9                     appstream  10 k
 lz4-libs                    x86_64 1.9.3-5.el9                 baseos     69 k
 mpfr                        x86_64 4.1.0-7.el9                 baseos    329 k
 ncurses                     x86_64 6.2-10.20210508.el9         baseos    410 k
 ncurses-base                noarch 6.2-10.20210508.el9         baseos     99 k
 ncurses-libs                x86_64 6.2-10.20210508.el9         baseos    332 k
 ocaml-srpm-macros           noarch 6-6.el9                     appstream 9.1 k
 openblas-srpm-macros        noarch 2-11.el9                    appstream 8.6 k
 openldap                    x86_64 2.6.6-3.el9                 baseos    286 k
 openssl                     x86_64 1:3.2.2-6.el9_5             baseos    1.4 M
 openssl-fips-provider       x86_64 3.0.7-6.el9_5               baseos    9.4 k
 openssl-fips-provider-so    x86_64 3.0.7-6.el9_5               baseos    577 k
 openssl-libs                x86_64 1:3.2.2-6.el9_5             baseos    2.1 M
 p11-kit                     x86_64 0.25.3-3.el9_5              baseos    536 k
 p11-kit-trust               x86_64 0.25.3-3.el9_5              baseos    144 k
 pam                         x86_64 1.5.1-22.el9_5              baseos    632 k
 pcre                        x86_64 8.44-4.el9                  baseos    200 k
 pcre2                       x86_64 10.40-6.el9                 baseos    236 k
 pcre2-syntax                noarch 10.40-6.el9                 baseos    144 k
 perl-AutoLoader             noarch 5.74-481.el9                appstream  21 k
 perl-B                      x86_64 1.80-481.el9                appstream 184 k
 perl-Carp                   noarch 1.50-460.el9                appstream  31 k
 perl-Class-Struct           noarch 0.66-481.el9                appstream  22 k
 perl-Data-Dumper            x86_64 2.174-462.el9               appstream  59 k
 perl-Digest                 noarch 1.19-4.el9                  appstream  29 k
 perl-Digest-MD5             x86_64 2.58-4.el9                  appstream  39 k
 perl-Encode                 x86_64 4:3.08-462.el9              appstream 1.7 M
 perl-Errno                  x86_64 1.30-481.el9                appstream  15 k
 perl-Exporter               noarch 5.74-461.el9                appstream  34 k
 perl-Fcntl                  x86_64 1.13-481.el9                appstream  22 k
 perl-File-Basename          noarch 2.85-481.el9                appstream  17 k
 perl-File-Path              noarch 2.18-4.el9                  appstream  38 k
 perl-File-Temp              noarch 1:0.231.100-4.el9           appstream  63 k
 perl-File-stat              noarch 1.09-481.el9                appstream  17 k
 perl-FileHandle             noarch 2.03-481.el9                appstream  16 k
 perl-Getopt-Long            noarch 1:2.52-4.el9                appstream  64 k
 perl-Getopt-Std             noarch 1.12-481.el9                appstream  16 k
 perl-HTTP-Tiny              noarch 0.076-462.el9               appstream  57 k
 perl-IO                     x86_64 1.43-481.el9                appstream  92 k
 perl-IO-Socket-IP           noarch 0.41-5.el9                  appstream  45 k
 perl-IO-Socket-SSL          noarch 2.073-2.el9                 appstream 221 k
 perl-IPC-Open3              noarch 1.21-481.el9                appstream  24 k
 perl-MIME-Base64            x86_64 3.16-4.el9                  appstream  34 k
 perl-Mozilla-CA             noarch 20200520-6.el9              appstream  14 k
 perl-Net-SSLeay             x86_64 1.94-1.el9                  appstream 418 k
 perl-POSIX                  x86_64 1.94-481.el9                appstream  98 k
 perl-PathTools              x86_64 3.78-461.el9                appstream  92 k
 perl-Pod-Escapes            noarch 1:1.07-460.el9              appstream  22 k
 perl-Pod-Perldoc            noarch 3.28.01-461.el9             appstream  92 k
 perl-Pod-Simple             noarch 1:3.42-4.el9                appstream 229 k
 perl-Pod-Usage              noarch 4:2.01-4.el9                appstream  43 k
 perl-Scalar-List-Utils      x86_64 4:1.56-462.el9              appstream  75 k
 perl-SelectSaver            noarch 1.02-481.el9                appstream  12 k
 perl-Socket                 x86_64 4:2.031-4.el9               appstream  58 k
 perl-Storable               x86_64 1:3.21-460.el9              appstream  98 k
 perl-Symbol                 noarch 1.08-481.el9                appstream  14 k
 perl-Term-ANSIColor         noarch 5.01-461.el9                appstream  51 k
 perl-Term-Cap               noarch 1.17-460.el9                appstream  24 k
 perl-Text-ParseWords        noarch 3.30-460.el9                appstream  18 k
 perl-Text-Tabs+Wrap         noarch 2013.0523-460.el9           appstream  25 k
 perl-Time-Local             noarch 2:1.300-7.el9               appstream  37 k
 perl-URI                    noarch 5.09-3.el9                  appstream 125 k
 perl-base                   noarch 2.27-481.el9                appstream  16 k
 perl-constant               noarch 1.33-461.el9                appstream  25 k
 perl-if                     noarch 0.60.800-481.el9            appstream  14 k
 perl-interpreter            x86_64 4:5.32.1-481.el9            appstream  73 k
 perl-libnet                 noarch 3.13-4.el9                  appstream 134 k
 perl-libs                   x86_64 4:5.32.1-481.el9            appstream 2.2 M
 perl-mro                    x86_64 1.23-481.el9                appstream  29 k
 perl-overload               noarch 1.31-481.el9                appstream  46 k
 perl-overloading            noarch 0.02-481.el9                appstream  13 k
 perl-parent                 noarch 1:0.238-460.el9             appstream  16 k
 perl-podlators              noarch 1:4.14-460.el9              appstream 118 k
 perl-srpm-macros            noarch 1-41.el9                    appstream 9.4 k
 perl-subs                   noarch 1.03-481.el9                appstream  12 k
 perl-vars                   noarch 1.05-481.el9                appstream  13 k
 pkgconf                     x86_64 1.7.3-10.el9                baseos     45 k
 pkgconf-m4                  noarch 1.7.3-10.el9                baseos     16 k
 pkgconf-pkg-config          x86_64 1.7.3-10.el9                baseos     12 k
 popt                        x86_64 1.18-8.el9                  baseos     69 k
 publicsuffix-list-dafsa     noarch 20210518-3.el9              baseos     59 k
 pyproject-srpm-macros       noarch 1.12.0-1.el9                appstream  14 k
 python-srpm-macros          noarch 3.9-54.el9                  appstream  18 k
 qt5-srpm-macros             noarch 5.15.9-1.el9                appstream 9.1 k
 qt6-srpm-macros             noarch 6.6.2-1.el9                 epel      8.7 k
 readline                    x86_64 8.1-4.el9                   baseos    215 k
 rpm                         x86_64 4.16.1.3-34.el9             baseos    541 k
 rpm-build-libs              x86_64 4.16.1.3-34.el9             baseos     90 k
 rpm-libs                    x86_64 4.16.1.3-34.el9             baseos    311 k
 rpmautospec-rpm-macros      noarch 0.7.3-1.el9                 epel       10 k
 rust-srpm-macros            noarch 17-4.el9                    appstream  11 k
 rust-srpm-macros-epel       noarch 26.3-1.el9                  epel       10 k
 setup                       noarch 2.13.7-10.el9               baseos    150 k
 shadow-utils                x86_64 2:4.9-10.el9_5              baseos    1.2 M
 sqlite-libs                 x86_64 3.34.1-7.el9_3              baseos    622 k
 systemd-libs                x86_64 252-46.el9_5.2              baseos    684 k
 tzdata                      noarch 2024b-2.el9                 baseos    841 k
 util-linux-core             x86_64 2.37.4-20.el9               baseos    468 k
 xz-libs                     x86_64 5.2.5-8.el9_0               baseos     94 k
 zip                         x86_64 3.0-35.el9                  baseos    270 k
 zlib                        x86_64 1.2.11-40.el9               baseos     93 k
 zstd                        x86_64 1.5.1-2.el9                 baseos    552 k

Transaction Summary
================================================================================
Install  208 Packages

Total download size: 69 M
Installed size: 219 M
Downloading Packages:
(1/208): basesystem-11-13.el9.noarch.rpm         31 kB/s | 8.0 kB     00:00    
(2/208): bzip2-1.0.8-8.el9.x86_64.rpm           210 kB/s |  60 kB     00:00    
(3/208): bzip2-libs-1.0.8-8.el9.x86_64.rpm      106 kB/s |  42 kB     00:00    
(4/208): cracklib-2.9.6-27.el9.x86_64.rpm       739 kB/s |  99 kB     00:00    
(5/208): cpio-2.13-16.el9.x86_64.rpm            1.1 MB/s | 279 kB     00:00    
(6/208): ed-1.14.2-12.el9.x86_64.rpm            563 kB/s |  78 kB     00:00    
(7/208): grep-3.6-5.el9.x86_64.rpm              1.5 MB/s | 273 kB     00:00    
(8/208): groff-base-1.22.4-10.el9.x86_64.rpm    5.8 MB/s | 1.1 MB     00:00    
(9/208): info-6.7-15.el9.x86_64.rpm             1.4 MB/s | 228 kB     00:00    
(10/208): libattr-2.5.1-3.el9.x86_64.rpm        109 kB/s |  20 kB     00:00    
(11/208): libcap-ng-0.8.2-7.el9.x86_64.rpm      256 kB/s |  36 kB     00:00    
(12/208): libgpg-error-1.42-5.el9.x86_64.rpm    1.2 MB/s | 220 kB     00:00    
(13/208): libidn2-2.3.0-7.el9.x86_64.rpm        806 kB/s | 105 kB     00:00    
(14/208): libpsl-0.21.1-5.el9.x86_64.rpm        594 kB/s |  66 kB     00:00    
(15/208): libpwquality-1.4.4-8.el9.x86_64.rpm   1.1 MB/s | 123 kB     00:00    
(16/208): libsigsegv-2.13-4.el9.x86_64.rpm      254 kB/s |  30 kB     00:00    
(17/208): libunistring-0.9.10-15.el9.x86_64.rpm 4.5 MB/s | 499 kB     00:00    
(18/208): libverto-0.3.2-3.el9.x86_64.rpm       270 kB/s |  24 kB     00:00    
(19/208): libutempter-1.2.1-6.el9.x86_64.rpm    184 kB/s |  30 kB     00:00    
(20/208): libxcrypt-4.4.18-3.el9.x86_64.rpm     1.0 MB/s | 120 kB     00:00    
(21/208): libzstd-1.5.1-2.el9.x86_64.rpm        1.8 MB/s | 332 kB     00:00    
(22/208): lz4-libs-1.9.3-5.el9.x86_64.rpm       362 kB/s |  69 kB     00:00    
(23/208): mpfr-4.1.0-7.el9.x86_64.rpm           1.7 MB/s | 329 kB     00:00    
(24/208): popt-1.18-8.el9.x86_64.rpm            537 kB/s |  69 kB     00:00    
(25/208): readline-8.1-4.el9.x86_64.rpm         1.7 MB/s | 215 kB     00:00    
(26/208): publicsuffix-list-dafsa-20210518-3.el 396 kB/s |  59 kB     00:00    
(27/208): sed-4.8-9.el9.x86_64.rpm              2.5 MB/s | 309 kB     00:00    
(28/208): cracklib-dicts-2.9.6-27.el9.x86_64.rp  21 MB/s | 3.6 MB     00:00    
(29/208): diffutils-3.7-12.el9.x86_64.rpm       2.0 MB/s | 402 kB     00:00    
(30/208): xz-5.2.5-8.el9_0.x86_64.rpm           2.0 MB/s | 230 kB     00:00    
(31/208): gawk-5.1.0-6.el9.x86_64.rpm           4.3 MB/s | 1.0 MB     00:00    
(32/208): xz-libs-5.2.5-8.el9_0.x86_64.rpm      529 kB/s |  94 kB     00:00    
(33/208): zstd-1.5.1-2.el9.x86_64.rpm           3.4 MB/s | 552 kB     00:00    
(34/208): cyrus-sasl-lib-2.1.27-21.el9.x86_64.r 4.1 MB/s | 774 kB     00:00    
(35/208): gzip-1.12-1.el9.x86_64.rpm            1.4 MB/s | 167 kB     00:00    
(36/208): libtasn1-4.16.0-8.el9_1.x86_64.rpm    850 kB/s |  77 kB     00:00    
(37/208): libcap-2.48-9.el9_2.x86_64.rpm        406 kB/s |  74 kB     00:00    
(38/208): libarchive-3.5.3-4.el9.x86_64.rpm     1.8 MB/s | 392 kB     00:00    
(39/208): keyutils-libs-1.6.3-1.el9.x86_64.rpm  146 kB/s |  34 kB     00:00    
(40/208): libpkgconf-1.7.3-10.el9.x86_64.rpm    393 kB/s |  37 kB     00:00    
(41/208): pkgconf-m4-1.7.3-10.el9.noarch.rpm    156 kB/s |  16 kB     00:00    
(42/208): pkgconf-1.7.3-10.el9.x86_64.rpm       226 kB/s |  45 kB     00:00    
(43/208): zip-3.0-35.el9.x86_64.rpm             2.4 MB/s | 270 kB     00:00    
(44/208): pkgconf-pkg-config-1.7.3-10.el9.x86_6  73 kB/s |  12 kB     00:00    
(45/208): libffi-3.4.2-8.el9.x86_64.rpm         403 kB/s |  40 kB     00:00    
(46/208): gmp-6.2.0-13.el9.x86_64.rpm           2.5 MB/s | 319 kB     00:00    
(47/208): lua-libs-5.4.4-4.el9.x86_64.rpm       1.2 MB/s | 132 kB     00:00    
(48/208): ncurses-6.2-10.20210508.el9.x86_64.rp 3.5 MB/s | 410 kB     00:00    
(49/208): ncurses-base-6.2-10.20210508.el9.noar 770 kB/s |  99 kB     00:00    
(50/208): ncurses-libs-6.2-10.20210508.el9.x86_ 2.4 MB/s | 332 kB     00:00    
(51/208): which-2.21-29.el9.x86_64.rpm          504 kB/s |  45 kB     00:00    
(52/208): zlib-1.2.11-40.el9.x86_64.rpm         989 kB/s |  93 kB     00:00    
(53/208): bash-5.1.8-9.el9.x86_64.rpm            13 MB/s | 1.7 MB     00:00    
(54/208): file-5.39-16.el9.x86_64.rpm           389 kB/s |  52 kB     00:00    
(55/208): file-libs-5.39-16.el9.x86_64.rpm      3.7 MB/s | 593 kB     00:00    
(56/208): libselinux-3.6-1.el9.x86_64.rpm       972 kB/s |  88 kB     00:00    
(57/208): libacl-2.3.1-4.el9.x86_64.rpm         179 kB/s |  24 kB     00:00    
(58/208): libsepol-3.6-1.el9.x86_64.rpm         2.5 MB/s | 331 kB     00:00    
(59/208): openldap-2.6.6-3.el9.x86_64.rpm       2.5 MB/s | 286 kB     00:00    
(60/208): setup-2.13.7-10.el9.noarch.rpm        1.1 MB/s | 150 kB     00:00    
(61/208): ca-certificates-2024.2.69_v8.0.303-91 8.2 MB/s | 1.0 MB     00:00    
(62/208): sqlite-libs-3.34.1-7.el9_3.x86_64.rpm 3.6 MB/s | 622 kB     00:00    
(63/208): libcom_err-1.46.5-5.el9.x86_64.rpm    164 kB/s |  28 kB     00:00    
(64/208): libssh-0.10.4-13.el9.x86_64.rpm       2.1 MB/s | 220 kB     00:00    
(65/208): libevent-2.1.12-8.el9_4.x86_64.rpm    1.9 MB/s | 266 kB     00:00    
(66/208): alternatives-1.24-1.el9_5.1.x86_64.rp 470 kB/s |  42 kB     00:00    
(67/208): libxml2-2.9.13-6.el9_4.x86_64.rpm     5.8 MB/s | 752 kB     00:00    
(68/208): libssh-config-0.10.4-13.el9.noarch.rp  47 kB/s |  11 kB     00:00    
(69/208): audit-libs-3.1.5-1.el9.x86_64.rpm     1.1 MB/s | 124 kB     00:00    
(70/208): binutils-gold-2.35.2-54.el9.x86_64.rp 7.5 MB/s | 735 kB     00:00    
(71/208): coreutils-8.32-36.el9.x86_64.rpm      9.1 MB/s | 1.2 MB     00:00    
(72/208): crypto-policies-20240828-2.git626aa59 562 kB/s |  90 kB     00:00    
(73/208): coreutils-common-8.32-36.el9.x86_64.r 9.2 MB/s | 2.0 MB     00:00    
(74/208): binutils-2.35.2-54.el9.x86_64.rpm      10 MB/s | 4.6 MB     00:00    
(75/208): elfutils-0.191-4.el9.x86_64.rpm       4.7 MB/s | 566 kB     00:00    
(76/208): curl-7.76.1-31.el9.x86_64.rpm         2.2 MB/s | 297 kB     00:00    
(77/208): elfutils-debuginfod-client-0.191-4.el 337 kB/s |  39 kB     00:00    
(78/208): elfutils-default-yama-scope-0.191-4.e 127 kB/s |  12 kB     00:00    
(79/208): elfutils-libelf-0.191-4.el9.x86_64.rp 1.3 MB/s | 210 kB     00:00    
(80/208): elfutils-libs-0.191-4.el9.x86_64.rpm  2.1 MB/s | 262 kB     00:00    
(81/208): filesystem-3.16-5.el9.x86_64.rpm       17 MB/s | 4.8 MB     00:00    
(82/208): gdbm-libs-1.23-1.el9.x86_64.rpm       294 kB/s |  59 kB     00:00    
(83/208): findutils-4.8.0-7.el9.x86_64.rpm      2.0 MB/s | 550 kB     00:00    
(84/208): glibc-common-2.34-125.el9_5.1.x86_64. 3.0 MB/s | 308 kB     00:00    
(85/208): glibc-2.34-125.el9_5.1.x86_64.rpm      10 MB/s | 2.0 MB     00:00    
(86/208): glibc-minimal-langpack-2.34-125.el9_5 216 kB/s |  23 kB     00:00    
(87/208): glibc-gconv-extra-2.34-125.el9_5.1.x8  10 MB/s | 1.7 MB     00:00    
(88/208): libcurl-7.76.1-31.el9.x86_64.rpm      2.9 MB/s | 286 kB     00:00    
(89/208): libdb-5.3.28-54.el9.x86_64.rpm        5.6 MB/s | 737 kB     00:00    
(90/208): libblkid-2.37.4-20.el9.x86_64.rpm     527 kB/s | 109 kB     00:00    
(91/208): libeconf-0.4.1-4.el9.x86_64.rpm       280 kB/s |  30 kB     00:00    
(92/208): libfdisk-2.37.4-20.el9.x86_64.rpm     1.4 MB/s | 155 kB     00:00    
(93/208): libgcc-11.5.0-2.el9.x86_64.rpm        794 kB/s |  91 kB     00:00    
(94/208): libgcrypt-1.10.0-11.el9.x86_64.rpm    3.9 MB/s | 510 kB     00:00    
(95/208): libgomp-11.5.0-2.el9.x86_64.rpm       2.8 MB/s | 266 kB     00:00    
(96/208): libmount-2.37.4-20.el9.x86_64.rpm     968 kB/s | 136 kB     00:00    
(97/208): libsmartcols-2.37.4-20.el9.x86_64.rpm 595 kB/s |  64 kB     00:00    
(98/208): libuuid-2.37.4-20.el9.x86_64.rpm      334 kB/s |  30 kB     00:00    
(99/208): libstdc++-11.5.0-2.el9.x86_64.rpm     5.4 MB/s | 742 kB     00:00    
(100/208): libnghttp2-1.43.0-6.el9.x86_64.rpm   253 kB/s |  75 kB     00:00    
(101/208): openssl-fips-provider-3.0.7-6.el9_5.  60 kB/s | 9.4 kB     00:00    
(102/208): openssl-3.2.2-6.el9_5.x86_64.rpm     5.9 MB/s | 1.4 MB     00:00    
(103/208): openssl-libs-3.2.2-6.el9_5.x86_64.rp  14 MB/s | 2.1 MB     00:00    
(104/208): pcre-8.44-4.el9.x86_64.rpm           1.4 MB/s | 200 kB     00:00    
(105/208): openssl-fips-provider-so-3.0.7-6.el9 1.8 MB/s | 577 kB     00:00    
(106/208): pcre2-10.40-6.el9.x86_64.rpm         1.5 MB/s | 236 kB     00:00    
(107/208): redhat-release-9.5-0.6.el9.x86_64.rp 446 kB/s |  45 kB     00:00    
(108/208): pcre2-syntax-10.40-6.el9.noarch.rpm  1.0 MB/s | 144 kB     00:00    
(109/208): rpm-libs-4.16.1.3-34.el9.x86_64.rpm  3.2 MB/s | 311 kB     00:00    
(110/208): rpm-build-libs-4.16.1.3-34.el9.x86_6 756 kB/s |  90 kB     00:00    
(111/208): rpm-4.16.1.3-34.el9.x86_64.rpm       3.2 MB/s | 541 kB     00:00    
(112/208): systemd-libs-252-46.el9_5.2.x86_64.r 5.5 MB/s | 684 kB     00:00    
(113/208): tar-1.34-7.el9.x86_64.rpm            6.2 MB/s | 889 kB     00:00    
(114/208): unzip-6.0-57.el9.x86_64.rpm          2.0 MB/s | 186 kB     00:00    
(115/208): tzdata-2024b-2.el9.noarch.rpm        4.4 MB/s | 841 kB     00:00    
(116/208): util-linux-2.37.4-20.el9.x86_64.rpm   19 MB/s | 2.3 MB     00:00    
(117/208): util-linux-core-2.37.4-20.el9.x86_64 4.5 MB/s | 468 kB     00:00    
(118/208): krb5-libs-1.21.1-4.el9_5.x86_64.rpm  7.3 MB/s | 771 kB     00:00    
(119/208): pam-1.5.1-22.el9_5.x86_64.rpm        6.5 MB/s | 632 kB     00:00    
(120/208): p11-kit-0.25.3-3.el9_5.x86_64.rpm    5.5 MB/s | 536 kB     00:00    
(121/208): libbrotli-1.0.9-7.el9_5.x86_64.rpm   1.5 MB/s | 316 kB     00:00    
(122/208): shadow-utils-4.9-10.el9_5.x86_64.rpm 5.6 MB/s | 1.2 MB     00:00    
(123/208): p11-kit-trust-0.25.3-3.el9_5.x86_64. 981 kB/s | 144 kB     00:00    
(124/208): libsemanage-3.6-2.1.el9_5.x86_64.rpm 967 kB/s | 120 kB     00:00    
(125/208): ghc-srpm-macros-1.5.0-6.el9.noarch.r  91 kB/s | 9.0 kB     00:00    
(126/208): lua-srpm-macros-1-6.el9.noarch.rpm    58 kB/s |  10 kB     00:00    
(127/208): perl-Digest-MD5-2.58-4.el9.x86_64.rp 278 kB/s |  39 kB     00:00    
(128/208): perl-Data-Dumper-2.174-462.el9.x86_6 329 kB/s |  59 kB     00:00    
(129/208): perl-Mozilla-CA-20200520-6.el9.noarc 144 kB/s |  14 kB     00:00    
(130/208): perl-Encode-3.08-462.el9.x86_64.rpm  8.7 MB/s | 1.7 MB     00:00    
(131/208): perl-Pod-Simple-3.42-4.el9.noarch.rp 1.4 MB/s | 229 kB     00:00    
(132/208): perl-Term-Cap-1.17-460.el9.noarch.rp 219 kB/s |  24 kB     00:00    
(133/208): perl-Time-Local-1.300-7.el9.noarch.r 367 kB/s |  37 kB     00:00    
(134/208): perl-Pod-Escapes-1.07-460.el9.noarch 226 kB/s |  22 kB     00:00    
(135/208): rust-srpm-macros-17-4.el9.noarch.rpm  55 kB/s |  11 kB     00:00    
(136/208): perl-podlators-4.14-460.el9.noarch.r 1.2 MB/s | 118 kB     00:00    
(137/208): perl-Storable-3.21-460.el9.x86_64.rp 558 kB/s |  98 kB     00:00    
(138/208): dwz-0.14-3.el9.x86_64.rpm            1.1 MB/s | 130 kB     00:00    
(139/208): perl-Exporter-5.74-461.el9.noarch.rp 332 kB/s |  34 kB     00:00    
(140/208): perl-File-Temp-0.231.100-4.el9.noarc 554 kB/s |  63 kB     00:00    
(141/208): perl-Getopt-Long-2.52-4.el9.noarch.r 661 kB/s |  64 kB     00:00    
(142/208): perl-MIME-Base64-3.16-4.el9.x86_64.r 313 kB/s |  34 kB     00:00    
(143/208): perl-Text-Tabs+Wrap-2013.0523-460.el 229 kB/s |  25 kB     00:00    
(144/208): perl-parent-0.238-460.el9.noarch.rpm 174 kB/s |  16 kB     00:00    
(145/208): perl-srpm-macros-1-41.el9.noarch.rpm  68 kB/s | 9.4 kB     00:00    
(146/208): openblas-srpm-macros-2-11.el9.noarch  87 kB/s | 8.6 kB     00:00    
(147/208): efi-srpm-macros-6-2.el9_0.noarch.rpm 139 kB/s |  24 kB     00:00    
(148/208): perl-File-Path-2.18-4.el9.noarch.rpm 382 kB/s |  38 kB     00:00    
(149/208): perl-Digest-1.19-4.el9.noarch.rpm    214 kB/s |  29 kB     00:00    
(150/208): perl-IO-Socket-IP-0.41-5.el9.noarch. 430 kB/s |  45 kB     00:00    
(151/208): perl-Pod-Usage-2.01-4.el9.noarch.rpm 473 kB/s |  43 kB     00:00    
(152/208): perl-Socket-2.031-4.el9.x86_64.rpm   480 kB/s |  58 kB     00:00    
(153/208): perl-Term-ANSIColor-5.01-461.el9.noa 569 kB/s |  51 kB     00:00    
(154/208): perl-Text-ParseWords-3.30-460.el9.no 160 kB/s |  18 kB     00:00    
(155/208): perl-constant-1.33-461.el9.noarch.rp 267 kB/s |  25 kB     00:00    
(156/208): perl-URI-5.09-3.el9.noarch.rpm       1.2 MB/s | 125 kB     00:00    
(157/208): fonts-srpm-macros-2.0.5-7.el9.1.noar 260 kB/s |  29 kB     00:00    
(158/208): patch-2.7.6-16.el9.x86_64.rpm        1.1 MB/s | 130 kB     00:00    
(159/208): ocaml-srpm-macros-6-6.el9.noarch.rpm  50 kB/s | 9.1 kB     00:00    
(160/208): perl-Pod-Perldoc-3.28.01-461.el9.noa 871 kB/s |  92 kB     00:00    
(161/208): perl-libnet-3.13-4.el9.noarch.rpm    1.3 MB/s | 134 kB     00:00    
(162/208): perl-Carp-1.50-460.el9.noarch.rpm    357 kB/s |  31 kB     00:00    
(163/208): perl-PathTools-3.78-461.el9.x86_64.r 690 kB/s |  92 kB     00:00    
(164/208): qt5-srpm-macros-5.15.9-1.el9.noarch.  91 kB/s | 9.1 kB     00:00    
(165/208): kernel-srpm-macros-1.0-13.el9.noarch  92 kB/s |  17 kB     00:00    
(166/208): perl-AutoLoader-5.74-481.el9.noarch. 188 kB/s |  21 kB     00:00    
(167/208): perl-SelectSaver-1.02-481.el9.noarch 123 kB/s |  12 kB     00:00    
(168/208): perl-overloading-0.02-481.el9.noarch 152 kB/s |  13 kB     00:00    
(169/208): perl-if-0.60.800-481.el9.noarch.rpm   94 kB/s |  14 kB     00:00    
(170/208): perl-Errno-1.30-481.el9.x86_64.rpm   134 kB/s |  15 kB     00:00    
(171/208): perl-Class-Struct-0.66-481.el9.noarc 125 kB/s |  22 kB     00:00    
(172/208): perl-B-1.80-481.el9.x86_64.rpm       684 kB/s | 184 kB     00:00    
(173/208): perl-File-Basename-2.85-481.el9.noar 173 kB/s |  17 kB     00:00    
(174/208): perl-File-stat-1.09-481.el9.noarch.r 176 kB/s |  17 kB     00:00    
(175/208): perl-FileHandle-2.03-481.el9.noarch. 171 kB/s |  16 kB     00:00    
(176/208): perl-Getopt-Std-1.12-481.el9.noarch. 180 kB/s |  16 kB     00:00    
(177/208): perl-IO-1.43-481.el9.x86_64.rpm      823 kB/s |  92 kB     00:00    
(178/208): perl-HTTP-Tiny-0.076-462.el9.noarch. 325 kB/s |  57 kB     00:00    
(179/208): perl-IPC-Open3-1.21-481.el9.noarch.r 135 kB/s |  24 kB     00:00    
(180/208): perl-POSIX-1.94-481.el9.x86_64.rpm   946 kB/s |  98 kB     00:00    
(181/208): perl-Symbol-1.08-481.el9.noarch.rpm  133 kB/s |  14 kB     00:00    
(182/208): perl-base-2.27-481.el9.noarch.rpm    153 kB/s |  16 kB     00:00    
(183/208): perl-interpreter-5.32.1-481.el9.x86_ 655 kB/s |  73 kB     00:00    
(184/208): perl-libs-5.32.1-481.el9.x86_64.rpm   18 MB/s | 2.2 MB     00:00    
(185/208): perl-vars-1.05-481.el9.noarch.rpm    143 kB/s |  13 kB     00:00    
(186/208): perl-mro-1.23-481.el9.x86_64.rpm     197 kB/s |  29 kB     00:00    
(187/208): perl-overload-1.31-481.el9.noarch.rp 303 kB/s |  46 kB     00:00    
(188/208): perl-Fcntl-1.13-481.el9.x86_64.rpm   247 kB/s |  22 kB     00:00    
(189/208): pyproject-srpm-macros-1.12.0-1.el9.n 140 kB/s |  14 kB     00:00    
(190/208): debugedit-5.0-5.el9.x86_64.rpm       767 kB/s |  81 kB     00:00    
(191/208): go-srpm-macros-3.6.0-3.el9.noarch.rp 322 kB/s |  28 kB     00:00    
(192/208): perl-subs-1.03-481.el9.noarch.rpm    107 kB/s |  12 kB     00:00    
(193/208): python-srpm-macros-3.9-54.el9.noarch 173 kB/s |  18 kB     00:00    
(194/208): redhat-rpm-config-208-1.el9.noarch.r 847 kB/s |  75 kB     00:00    
(195/208): perl-IO-Socket-SSL-2.073-2.el9.noarc 1.6 MB/s | 221 kB     00:00    
(196/208): gdb-minimal-14.2-3.el9.x86_64.rpm     24 MB/s | 4.2 MB     00:00    
(197/208): perl-Net-SSLeay-1.94-1.el9.x86_64.rp 3.1 MB/s | 418 kB     00:00    
(198/208): ansible-srpm-macros-1-16.el9.noarch. 205 kB/s |  21 kB     00:00    
(199/208): perl-Scalar-List-Utils-1.56-462.el9. 410 kB/s |  75 kB     00:00    
(200/208): epel-rpm-macros-9-15.el9.noarch.rpm  399 kB/s |  15 kB     00:00    
(201/208): rpm-build-4.16.1.3-34.el9.x86_64.rpm 379 kB/s |  71 kB     00:00    
(202/208): fpc-srpm-macros-1.3-7.el9.noarch.rpm 212 kB/s | 7.5 kB     00:00    
(203/208): forge-srpm-macros-0.4.0-1.el9.noarch 198 kB/s |  19 kB     00:00    
(204/208): ghc-srpm-macros-epel-1.9.1-1.el9.noa 126 kB/s | 7.5 kB     00:00    
(205/208): go-srpm-macros-epel-3.6.0.1-1.el9.no 485 kB/s |  26 kB     00:00    
(206/208): qt6-srpm-macros-6.6.2-1.el9.noarch.r 183 kB/s | 8.7 kB     00:00    
(207/208): rpmautospec-rpm-macros-0.7.3-1.el9.n 180 kB/s |  10 kB     00:00    
(208/208): rust-srpm-macros-epel-26.3-1.el9.noa 191 kB/s |  10 kB     00:00    
--------------------------------------------------------------------------------
Total                                           7.2 MB/s |  69 MB     00:09     
Red Hat Enterprise Linux - BaseOS               3.5 MB/s | 3.6 kB     00:00    
Importing GPG key 0xFD431D51:
 Userid     : "Red Hat, Inc. (release key 2) <security@redhat.com>"
 Fingerprint: 567E 347A D004 4ADE 55BA 8A5F 199E 2F91 FD43 1D51
 From       : /usr/share/distribution-gpg-keys/redhat/RPM-GPG-KEY-redhat9-release
Key imported successfully
Importing GPG key 0x5A6340B3:
 Userid     : "Red Hat, Inc. (auxiliary key 3) <security@redhat.com>"
 Fingerprint: 7E46 2425 8C40 6535 D56D 6F13 5054 E4A4 5A63 40B3
 From       : /usr/share/distribution-gpg-keys/redhat/RPM-GPG-KEY-redhat9-release
Key imported successfully
Extra Packages for Enterprise Linux 9 - x86_64  1.6 MB/s | 1.6 kB     00:00    
Importing GPG key 0x3228467C:
 Userid     : "Fedora (epel9) <epel@fedoraproject.org>"
 Fingerprint: FF8A D134 4597 106E CE81 3B91 8A38 72BF 3228 467C
 From       : /usr/share/distribution-gpg-keys/epel/RPM-GPG-KEY-EPEL-9
Key imported successfully
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
  Running scriptlet: filesystem-3.16-5.el9.x86_64                           1/1 
  Preparing        :                                                        1/1 
  Installing       : libgcc-11.5.0-2.el9.x86_64                           1/208 
  Running scriptlet: libgcc-11.5.0-2.el9.x86_64                           1/208 
  Installing       : rust-srpm-macros-17-4.el9.noarch                     2/208 
  Installing       : redhat-release-9.5-0.6.el9.x86_64                    3/208 
  Installing       : setup-2.13.7-10.el9.noarch                           4/208 
warning: /etc/hosts created as /etc/hosts.rpmnew

  Running scriptlet: setup-2.13.7-10.el9.noarch                           4/208 
  Installing       : filesystem-3.16-5.el9.x86_64                         5/208 
  Installing       : basesystem-11-13.el9.noarch                          6/208 
  Installing       : rust-srpm-macros-epel-26.3-1.el9.noarch              7/208 
  Installing       : qt6-srpm-macros-6.6.2-1.el9.noarch                   8/208 
  Installing       : ghc-srpm-macros-epel-1.9.1-1.el9.noarch              9/208 
  Installing       : fpc-srpm-macros-1.3-7.el9.noarch                    10/208 
  Installing       : ansible-srpm-macros-1-16.el9.noarch                 11/208 
  Installing       : qt5-srpm-macros-5.15.9-1.el9.noarch                 12/208 
  Installing       : ocaml-srpm-macros-6-6.el9.noarch                    13/208 
  Installing       : openblas-srpm-macros-2-11.el9.noarch                14/208 
  Installing       : perl-srpm-macros-1-41.el9.noarch                    15/208 
  Installing       : ghc-srpm-macros-1.5.0-6.el9.noarch                  16/208 
  Installing       : tzdata-2024b-2.el9.noarch                           17/208 
  Installing       : pcre2-syntax-10.40-6.el9.noarch                     18/208 
  Installing       : coreutils-common-8.32-36.el9.x86_64                 19/208 
  Installing       : libssh-config-0.10.4-13.el9.noarch                  20/208 
  Installing       : ncurses-base-6.2-10.20210508.el9.noarch             21/208 
  Installing       : ncurses-libs-6.2-10.20210508.el9.x86_64             22/208 
  Installing       : bash-5.1.8-9.el9.x86_64                             23/208 
  Running scriptlet: bash-5.1.8-9.el9.x86_64                             23/208 
  Installing       : glibc-common-2.34-125.el9_5.1.x86_64                24/208 
  Installing       : glibc-gconv-extra-2.34-125.el9_5.1.x86_64           25/208 
  Running scriptlet: glibc-gconv-extra-2.34-125.el9_5.1.x86_64           25/208 
  Installing       : glibc-minimal-langpack-2.34-125.el9_5.1.x86_64      26/208 
  Running scriptlet: glibc-2.34-125.el9_5.1.x86_64                       27/208 
  Installing       : glibc-2.34-125.el9_5.1.x86_64                       27/208 
  Running scriptlet: glibc-2.34-125.el9_5.1.x86_64                       27/208 
  Installing       : zlib-1.2.11-40.el9.x86_64                           28/208 
  Installing       : xz-libs-5.2.5-8.el9_0.x86_64                        29/208 
  Installing       : bzip2-libs-1.0.8-8.el9.x86_64                       30/208 
  Installing       : libzstd-1.5.1-2.el9.x86_64                          31/208 
  Installing       : elfutils-libelf-0.191-4.el9.x86_64                  32/208 
  Installing       : libxcrypt-4.4.18-3.el9.x86_64                       33/208 
  Installing       : libstdc++-11.5.0-2.el9.x86_64                       34/208 
  Installing       : libuuid-2.37.4-20.el9.x86_64                        35/208 
  Installing       : libattr-2.5.1-3.el9.x86_64                          36/208 
  Installing       : libacl-2.3.1-4.el9.x86_64                           37/208 
  Installing       : popt-1.18-8.el9.x86_64                              38/208 
  Installing       : libcap-2.48-9.el9_2.x86_64                          39/208 
  Installing       : gmp-1:6.2.0-13.el9.x86_64                           40/208 
  Installing       : lz4-libs-1.9.3-5.el9.x86_64                         41/208 
  Installing       : readline-8.1-4.el9.x86_64                           42/208 
  Installing       : libcom_err-1.46.5-5.el9.x86_64                      43/208 
  Installing       : crypto-policies-20240828-2.git626aa59.el9_5.noar    44/208 
  Running scriptlet: crypto-policies-20240828-2.git626aa59.el9_5.noar    44/208 
  Installing       : mpfr-4.1.0-7.el9.x86_64                             45/208 
  Installing       : dwz-0.14-3.el9.x86_64                               46/208 
  Installing       : unzip-6.0-57.el9.x86_64                             47/208 
  Installing       : file-libs-5.39-16.el9.x86_64                        48/208 
  Installing       : file-5.39-16.el9.x86_64                             49/208 
  Installing       : sqlite-libs-3.34.1-7.el9_3.x86_64                   50/208 
  Installing       : libcap-ng-0.8.2-7.el9.x86_64                        51/208 
  Installing       : audit-libs-3.1.5-1.el9.x86_64                       52/208 
  Installing       : libsigsegv-2.13-4.el9.x86_64                        53/208 
  Installing       : gawk-5.1.0-6.el9.x86_64                             54/208 
  Installing       : libunistring-0.9.10-15.el9.x86_64                   55/208 
  Installing       : libidn2-2.3.0-7.el9.x86_64                          56/208 
  Installing       : libtasn1-4.16.0-8.el9_1.x86_64                      57/208 
  Installing       : lua-libs-5.4.4-4.el9.x86_64                         58/208 
  Installing       : libsepol-3.6-1.el9.x86_64                           59/208 
  Installing       : alternatives-1.24-1.el9_5.1.x86_64                  60/208 
  Installing       : libsmartcols-2.37.4-20.el9.x86_64                   61/208 
  Installing       : zip-3.0-35.el9.x86_64                               62/208 
  Installing       : zstd-1.5.1-2.el9.x86_64                             63/208 
  Running scriptlet: groff-base-1.22.4-10.el9.x86_64                     64/208 
  Installing       : groff-base-1.22.4-10.el9.x86_64                     64/208 
  Running scriptlet: groff-base-1.22.4-10.el9.x86_64                     64/208 
  Installing       : bzip2-1.0.8-8.el9.x86_64                            65/208 
  Installing       : libxml2-2.9.13-6.el9_4.x86_64                       66/208 
  Installing       : info-6.7-15.el9.x86_64                              67/208 
  Installing       : ed-1.14.2-12.el9.x86_64                             68/208 
  Installing       : cpio-2.13-16.el9.x86_64                             69/208 
  Installing       : libgpg-error-1.42-5.el9.x86_64                      70/208 
  Installing       : libgcrypt-1.10.0-11.el9.x86_64                      71/208 
  Installing       : libverto-0.3.2-3.el9.x86_64                         72/208 
  Installing       : diffutils-3.7-12.el9.x86_64                         73/208 
  Installing       : keyutils-libs-1.6.3-1.el9.x86_64                    74/208 
  Installing       : libpkgconf-1.7.3-10.el9.x86_64                      75/208 
  Installing       : pkgconf-1.7.3-10.el9.x86_64                         76/208 
  Installing       : libffi-3.4.2-8.el9.x86_64                           77/208 
  Installing       : p11-kit-0.25.3-3.el9_5.x86_64                       78/208 
  Installing       : p11-kit-trust-0.25.3-3.el9_5.x86_64                 79/208 
  Running scriptlet: p11-kit-trust-0.25.3-3.el9_5.x86_64                 79/208 
  Installing       : ncurses-6.2-10.20210508.el9.x86_64                  80/208 
  Installing       : gdbm-libs-1:1.23-1.el9.x86_64                       81/208 
  Installing       : libdb-5.3.28-54.el9.x86_64                          82/208 
  Installing       : libeconf-0.4.1-4.el9.x86_64                         83/208 
  Installing       : libgomp-11.5.0-2.el9.x86_64                         84/208 
  Installing       : libnghttp2-1.43.0-6.el9.x86_64                      85/208 
  Installing       : pcre-8.44-4.el9.x86_64                              86/208 
  Installing       : grep-3.6-5.el9.x86_64                               87/208 
  Installing       : xz-5.2.5-8.el9_0.x86_64                             88/208 
  Installing       : pcre2-10.40-6.el9.x86_64                            89/208 
  Installing       : libselinux-3.6-1.el9.x86_64                         90/208 
  Installing       : sed-4.8-9.el9.x86_64                                91/208 
  Installing       : findutils-1:4.8.0-7.el9.x86_64                      92/208 
  Installing       : openssl-fips-provider-so-3.0.7-6.el9_5.x86_64       93/208 
  Installing       : openssl-fips-provider-3.0.7-6.el9_5.x86_64          94/208 
  Installing       : openssl-libs-1:3.2.2-6.el9_5.x86_64                 95/208 
  Installing       : coreutils-8.32-36.el9.x86_64                        96/208 
  Running scriptlet: ca-certificates-2024.2.69_v8.0.303-91.4.el9_4.no    97/208 
  Installing       : ca-certificates-2024.2.69_v8.0.303-91.4.el9_4.no    97/208 
  Running scriptlet: ca-certificates-2024.2.69_v8.0.303-91.4.el9_4.no    97/208 
  Installing       : libblkid-2.37.4-20.el9.x86_64                       98/208 
  Running scriptlet: libblkid-2.37.4-20.el9.x86_64                       98/208 
  Installing       : krb5-libs-1.21.1-4.el9_5.x86_64                     99/208 
  Installing       : libmount-2.37.4-20.el9.x86_64                      100/208 
  Installing       : gzip-1.12-1.el9.x86_64                             101/208 
  Installing       : cracklib-2.9.6-27.el9.x86_64                       102/208 
  Installing       : systemd-libs-252-46.el9_5.2.x86_64                 103/208 
  Running scriptlet: systemd-libs-252-46.el9_5.2.x86_64                 103/208 
  Installing       : libarchive-3.5.3-4.el9.x86_64                      104/208 
  Installing       : util-linux-core-2.37.4-20.el9.x86_64               105/208 
  Running scriptlet: util-linux-core-2.37.4-20.el9.x86_64               105/208 
  Installing       : cracklib-dicts-2.9.6-27.el9.x86_64                 106/208 
  Installing       : cyrus-sasl-lib-2.1.27-21.el9.x86_64                107/208 
  Installing       : libssh-0.10.4-13.el9.x86_64                        108/208 
  Installing       : libfdisk-2.37.4-20.el9.x86_64                      109/208 
  Installing       : perl-Digest-1.19-4.el9.noarch                      110/208 
  Installing       : perl-Digest-MD5-2.58-4.el9.x86_64                  111/208 
  Installing       : perl-B-1.80-481.el9.x86_64                         112/208 
  Installing       : perl-FileHandle-2.03-481.el9.noarch                113/208 
  Installing       : perl-Data-Dumper-2.174-462.el9.x86_64              114/208 
  Installing       : perl-libnet-3.13-4.el9.noarch                      115/208 
  Installing       : perl-AutoLoader-5.74-481.el9.noarch                116/208 
  Installing       : perl-base-2.27-481.el9.noarch                      117/208 
  Installing       : perl-URI-5.09-3.el9.noarch                         118/208 
  Installing       : perl-Time-Local-2:1.300-7.el9.noarch               119/208 
  Installing       : perl-if-0.60.800-481.el9.noarch                    120/208 
  Installing       : perl-Mozilla-CA-20200520-6.el9.noarch              121/208 
  Installing       : perl-Pod-Escapes-1:1.07-460.el9.noarch             122/208 
  Installing       : perl-Text-Tabs+Wrap-2013.0523-460.el9.noarch       123/208 
  Installing       : perl-File-Path-2.18-4.el9.noarch                   124/208 
  Installing       : perl-IO-Socket-IP-0.41-5.el9.noarch                125/208 
  Installing       : perl-Net-SSLeay-1.94-1.el9.x86_64                  126/208 
  Installing       : perl-IO-Socket-SSL-2.073-2.el9.noarch              127/208 
  Installing       : perl-Term-ANSIColor-5.01-461.el9.noarch            128/208 
  Installing       : perl-Class-Struct-0.66-481.el9.noarch              129/208 
  Installing       : perl-Term-Cap-1.17-460.el9.noarch                  130/208 
  Installing       : perl-File-Temp-1:0.231.100-4.el9.noarch            131/208 
  Installing       : perl-IPC-Open3-1.21-481.el9.noarch                 132/208 
  Installing       : perl-POSIX-1.94-481.el9.x86_64                     133/208 
  Installing       : perl-subs-1.03-481.el9.noarch                      134/208 
  Installing       : perl-Pod-Simple-1:3.42-4.el9.noarch                135/208 
  Installing       : perl-HTTP-Tiny-0.076-462.el9.noarch                136/208 
  Installing       : perl-Socket-4:2.031-4.el9.x86_64                   137/208 
  Installing       : perl-SelectSaver-1.02-481.el9.noarch               138/208 
  Installing       : perl-Symbol-1.08-481.el9.noarch                    139/208 
  Installing       : perl-podlators-1:4.14-460.el9.noarch               140/208 
  Installing       : perl-Pod-Perldoc-3.28.01-461.el9.noarch            141/208 
  Installing       : perl-File-stat-1.09-481.el9.noarch                 142/208 
  Installing       : perl-Text-ParseWords-3.30-460.el9.noarch           143/208 
  Installing       : perl-overloading-0.02-481.el9.noarch               144/208 
  Installing       : perl-mro-1.23-481.el9.x86_64                       145/208 
  Installing       : perl-Fcntl-1.13-481.el9.x86_64                     146/208 
  Installing       : perl-Pod-Usage-4:2.01-4.el9.noarch                 147/208 
  Installing       : perl-IO-1.43-481.el9.x86_64                        148/208 
  Installing       : perl-parent-1:0.238-460.el9.noarch                 149/208 
  Installing       : perl-MIME-Base64-3.16-4.el9.x86_64                 150/208 
  Installing       : perl-constant-1.33-461.el9.noarch                  151/208 
  Installing       : perl-Errno-1.30-481.el9.x86_64                     152/208 
  Installing       : perl-File-Basename-2.85-481.el9.noarch             153/208 
  Installing       : perl-Getopt-Std-1.12-481.el9.noarch                154/208 
  Installing       : perl-vars-1.05-481.el9.noarch                      155/208 
  Installing       : perl-Storable-1:3.21-460.el9.x86_64                156/208 
  Installing       : perl-Getopt-Long-1:2.52-4.el9.noarch               157/208 
  Installing       : perl-overload-1.31-481.el9.noarch                  158/208 
  Installing       : perl-Scalar-List-Utils-4:1.56-462.el9.x86_64       159/208 
  Installing       : perl-Exporter-5.74-461.el9.noarch                  160/208 
  Installing       : perl-Carp-1.50-460.el9.noarch                      161/208 
  Installing       : perl-PathTools-3.78-461.el9.x86_64                 162/208 
  Installing       : perl-Encode-4:3.08-462.el9.x86_64                  163/208 
  Installing       : perl-libs-4:5.32.1-481.el9.x86_64                  164/208 
  Installing       : perl-interpreter-4:5.32.1-481.el9.x86_64           165/208 
  Installing       : kernel-srpm-macros-1.0-13.el9.noarch               166/208 
  Installing       : openssl-1:3.2.2-6.el9_5.x86_64                     167/208 
  Installing       : libpwquality-1.4.4-8.el9.x86_64                    168/208 
  Installing       : pam-1.5.1-22.el9_5.x86_64                          169/208 
  Installing       : libevent-2.1.12-8.el9_4.x86_64                     170/208 
  Installing       : tar-2:1.34-7.el9.x86_64                            171/208 
  Installing       : libsemanage-3.6-2.1.el9_5.x86_64                   172/208 
  Installing       : shadow-utils-2:4.9-10.el9_5.x86_64                 173/208 
  Running scriptlet: libutempter-1.2.1-6.el9.x86_64                     174/208 
  Installing       : libutempter-1.2.1-6.el9.x86_64                     174/208 
  Installing       : openldap-2.6.6-3.el9.x86_64                        175/208 
  Installing       : patch-2.7.6-16.el9.x86_64                          176/208 
  Installing       : libbrotli-1.0.9-7.el9_5.x86_64                     177/208 
  Installing       : elfutils-default-yama-scope-0.191-4.el9.noarch     178/208 
  Running scriptlet: elfutils-default-yama-scope-0.191-4.el9.noarch     178/208 
  Installing       : elfutils-libs-0.191-4.el9.x86_64                   179/208 
  Installing       : pkgconf-m4-1.7.3-10.el9.noarch                     180/208 
  Installing       : pkgconf-pkg-config-1.7.3-10.el9.x86_64             181/208 
  Installing       : publicsuffix-list-dafsa-20210518-3.el9.noarch      182/208 
  Installing       : libpsl-0.21.1-5.el9.x86_64                         183/208 
  Installing       : libcurl-7.76.1-31.el9.x86_64                       184/208 
  Installing       : elfutils-debuginfod-client-0.191-4.el9.x86_64      185/208 
  Installing       : binutils-gold-2.35.2-54.el9.x86_64                 186/208 
  Installing       : binutils-2.35.2-54.el9.x86_64                      187/208 
  Running scriptlet: binutils-2.35.2-54.el9.x86_64                      187/208 
  Installing       : elfutils-0.191-4.el9.x86_64                        188/208 
  Installing       : gdb-minimal-14.2-3.el9.x86_64                      189/208 
  Installing       : debugedit-5.0-5.el9.x86_64                         190/208 
  Installing       : curl-7.76.1-31.el9.x86_64                          191/208 
  Installing       : rpm-libs-4.16.1.3-34.el9.x86_64                    192/208 
  Installing       : rpm-4.16.1.3-34.el9.x86_64                         193/208 
  Installing       : lua-srpm-macros-1-6.el9.noarch                     194/208 
  Installing       : efi-srpm-macros-6-2.el9_0.noarch                   195/208 
  Installing       : rpmautospec-rpm-macros-0.7.3-1.el9.noarch          196/208 
  Installing       : rpm-build-libs-4.16.1.3-34.el9.x86_64              197/208 
  Installing       : fonts-srpm-macros-1:2.0.5-7.el9.1.noarch           198/208 
  Installing       : go-srpm-macros-3.6.0-3.el9.noarch                  199/208 
  Installing       : python-srpm-macros-3.9-54.el9.noarch               200/208 
  Installing       : redhat-rpm-config-208-1.el9.noarch                 201/208 
  Installing       : rpm-build-4.16.1.3-34.el9.x86_64                   202/208 
  Installing       : pyproject-srpm-macros-1.12.0-1.el9.noarch          203/208 
  Installing       : forge-srpm-macros-0.4.0-1.el9.noarch               204/208 
  Installing       : go-srpm-macros-epel-3.6.0.1-1.el9.noarch           205/208 
  Installing       : epel-rpm-macros-9-15.el9.noarch                    206/208 
  Installing       : util-linux-2.37.4-20.el9.x86_64                    207/208 
  Installing       : which-2.21-29.el9.x86_64                           208/208 
  Running scriptlet: filesystem-3.16-5.el9.x86_64                       208/208 
  Running scriptlet: ca-certificates-2024.2.69_v8.0.303-91.4.el9_4.no   208/208 
  Running scriptlet: rpm-4.16.1.3-34.el9.x86_64                         208/208 
  Running scriptlet: which-2.21-29.el9.x86_64                           208/208 
  Verifying        : basesystem-11-13.el9.noarch                          1/208 
  Verifying        : bzip2-1.0.8-8.el9.x86_64                             2/208 
  Verifying        : bzip2-libs-1.0.8-8.el9.x86_64                        3/208 
  Verifying        : cpio-2.13-16.el9.x86_64                              4/208 
  Verifying        : cracklib-2.9.6-27.el9.x86_64                         5/208 
  Verifying        : ed-1.14.2-12.el9.x86_64                              6/208 
  Verifying        : grep-3.6-5.el9.x86_64                                7/208 
  Verifying        : groff-base-1.22.4-10.el9.x86_64                      8/208 
  Verifying        : info-6.7-15.el9.x86_64                               9/208 
  Verifying        : libattr-2.5.1-3.el9.x86_64                          10/208 
  Verifying        : libcap-ng-0.8.2-7.el9.x86_64                        11/208 
  Verifying        : libgpg-error-1.42-5.el9.x86_64                      12/208 
  Verifying        : libidn2-2.3.0-7.el9.x86_64                          13/208 
  Verifying        : libpsl-0.21.1-5.el9.x86_64                          14/208 
  Verifying        : libpwquality-1.4.4-8.el9.x86_64                     15/208 
  Verifying        : libsigsegv-2.13-4.el9.x86_64                        16/208 
  Verifying        : libunistring-0.9.10-15.el9.x86_64                   17/208 
  Verifying        : libutempter-1.2.1-6.el9.x86_64                      18/208 
  Verifying        : libverto-0.3.2-3.el9.x86_64                         19/208 
  Verifying        : libxcrypt-4.4.18-3.el9.x86_64                       20/208 
  Verifying        : libzstd-1.5.1-2.el9.x86_64                          21/208 
  Verifying        : lz4-libs-1.9.3-5.el9.x86_64                         22/208 
  Verifying        : mpfr-4.1.0-7.el9.x86_64                             23/208 
  Verifying        : popt-1.18-8.el9.x86_64                              24/208 
  Verifying        : publicsuffix-list-dafsa-20210518-3.el9.noarch       25/208 
  Verifying        : readline-8.1-4.el9.x86_64                           26/208 
  Verifying        : sed-4.8-9.el9.x86_64                                27/208 
  Verifying        : cracklib-dicts-2.9.6-27.el9.x86_64                  28/208 
  Verifying        : diffutils-3.7-12.el9.x86_64                         29/208 
  Verifying        : gawk-5.1.0-6.el9.x86_64                             30/208 
  Verifying        : xz-5.2.5-8.el9_0.x86_64                             31/208 
  Verifying        : xz-libs-5.2.5-8.el9_0.x86_64                        32/208 
  Verifying        : zstd-1.5.1-2.el9.x86_64                             33/208 
  Verifying        : cyrus-sasl-lib-2.1.27-21.el9.x86_64                 34/208 
  Verifying        : gzip-1.12-1.el9.x86_64                              35/208 
  Verifying        : libtasn1-4.16.0-8.el9_1.x86_64                      36/208 
  Verifying        : keyutils-libs-1.6.3-1.el9.x86_64                    37/208 
  Verifying        : libarchive-3.5.3-4.el9.x86_64                       38/208 
  Verifying        : libcap-2.48-9.el9_2.x86_64                          39/208 
  Verifying        : libpkgconf-1.7.3-10.el9.x86_64                      40/208 
  Verifying        : pkgconf-1.7.3-10.el9.x86_64                         41/208 
  Verifying        : pkgconf-m4-1.7.3-10.el9.noarch                      42/208 
  Verifying        : pkgconf-pkg-config-1.7.3-10.el9.x86_64              43/208 
  Verifying        : zip-3.0-35.el9.x86_64                               44/208 
  Verifying        : gmp-1:6.2.0-13.el9.x86_64                           45/208 
  Verifying        : libffi-3.4.2-8.el9.x86_64                           46/208 
  Verifying        : lua-libs-5.4.4-4.el9.x86_64                         47/208 
  Verifying        : ncurses-6.2-10.20210508.el9.x86_64                  48/208 
  Verifying        : ncurses-base-6.2-10.20210508.el9.noarch             49/208 
  Verifying        : ncurses-libs-6.2-10.20210508.el9.x86_64             50/208 
  Verifying        : which-2.21-29.el9.x86_64                            51/208 
  Verifying        : zlib-1.2.11-40.el9.x86_64                           52/208 
  Verifying        : bash-5.1.8-9.el9.x86_64                             53/208 
  Verifying        : file-5.39-16.el9.x86_64                             54/208 
  Verifying        : file-libs-5.39-16.el9.x86_64                        55/208 
  Verifying        : libacl-2.3.1-4.el9.x86_64                           56/208 
  Verifying        : libselinux-3.6-1.el9.x86_64                         57/208 
  Verifying        : libsepol-3.6-1.el9.x86_64                           58/208 
  Verifying        : openldap-2.6.6-3.el9.x86_64                         59/208 
  Verifying        : setup-2.13.7-10.el9.noarch                          60/208 
  Verifying        : sqlite-libs-3.34.1-7.el9_3.x86_64                   61/208 
  Verifying        : ca-certificates-2024.2.69_v8.0.303-91.4.el9_4.no    62/208 
  Verifying        : libcom_err-1.46.5-5.el9.x86_64                      63/208 
  Verifying        : libevent-2.1.12-8.el9_4.x86_64                      64/208 
  Verifying        : libssh-0.10.4-13.el9.x86_64                         65/208 
  Verifying        : libssh-config-0.10.4-13.el9.noarch                  66/208 
  Verifying        : libxml2-2.9.13-6.el9_4.x86_64                       67/208 
  Verifying        : alternatives-1.24-1.el9_5.1.x86_64                  68/208 
  Verifying        : audit-libs-3.1.5-1.el9.x86_64                       69/208 
  Verifying        : binutils-2.35.2-54.el9.x86_64                       70/208 
  Verifying        : binutils-gold-2.35.2-54.el9.x86_64                  71/208 
  Verifying        : coreutils-8.32-36.el9.x86_64                        72/208 
  Verifying        : coreutils-common-8.32-36.el9.x86_64                 73/208 
  Verifying        : crypto-policies-20240828-2.git626aa59.el9_5.noar    74/208 
  Verifying        : curl-7.76.1-31.el9.x86_64                           75/208 
  Verifying        : elfutils-0.191-4.el9.x86_64                         76/208 
  Verifying        : elfutils-debuginfod-client-0.191-4.el9.x86_64       77/208 
  Verifying        : elfutils-default-yama-scope-0.191-4.el9.noarch      78/208 
  Verifying        : elfutils-libelf-0.191-4.el9.x86_64                  79/208 
  Verifying        : elfutils-libs-0.191-4.el9.x86_64                    80/208 
  Verifying        : filesystem-3.16-5.el9.x86_64                        81/208 
  Verifying        : findutils-1:4.8.0-7.el9.x86_64                      82/208 
  Verifying        : gdbm-libs-1:1.23-1.el9.x86_64                       83/208 
  Verifying        : glibc-2.34-125.el9_5.1.x86_64                       84/208 
  Verifying        : glibc-common-2.34-125.el9_5.1.x86_64                85/208 
  Verifying        : glibc-gconv-extra-2.34-125.el9_5.1.x86_64           86/208 
  Verifying        : glibc-minimal-langpack-2.34-125.el9_5.1.x86_64      87/208 
  Verifying        : libblkid-2.37.4-20.el9.x86_64                       88/208 
  Verifying        : libcurl-7.76.1-31.el9.x86_64                        89/208 
  Verifying        : libdb-5.3.28-54.el9.x86_64                          90/208 
  Verifying        : libeconf-0.4.1-4.el9.x86_64                         91/208 
  Verifying        : libfdisk-2.37.4-20.el9.x86_64                       92/208 
  Verifying        : libgcc-11.5.0-2.el9.x86_64                          93/208 
  Verifying        : libgcrypt-1.10.0-11.el9.x86_64                      94/208 
  Verifying        : libgomp-11.5.0-2.el9.x86_64                         95/208 
  Verifying        : libmount-2.37.4-20.el9.x86_64                       96/208 
  Verifying        : libnghttp2-1.43.0-6.el9.x86_64                      97/208 
  Verifying        : libsmartcols-2.37.4-20.el9.x86_64                   98/208 
  Verifying        : libstdc++-11.5.0-2.el9.x86_64                       99/208 
  Verifying        : libuuid-2.37.4-20.el9.x86_64                       100/208 
  Verifying        : openssl-1:3.2.2-6.el9_5.x86_64                     101/208 
  Verifying        : openssl-fips-provider-3.0.7-6.el9_5.x86_64         102/208 
  Verifying        : openssl-fips-provider-so-3.0.7-6.el9_5.x86_64      103/208 
  Verifying        : openssl-libs-1:3.2.2-6.el9_5.x86_64                104/208 
  Verifying        : pcre-8.44-4.el9.x86_64                             105/208 
  Verifying        : pcre2-10.40-6.el9.x86_64                           106/208 
  Verifying        : pcre2-syntax-10.40-6.el9.noarch                    107/208 
  Verifying        : redhat-release-9.5-0.6.el9.x86_64                  108/208 
  Verifying        : rpm-4.16.1.3-34.el9.x86_64                         109/208 
  Verifying        : rpm-build-libs-4.16.1.3-34.el9.x86_64              110/208 
  Verifying        : rpm-libs-4.16.1.3-34.el9.x86_64                    111/208 
  Verifying        : systemd-libs-252-46.el9_5.2.x86_64                 112/208 
  Verifying        : tar-2:1.34-7.el9.x86_64                            113/208 
  Verifying        : tzdata-2024b-2.el9.noarch                          114/208 
  Verifying        : unzip-6.0-57.el9.x86_64                            115/208 
  Verifying        : util-linux-2.37.4-20.el9.x86_64                    116/208 
  Verifying        : util-linux-core-2.37.4-20.el9.x86_64               117/208 
  Verifying        : krb5-libs-1.21.1-4.el9_5.x86_64                    118/208 
  Verifying        : pam-1.5.1-22.el9_5.x86_64                          119/208 
  Verifying        : libbrotli-1.0.9-7.el9_5.x86_64                     120/208 
  Verifying        : p11-kit-0.25.3-3.el9_5.x86_64                      121/208 
  Verifying        : shadow-utils-2:4.9-10.el9_5.x86_64                 122/208 
  Verifying        : p11-kit-trust-0.25.3-3.el9_5.x86_64                123/208 
  Verifying        : libsemanage-3.6-2.1.el9_5.x86_64                   124/208 
  Verifying        : ghc-srpm-macros-1.5.0-6.el9.noarch                 125/208 
  Verifying        : lua-srpm-macros-1-6.el9.noarch                     126/208 
  Verifying        : perl-Data-Dumper-2.174-462.el9.x86_64              127/208 
  Verifying        : perl-Digest-MD5-2.58-4.el9.x86_64                  128/208 
  Verifying        : perl-Encode-4:3.08-462.el9.x86_64                  129/208 
  Verifying        : perl-Mozilla-CA-20200520-6.el9.noarch              130/208 
  Verifying        : perl-Pod-Simple-1:3.42-4.el9.noarch                131/208 
  Verifying        : perl-Term-Cap-1.17-460.el9.noarch                  132/208 
  Verifying        : perl-Time-Local-2:1.300-7.el9.noarch               133/208 
  Verifying        : rust-srpm-macros-17-4.el9.noarch                   134/208 
  Verifying        : perl-Pod-Escapes-1:1.07-460.el9.noarch             135/208 
  Verifying        : perl-Storable-1:3.21-460.el9.x86_64                136/208 
  Verifying        : perl-podlators-1:4.14-460.el9.noarch               137/208 
  Verifying        : dwz-0.14-3.el9.x86_64                              138/208 
  Verifying        : perl-Exporter-5.74-461.el9.noarch                  139/208 
  Verifying        : perl-File-Temp-1:0.231.100-4.el9.noarch            140/208 
  Verifying        : perl-Getopt-Long-1:2.52-4.el9.noarch               141/208 
  Verifying        : perl-MIME-Base64-3.16-4.el9.x86_64                 142/208 
  Verifying        : perl-Text-Tabs+Wrap-2013.0523-460.el9.noarch       143/208 
  Verifying        : perl-parent-1:0.238-460.el9.noarch                 144/208 
  Verifying        : perl-srpm-macros-1-41.el9.noarch                   145/208 
  Verifying        : efi-srpm-macros-6-2.el9_0.noarch                   146/208 
  Verifying        : openblas-srpm-macros-2-11.el9.noarch               147/208 
  Verifying        : perl-Digest-1.19-4.el9.noarch                      148/208 
  Verifying        : perl-File-Path-2.18-4.el9.noarch                   149/208 
  Verifying        : perl-IO-Socket-IP-0.41-5.el9.noarch                150/208 
  Verifying        : perl-Pod-Usage-4:2.01-4.el9.noarch                 151/208 
  Verifying        : perl-Socket-4:2.031-4.el9.x86_64                   152/208 
  Verifying        : perl-Term-ANSIColor-5.01-461.el9.noarch            153/208 
  Verifying        : perl-Text-ParseWords-3.30-460.el9.noarch           154/208 
  Verifying        : perl-URI-5.09-3.el9.noarch                         155/208 
  Verifying        : perl-constant-1.33-461.el9.noarch                  156/208 
  Verifying        : fonts-srpm-macros-1:2.0.5-7.el9.1.noarch           157/208 
  Verifying        : ocaml-srpm-macros-6-6.el9.noarch                   158/208 
  Verifying        : patch-2.7.6-16.el9.x86_64                          159/208 
  Verifying        : perl-Pod-Perldoc-3.28.01-461.el9.noarch            160/208 
  Verifying        : perl-libnet-3.13-4.el9.noarch                      161/208 
  Verifying        : perl-Carp-1.50-460.el9.noarch                      162/208 
  Verifying        : perl-PathTools-3.78-461.el9.x86_64                 163/208 
  Verifying        : kernel-srpm-macros-1.0-13.el9.noarch               164/208 
  Verifying        : qt5-srpm-macros-5.15.9-1.el9.noarch                165/208 
  Verifying        : perl-AutoLoader-5.74-481.el9.noarch                166/208 
  Verifying        : perl-SelectSaver-1.02-481.el9.noarch               167/208 
  Verifying        : perl-if-0.60.800-481.el9.noarch                    168/208 
  Verifying        : perl-overloading-0.02-481.el9.noarch               169/208 
  Verifying        : perl-B-1.80-481.el9.x86_64                         170/208 
  Verifying        : perl-Class-Struct-0.66-481.el9.noarch              171/208 
  Verifying        : perl-Errno-1.30-481.el9.x86_64                     172/208 
  Verifying        : perl-File-Basename-2.85-481.el9.noarch             173/208 
  Verifying        : perl-File-stat-1.09-481.el9.noarch                 174/208 
  Verifying        : perl-FileHandle-2.03-481.el9.noarch                175/208 
  Verifying        : perl-Getopt-Std-1.12-481.el9.noarch                176/208 
  Verifying        : perl-HTTP-Tiny-0.076-462.el9.noarch                177/208 
  Verifying        : perl-IO-1.43-481.el9.x86_64                        178/208 
  Verifying        : perl-IPC-Open3-1.21-481.el9.noarch                 179/208 
  Verifying        : perl-POSIX-1.94-481.el9.x86_64                     180/208 
  Verifying        : perl-Symbol-1.08-481.el9.noarch                    181/208 
  Verifying        : perl-base-2.27-481.el9.noarch                      182/208 
  Verifying        : perl-interpreter-4:5.32.1-481.el9.x86_64           183/208 
  Verifying        : perl-libs-4:5.32.1-481.el9.x86_64                  184/208 
  Verifying        : perl-mro-1.23-481.el9.x86_64                       185/208 
  Verifying        : perl-overload-1.31-481.el9.noarch                  186/208 
  Verifying        : perl-vars-1.05-481.el9.noarch                      187/208 
  Verifying        : pyproject-srpm-macros-1.12.0-1.el9.noarch          188/208 
  Verifying        : debugedit-5.0-5.el9.x86_64                         189/208 
  Verifying        : perl-Fcntl-1.13-481.el9.x86_64                     190/208 
  Verifying        : perl-subs-1.03-481.el9.noarch                      191/208 
  Verifying        : go-srpm-macros-3.6.0-3.el9.noarch                  192/208 
  Verifying        : python-srpm-macros-3.9-54.el9.noarch               193/208 
  Verifying        : redhat-rpm-config-208-1.el9.noarch                 194/208 
  Verifying        : gdb-minimal-14.2-3.el9.x86_64                      195/208 
  Verifying        : perl-IO-Socket-SSL-2.073-2.el9.noarch              196/208 
  Verifying        : perl-Net-SSLeay-1.94-1.el9.x86_64                  197/208 
  Verifying        : perl-Scalar-List-Utils-4:1.56-462.el9.x86_64       198/208 
  Verifying        : rpm-build-4.16.1.3-34.el9.x86_64                   199/208 
  Verifying        : ansible-srpm-macros-1-16.el9.noarch                200/208 
  Verifying        : epel-rpm-macros-9-15.el9.noarch                    201/208 
  Verifying        : forge-srpm-macros-0.4.0-1.el9.noarch               202/208 
  Verifying        : fpc-srpm-macros-1.3-7.el9.noarch                   203/208 
  Verifying        : ghc-srpm-macros-epel-1.9.1-1.el9.noarch            204/208 
  Verifying        : go-srpm-macros-epel-3.6.0.1-1.el9.noarch           205/208 
  Verifying        : qt6-srpm-macros-6.6.2-1.el9.noarch                 206/208 
  Verifying        : rpmautospec-rpm-macros-0.7.3-1.el9.noarch          207/208 
  Verifying        : rust-srpm-macros-epel-26.3-1.el9.noarch            208/208 
Installed products updated.

Installed:
  alternatives-1.24-1.el9_5.1.x86_64                                            
  ansible-srpm-macros-1-16.el9.noarch                                           
  audit-libs-3.1.5-1.el9.x86_64                                                 
  basesystem-11-13.el9.noarch                                                   
  bash-5.1.8-9.el9.x86_64                                                       
  binutils-2.35.2-54.el9.x86_64                                                 
  binutils-gold-2.35.2-54.el9.x86_64                                            
  bzip2-1.0.8-8.el9.x86_64                                                      
  bzip2-libs-1.0.8-8.el9.x86_64                                                 
  ca-certificates-2024.2.69_v8.0.303-91.4.el9_4.noarch                          
  coreutils-8.32-36.el9.x86_64                                                  
  coreutils-common-8.32-36.el9.x86_64                                           
  cpio-2.13-16.el9.x86_64                                                       
  cracklib-2.9.6-27.el9.x86_64                                                  
  cracklib-dicts-2.9.6-27.el9.x86_64                                            
  crypto-policies-20240828-2.git626aa59.el9_5.noarch                            
  curl-7.76.1-31.el9.x86_64                                                     
  cyrus-sasl-lib-2.1.27-21.el9.x86_64                                           
  debugedit-5.0-5.el9.x86_64                                                    
  diffutils-3.7-12.el9.x86_64                                                   
  dwz-0.14-3.el9.x86_64                                                         
  ed-1.14.2-12.el9.x86_64                                                       
  efi-srpm-macros-6-2.el9_0.noarch                                              
  elfutils-0.191-4.el9.x86_64                                                   
  elfutils-debuginfod-client-0.191-4.el9.x86_64                                 
  elfutils-default-yama-scope-0.191-4.el9.noarch                                
  elfutils-libelf-0.191-4.el9.x86_64                                            
  elfutils-libs-0.191-4.el9.x86_64                                              
  epel-rpm-macros-9-15.el9.noarch                                               
  file-5.39-16.el9.x86_64                                                       
  file-libs-5.39-16.el9.x86_64                                                  
  filesystem-3.16-5.el9.x86_64                                                  
  findutils-1:4.8.0-7.el9.x86_64                                                
  fonts-srpm-macros-1:2.0.5-7.el9.1.noarch                                      
  forge-srpm-macros-0.4.0-1.el9.noarch                                          
  fpc-srpm-macros-1.3-7.el9.noarch                                              
  gawk-5.1.0-6.el9.x86_64                                                       
  gdb-minimal-14.2-3.el9.x86_64                                                 
  gdbm-libs-1:1.23-1.el9.x86_64                                                 
  ghc-srpm-macros-1.5.0-6.el9.noarch                                            
  ghc-srpm-macros-epel-1.9.1-1.el9.noarch                                       
  glibc-2.34-125.el9_5.1.x86_64                                                 
  glibc-common-2.34-125.el9_5.1.x86_64                                          
  glibc-gconv-extra-2.34-125.el9_5.1.x86_64                                     
  glibc-minimal-langpack-2.34-125.el9_5.1.x86_64                                
  gmp-1:6.2.0-13.el9.x86_64                                                     
  go-srpm-macros-3.6.0-3.el9.noarch                                             
  go-srpm-macros-epel-3.6.0.1-1.el9.noarch                                      
  grep-3.6-5.el9.x86_64                                                         
  groff-base-1.22.4-10.el9.x86_64                                               
  gzip-1.12-1.el9.x86_64                                                        
  info-6.7-15.el9.x86_64                                                        
  kernel-srpm-macros-1.0-13.el9.noarch                                          
  keyutils-libs-1.6.3-1.el9.x86_64                                              
  krb5-libs-1.21.1-4.el9_5.x86_64                                               
  libacl-2.3.1-4.el9.x86_64                                                     
  libarchive-3.5.3-4.el9.x86_64                                                 
  libattr-2.5.1-3.el9.x86_64                                                    
  libblkid-2.37.4-20.el9.x86_64                                                 
  libbrotli-1.0.9-7.el9_5.x86_64                                                
  libcap-2.48-9.el9_2.x86_64                                                    
  libcap-ng-0.8.2-7.el9.x86_64                                                  
  libcom_err-1.46.5-5.el9.x86_64                                                
  libcurl-7.76.1-31.el9.x86_64                                                  
  libdb-5.3.28-54.el9.x86_64                                                    
  libeconf-0.4.1-4.el9.x86_64                                                   
  libevent-2.1.12-8.el9_4.x86_64                                                
  libfdisk-2.37.4-20.el9.x86_64                                                 
  libffi-3.4.2-8.el9.x86_64                                                     
  libgcc-11.5.0-2.el9.x86_64                                                    
  libgcrypt-1.10.0-11.el9.x86_64                                                
  libgomp-11.5.0-2.el9.x86_64                                                   
  libgpg-error-1.42-5.el9.x86_64                                                
  libidn2-2.3.0-7.el9.x86_64                                                    
  libmount-2.37.4-20.el9.x86_64                                                 
  libnghttp2-1.43.0-6.el9.x86_64                                                
  libpkgconf-1.7.3-10.el9.x86_64                                                
  libpsl-0.21.1-5.el9.x86_64                                                    
  libpwquality-1.4.4-8.el9.x86_64                                               
  libselinux-3.6-1.el9.x86_64                                                   
  libsemanage-3.6-2.1.el9_5.x86_64                                              
  libsepol-3.6-1.el9.x86_64                                                     
  libsigsegv-2.13-4.el9.x86_64                                                  
  libsmartcols-2.37.4-20.el9.x86_64                                             
  libssh-0.10.4-13.el9.x86_64                                                   
  libssh-config-0.10.4-13.el9.noarch                                            
  libstdc++-11.5.0-2.el9.x86_64                                                 
  libtasn1-4.16.0-8.el9_1.x86_64                                                
  libunistring-0.9.10-15.el9.x86_64                                             
  libutempter-1.2.1-6.el9.x86_64                                                
  libuuid-2.37.4-20.el9.x86_64                                                  
  libverto-0.3.2-3.el9.x86_64                                                   
  libxcrypt-4.4.18-3.el9.x86_64                                                 
  libxml2-2.9.13-6.el9_4.x86_64                                                 
  libzstd-1.5.1-2.el9.x86_64                                                    
  lua-libs-5.4.4-4.el9.x86_64                                                   
  lua-srpm-macros-1-6.el9.noarch                                                
  lz4-libs-1.9.3-5.el9.x86_64                                                   
  mpfr-4.1.0-7.el9.x86_64                                                       
  ncurses-6.2-10.20210508.el9.x86_64                                            
  ncurses-base-6.2-10.20210508.el9.noarch                                       
  ncurses-libs-6.2-10.20210508.el9.x86_64                                       
  ocaml-srpm-macros-6-6.el9.noarch                                              
  openblas-srpm-macros-2-11.el9.noarch                                          
  openldap-2.6.6-3.el9.x86_64                                                   
  openssl-1:3.2.2-6.el9_5.x86_64                                                
  openssl-fips-provider-3.0.7-6.el9_5.x86_64                                    
  openssl-fips-provider-so-3.0.7-6.el9_5.x86_64                                 
  openssl-libs-1:3.2.2-6.el9_5.x86_64                                           
  p11-kit-0.25.3-3.el9_5.x86_64                                                 
  p11-kit-trust-0.25.3-3.el9_5.x86_64                                           
  pam-1.5.1-22.el9_5.x86_64                                                     
  patch-2.7.6-16.el9.x86_64                                                     
  pcre-8.44-4.el9.x86_64                                                        
  pcre2-10.40-6.el9.x86_64                                                      
  pcre2-syntax-10.40-6.el9.noarch                                               
  perl-AutoLoader-5.74-481.el9.noarch                                           
  perl-B-1.80-481.el9.x86_64                                                    
  perl-Carp-1.50-460.el9.noarch                                                 
  perl-Class-Struct-0.66-481.el9.noarch                                         
  perl-Data-Dumper-2.174-462.el9.x86_64                                         
  perl-Digest-1.19-4.el9.noarch                                                 
  perl-Digest-MD5-2.58-4.el9.x86_64                                             
  perl-Encode-4:3.08-462.el9.x86_64                                             
  perl-Errno-1.30-481.el9.x86_64                                                
  perl-Exporter-5.74-461.el9.noarch                                             
  perl-Fcntl-1.13-481.el9.x86_64                                                
  perl-File-Basename-2.85-481.el9.noarch                                        
  perl-File-Path-2.18-4.el9.noarch                                              
  perl-File-Temp-1:0.231.100-4.el9.noarch                                       
  perl-File-stat-1.09-481.el9.noarch                                            
  perl-FileHandle-2.03-481.el9.noarch                                           
  perl-Getopt-Long-1:2.52-4.el9.noarch                                          
  perl-Getopt-Std-1.12-481.el9.noarch                                           
  perl-HTTP-Tiny-0.076-462.el9.noarch                                           
  perl-IO-1.43-481.el9.x86_64                                                   
  perl-IO-Socket-IP-0.41-5.el9.noarch                                           
  perl-IO-Socket-SSL-2.073-2.el9.noarch                                         
  perl-IPC-Open3-1.21-481.el9.noarch                                            
  perl-MIME-Base64-3.16-4.el9.x86_64                                            
  perl-Mozilla-CA-20200520-6.el9.noarch                                         
  perl-Net-SSLeay-1.94-1.el9.x86_64                                             
  perl-POSIX-1.94-481.el9.x86_64                                                
  perl-PathTools-3.78-461.el9.x86_64                                            
  perl-Pod-Escapes-1:1.07-460.el9.noarch                                        
  perl-Pod-Perldoc-3.28.01-461.el9.noarch                                       
  perl-Pod-Simple-1:3.42-4.el9.noarch                                           
  perl-Pod-Usage-4:2.01-4.el9.noarch                                            
  perl-Scalar-List-Utils-4:1.56-462.el9.x86_64                                  
  perl-SelectSaver-1.02-481.el9.noarch                                          
  perl-Socket-4:2.031-4.el9.x86_64                                              
  perl-Storable-1:3.21-460.el9.x86_64                                           
  perl-Symbol-1.08-481.el9.noarch                                               
  perl-Term-ANSIColor-5.01-461.el9.noarch                                       
  perl-Term-Cap-1.17-460.el9.noarch                                             
  perl-Text-ParseWords-3.30-460.el9.noarch                                      
  perl-Text-Tabs+Wrap-2013.0523-460.el9.noarch                                  
  perl-Time-Local-2:1.300-7.el9.noarch                                          
  perl-URI-5.09-3.el9.noarch                                                    
  perl-base-2.27-481.el9.noarch                                                 
  perl-constant-1.33-461.el9.noarch                                             
  perl-if-0.60.800-481.el9.noarch                                               
  perl-interpreter-4:5.32.1-481.el9.x86_64                                      
  perl-libnet-3.13-4.el9.noarch                                                 
  perl-libs-4:5.32.1-481.el9.x86_64                                             
  perl-mro-1.23-481.el9.x86_64                                                  
  perl-overload-1.31-481.el9.noarch                                             
  perl-overloading-0.02-481.el9.noarch                                          
  perl-parent-1:0.238-460.el9.noarch                                            
  perl-podlators-1:4.14-460.el9.noarch                                          
  perl-srpm-macros-1-41.el9.noarch                                              
  perl-subs-1.03-481.el9.noarch                                                 
  perl-vars-1.05-481.el9.noarch                                                 
  pkgconf-1.7.3-10.el9.x86_64                                                   
  pkgconf-m4-1.7.3-10.el9.noarch                                                
  pkgconf-pkg-config-1.7.3-10.el9.x86_64                                        
  popt-1.18-8.el9.x86_64                                                        
  publicsuffix-list-dafsa-20210518-3.el9.noarch                                 
  pyproject-srpm-macros-1.12.0-1.el9.noarch                                     
  python-srpm-macros-3.9-54.el9.noarch                                          
  qt5-srpm-macros-5.15.9-1.el9.noarch                                           
  qt6-srpm-macros-6.6.2-1.el9.noarch                                            
  readline-8.1-4.el9.x86_64                                                     
  redhat-release-9.5-0.6.el9.x86_64                                             
  redhat-rpm-config-208-1.el9.noarch                                            
  rpm-4.16.1.3-34.el9.x86_64                                                    
  rpm-build-4.16.1.3-34.el9.x86_64                                              
  rpm-build-libs-4.16.1.3-34.el9.x86_64                                         
  rpm-libs-4.16.1.3-34.el9.x86_64                                               
  rpmautospec-rpm-macros-0.7.3-1.el9.noarch                                     
  rust-srpm-macros-17-4.el9.noarch                                              
  rust-srpm-macros-epel-26.3-1.el9.noarch                                       
  sed-4.8-9.el9.x86_64                                                          
  setup-2.13.7-10.el9.noarch                                                    
  shadow-utils-2:4.9-10.el9_5.x86_64                                            
  sqlite-libs-3.34.1-7.el9_3.x86_64                                             
  systemd-libs-252-46.el9_5.2.x86_64                                            
  tar-2:1.34-7.el9.x86_64                                                       
  tzdata-2024b-2.el9.noarch                                                     
  unzip-6.0-57.el9.x86_64                                                       
  util-linux-2.37.4-20.el9.x86_64                                               
  util-linux-core-2.37.4-20.el9.x86_64                                          
  which-2.21-29.el9.x86_64                                                      
  xz-5.2.5-8.el9_0.x86_64                                                       
  xz-libs-5.2.5-8.el9_0.x86_64                                                  
  zip-3.0-35.el9.x86_64                                                         
  zlib-1.2.11-40.el9.x86_64                                                     
  zstd-1.5.1-2.el9.x86_64                                                       

Complete!
Finish: installing minimal buildroot with dnf
Start: creating root cache
Finish: creating root cache
Finish: chroot init
INFO: Installed packages:
INFO: alternatives-1.24-1.el9_5.1.x86_64
ansible-srpm-macros-1-16.el9.noarch
audit-libs-3.1.5-1.el9.x86_64
basesystem-11-13.el9.noarch
bash-5.1.8-9.el9.x86_64
binutils-2.35.2-54.el9.x86_64
binutils-gold-2.35.2-54.el9.x86_64
bzip2-1.0.8-8.el9.x86_64
bzip2-libs-1.0.8-8.el9.x86_64
ca-certificates-2024.2.69_v8.0.303-91.4.el9_4.noarch
coreutils-8.32-36.el9.x86_64
coreutils-common-8.32-36.el9.x86_64
cpio-2.13-16.el9.x86_64
cracklib-2.9.6-27.el9.x86_64
cracklib-dicts-2.9.6-27.el9.x86_64
crypto-policies-20240828-2.git626aa59.el9_5.noarch
curl-7.76.1-31.el9.x86_64
cyrus-sasl-lib-2.1.27-21.el9.x86_64
debugedit-5.0-5.el9.x86_64
diffutils-3.7-12.el9.x86_64
dwz-0.14-3.el9.x86_64
ed-1.14.2-12.el9.x86_64
efi-srpm-macros-6-2.el9_0.noarch
elfutils-0.191-4.el9.x86_64
elfutils-debuginfod-client-0.191-4.el9.x86_64
elfutils-default-yama-scope-0.191-4.el9.noarch
elfutils-libelf-0.191-4.el9.x86_64
elfutils-libs-0.191-4.el9.x86_64
epel-rpm-macros-9-15.el9.noarch
file-5.39-16.el9.x86_64
file-libs-5.39-16.el9.x86_64
filesystem-3.16-5.el9.x86_64
findutils-4.8.0-7.el9.x86_64
fonts-srpm-macros-2.0.5-7.el9.1.noarch
forge-srpm-macros-0.4.0-1.el9.noarch
fpc-srpm-macros-1.3-7.el9.noarch
gawk-5.1.0-6.el9.x86_64
gdb-minimal-14.2-3.el9.x86_64
gdbm-libs-1.23-1.el9.x86_64
ghc-srpm-macros-1.5.0-6.el9.noarch
ghc-srpm-macros-epel-1.9.1-1.el9.noarch
glibc-2.34-125.el9_5.1.x86_64
glibc-common-2.34-125.el9_5.1.x86_64
glibc-gconv-extra-2.34-125.el9_5.1.x86_64
glibc-minimal-langpack-2.34-125.el9_5.1.x86_64
gmp-6.2.0-13.el9.x86_64
go-srpm-macros-3.6.0-3.el9.noarch
go-srpm-macros-epel-3.6.0.1-1.el9.noarch
gpg-pubkey-3228467c-613798eb
gpg-pubkey-5a6340b3-6229229e
gpg-pubkey-fd431d51-4ae0493b
grep-3.6-5.el9.x86_64
groff-base-1.22.4-10.el9.x86_64
gzip-1.12-1.el9.x86_64
info-6.7-15.el9.x86_64
kernel-srpm-macros-1.0-13.el9.noarch
keyutils-libs-1.6.3-1.el9.x86_64
krb5-libs-1.21.1-4.el9_5.x86_64
libacl-2.3.1-4.el9.x86_64
libarchive-3.5.3-4.el9.x86_64
libattr-2.5.1-3.el9.x86_64
libblkid-2.37.4-20.el9.x86_64
libbrotli-1.0.9-7.el9_5.x86_64
libcap-2.48-9.el9_2.x86_64
libcap-ng-0.8.2-7.el9.x86_64
libcom_err-1.46.5-5.el9.x86_64
libcurl-7.76.1-31.el9.x86_64
libdb-5.3.28-54.el9.x86_64
libeconf-0.4.1-4.el9.x86_64
libevent-2.1.12-8.el9_4.x86_64
libfdisk-2.37.4-20.el9.x86_64
libffi-3.4.2-8.el9.x86_64
libgcc-11.5.0-2.el9.x86_64
libgcrypt-1.10.0-11.el9.x86_64
libgomp-11.5.0-2.el9.x86_64
libgpg-error-1.42-5.el9.x86_64
libidn2-2.3.0-7.el9.x86_64
libmount-2.37.4-20.el9.x86_64
libnghttp2-1.43.0-6.el9.x86_64
libpkgconf-1.7.3-10.el9.x86_64
libpsl-0.21.1-5.el9.x86_64
libpwquality-1.4.4-8.el9.x86_64
libselinux-3.6-1.el9.x86_64
libsemanage-3.6-2.1.el9_5.x86_64
libsepol-3.6-1.el9.x86_64
libsigsegv-2.13-4.el9.x86_64
libsmartcols-2.37.4-20.el9.x86_64
libssh-0.10.4-13.el9.x86_64
libssh-config-0.10.4-13.el9.noarch
libstdc++-11.5.0-2.el9.x86_64
libtasn1-4.16.0-8.el9_1.x86_64
libunistring-0.9.10-15.el9.x86_64
libutempter-1.2.1-6.el9.x86_64
libuuid-2.37.4-20.el9.x86_64
libverto-0.3.2-3.el9.x86_64
libxcrypt-4.4.18-3.el9.x86_64
libxml2-2.9.13-6.el9_4.x86_64
libzstd-1.5.1-2.el9.x86_64
lua-libs-5.4.4-4.el9.x86_64
lua-srpm-macros-1-6.el9.noarch
lz4-libs-1.9.3-5.el9.x86_64
mpfr-4.1.0-7.el9.x86_64
ncurses-6.2-10.20210508.el9.x86_64
ncurses-base-6.2-10.20210508.el9.noarch
ncurses-libs-6.2-10.20210508.el9.x86_64
ocaml-srpm-macros-6-6.el9.noarch
openblas-srpm-macros-2-11.el9.noarch
openldap-2.6.6-3.el9.x86_64
openssl-3.2.2-6.el9_5.x86_64
openssl-fips-provider-3.0.7-6.el9_5.x86_64
openssl-fips-provider-so-3.0.7-6.el9_5.x86_64
openssl-libs-3.2.2-6.el9_5.x86_64
p11-kit-0.25.3-3.el9_5.x86_64
p11-kit-trust-0.25.3-3.el9_5.x86_64
pam-1.5.1-22.el9_5.x86_64
patch-2.7.6-16.el9.x86_64
pcre-8.44-4.el9.x86_64
pcre2-10.40-6.el9.x86_64
pcre2-syntax-10.40-6.el9.noarch
perl-AutoLoader-5.74-481.el9.noarch
perl-B-1.80-481.el9.x86_64
perl-Carp-1.50-460.el9.noarch
perl-Class-Struct-0.66-481.el9.noarch
perl-Data-Dumper-2.174-462.el9.x86_64
perl-Digest-1.19-4.el9.noarch
perl-Digest-MD5-2.58-4.el9.x86_64
perl-Encode-3.08-462.el9.x86_64
perl-Errno-1.30-481.el9.x86_64
perl-Exporter-5.74-461.el9.noarch
perl-Fcntl-1.13-481.el9.x86_64
perl-File-Basename-2.85-481.el9.noarch
perl-File-Path-2.18-4.el9.noarch
perl-File-Temp-0.231.100-4.el9.noarch
perl-File-stat-1.09-481.el9.noarch
perl-FileHandle-2.03-481.el9.noarch
perl-Getopt-Long-2.52-4.el9.noarch
perl-Getopt-Std-1.12-481.el9.noarch
perl-HTTP-Tiny-0.076-462.el9.noarch
perl-IO-1.43-481.el9.x86_64
perl-IO-Socket-IP-0.41-5.el9.noarch
perl-IO-Socket-SSL-2.073-2.el9.noarch
perl-IPC-Open3-1.21-481.el9.noarch
perl-MIME-Base64-3.16-4.el9.x86_64
perl-Mozilla-CA-20200520-6.el9.noarch
perl-Net-SSLeay-1.94-1.el9.x86_64
perl-POSIX-1.94-481.el9.x86_64
perl-PathTools-3.78-461.el9.x86_64
perl-Pod-Escapes-1.07-460.el9.noarch
perl-Pod-Perldoc-3.28.01-461.el9.noarch
perl-Pod-Simple-3.42-4.el9.noarch
perl-Pod-Usage-2.01-4.el9.noarch
perl-Scalar-List-Utils-1.56-462.el9.x86_64
perl-SelectSaver-1.02-481.el9.noarch
perl-Socket-2.031-4.el9.x86_64
perl-Storable-3.21-460.el9.x86_64
perl-Symbol-1.08-481.el9.noarch
perl-Term-ANSIColor-5.01-461.el9.noarch
perl-Term-Cap-1.17-460.el9.noarch
perl-Text-ParseWords-3.30-460.el9.noarch
perl-Text-Tabs+Wrap-2013.0523-460.el9.noarch
perl-Time-Local-1.300-7.el9.noarch
perl-URI-5.09-3.el9.noarch
perl-base-2.27-481.el9.noarch
perl-constant-1.33-461.el9.noarch
perl-if-0.60.800-481.el9.noarch
perl-interpreter-5.32.1-481.el9.x86_64
perl-libnet-3.13-4.el9.noarch
perl-libs-5.32.1-481.el9.x86_64
perl-mro-1.23-481.el9.x86_64
perl-overload-1.31-481.el9.noarch
perl-overloading-0.02-481.el9.noarch
perl-parent-0.238-460.el9.noarch
perl-podlators-4.14-460.el9.noarch
perl-srpm-macros-1-41.el9.noarch
perl-subs-1.03-481.el9.noarch
perl-vars-1.05-481.el9.noarch
pkgconf-1.7.3-10.el9.x86_64
pkgconf-m4-1.7.3-10.el9.noarch
pkgconf-pkg-config-1.7.3-10.el9.x86_64
popt-1.18-8.el9.x86_64
publicsuffix-list-dafsa-20210518-3.el9.noarch
pyproject-srpm-macros-1.12.0-1.el9.noarch
python-srpm-macros-3.9-54.el9.noarch
qt5-srpm-macros-5.15.9-1.el9.noarch
qt6-srpm-macros-6.6.2-1.el9.noarch
readline-8.1-4.el9.x86_64
redhat-release-9.5-0.6.el9.x86_64
redhat-rpm-config-208-1.el9.noarch
rpm-4.16.1.3-34.el9.x86_64
rpm-build-4.16.1.3-34.el9.x86_64
rpm-build-libs-4.16.1.3-34.el9.x86_64
rpm-libs-4.16.1.3-34.el9.x86_64
rpmautospec-rpm-macros-0.7.3-1.el9.noarch
rust-srpm-macros-17-4.el9.noarch
rust-srpm-macros-epel-26.3-1.el9.noarch
sed-4.8-9.el9.x86_64
setup-2.13.7-10.el9.noarch
shadow-utils-4.9-10.el9_5.x86_64
sqlite-libs-3.34.1-7.el9_3.x86_64
systemd-libs-252-46.el9_5.2.x86_64
tar-1.34-7.el9.x86_64
tzdata-2024b-2.el9.noarch
unzip-6.0-57.el9.x86_64
util-linux-2.37.4-20.el9.x86_64
util-linux-core-2.37.4-20.el9.x86_64
which-2.21-29.el9.x86_64
xz-5.2.5-8.el9_0.x86_64
xz-libs-5.2.5-8.el9_0.x86_64
zip-3.0-35.el9.x86_64
zlib-1.2.11-40.el9.x86_64
zstd-1.5.1-2.el9.x86_64
Start: buildsrpm
Start: rpmbuild -bs
Building target platforms: x86_64
Building for target x86_64
setting SOURCE_DATE_EPOCH=1738022400
Wrote: /builddir/build/SRPMS/pycharm-community-2024.3.2-1.el9.src.rpm
Finish: rpmbuild -bs
INFO: chroot_scan: 3 files copied to /var/lib/copr-rpmbuild/results/chroot_scan
INFO: /var/lib/mock/rhel+epel-9-x86_64-1738090619.985866/root/var/log/dnf.log
/var/lib/mock/rhel+epel-9-x86_64-1738090619.985866/root/var/log/dnf.librepo.log
/var/lib/mock/rhel+epel-9-x86_64-1738090619.985866/root/var/log/dnf.rpm.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-91ro61dh/pycharm-community/pycharm-community.spec) Config(child) 2 minutes 39 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/pycharm-community-2024.3.2-1.el9.src.rpm)  Config(rhel+epel-9-x86_64)
Start(bootstrap): chroot init
INFO: mounting tmpfs at /var/lib/mock/rhel+epel-9-x86_64-bootstrap-1738090619.985866/root.
INFO: reusing tmpfs at /var/lib/mock/rhel+epel-9-x86_64-bootstrap-1738090619.985866/root.
INFO: calling preinit hooks
INFO: enabled root cache
INFO: enabled package manager cache
Start(bootstrap): cleaning package manager metadata
Finish(bootstrap): cleaning package manager metadata
Finish(bootstrap): chroot init
Start: chroot init
INFO: mounting tmpfs at /var/lib/mock/rhel+epel-9-x86_64-1738090619.985866/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 installed into bootstrap:
  rpm-4.16.1.3-34.el9.x86_64
  python3-dnf-4.14.0-17.el9.noarch
  python3-dnf-plugins-core-4.3.0-16.el9.noarch
Finish: chroot init
Start: build phase for pycharm-community-2024.3.2-1.el9.src.rpm
Start: build setup for pycharm-community-2024.3.2-1.el9.src.rpm
Building target platforms: x86_64
Building for target x86_64
setting SOURCE_DATE_EPOCH=1738022400
Wrote: /builddir/build/SRPMS/pycharm-community-2024.3.2-1.el9.src.rpm
No matches found for the following disable plugin patterns: local, spacewalk, versionlock
Updating Subscription Management repositories.
Unable to read consumer identity

This system is not registered with an entitlement server. You can use subscription-manager to register.

Copr repository                                  52 kB/s | 2.1 kB     00:00    
Red Hat Enterprise Linux - BaseOS                19 kB/s | 4.1 kB     00:00    
Red Hat Enterprise Linux - AppStream             21 kB/s | 4.5 kB     00:00    
Red Hat Enterprise Linux - CodeReady Linux Buil  16 kB/s | 4.5 kB     00:00    
Extra Packages for Enterprise Linux 9 - x86_64  1.1 MB/s |  37 kB     00:00    
Dependencies resolved.
================================================================================
 Package                    Arch   Version              Repository         Size
================================================================================
Installing:
 desktop-file-utils         x86_64 0.26-6.el9           appstream          78 k
 javapackages-filesystem    noarch 6.0.0-7.el9_5        appstream          16 k
 libappstream-glib          x86_64 0.7.18-5.el9_4       appstream         399 k
 librsvg2-tools             x86_64 2.50.7-3.el9         appstream          20 k
 python3-devel              x86_64 3.9.21-1.el9_5       appstream         249 k
Installing dependencies:
 adobe-source-code-pro-fonts
                            noarch 2.030.1.050-12.el9.1 baseos            836 k
 cairo                      x86_64 1.17.4-7.el9         appstream         664 k
 cairo-gobject              x86_64 1.17.4-7.el9         appstream          20 k
 dejavu-sans-fonts          noarch 2.37-18.el9          baseos            1.3 M
 emacs-filesystem           noarch 1:27.2-10.el9_4      appstream         9.3 k
 expat                      x86_64 2.5.0-3.el9_5.1      baseos            119 k
 fontconfig                 x86_64 2.14.0-2.el9_1       appstream         301 k
 fonts-filesystem           noarch 1:2.0.5-7.el9.1      baseos             11 k
 freetype                   x86_64 2.10.4-9.el9         baseos            391 k
 fribidi                    x86_64 1.0.10-6.el9.2       appstream          89 k
 gdk-pixbuf2                x86_64 2.42.6-4.el9_4       appstream         496 k
 glib-networking            x86_64 2.68.3-3.el9         baseos            190 k
 glib2                      x86_64 2.68.4-14.el9_4.1    baseos            2.6 M
 gnutls                     x86_64 3.8.3-4.el9_4        baseos            1.1 M
 graphite2                  x86_64 1.3.14-9.el9         baseos             98 k
 gsettings-desktop-schemas  x86_64 40.0-6.el9           baseos            688 k
 harfbuzz                   x86_64 2.7.4-10.el9         baseos            629 k
 json-glib                  x86_64 1.6.6-1.el9          baseos            167 k
 langpacks-core-font-en     noarch 3.0-16.el9           appstream          11 k
 libX11                     x86_64 1.7.0-9.el9          appstream         647 k
 libX11-common              noarch 1.7.0-9.el9          appstream         209 k
 libXau                     x86_64 1.0.9-8.el9          appstream          34 k
 libXext                    x86_64 1.3.4-8.el9          appstream          42 k
 libXft                     x86_64 2.3.3-8.el9          appstream          64 k
 libXrender                 x86_64 0.9.10-16.el9        appstream          30 k
 libdatrie                  x86_64 0.2.13-4.el9         appstream          34 k
 libjpeg-turbo              x86_64 2.0.90-7.el9         appstream         178 k
 libpng                     x86_64 2:1.6.37-12.el9      baseos            119 k
 libproxy                   x86_64 0.4.15-35.el9        baseos             78 k
 librsvg2                   x86_64 2.50.7-3.el9         appstream         3.2 M
 libsoup                    x86_64 2.72.0-8.el9_5.2     appstream         407 k
 libstemmer                 x86_64 0-18.585svn.el9      appstream          85 k
 libthai                    x86_64 0.1.28-8.el9         appstream         211 k
 libxcb                     x86_64 1.13.1-9.el9         appstream         247 k
 nettle                     x86_64 3.9.1-1.el9          baseos            564 k
 pango                      x86_64 1.48.7-3.el9         appstream         306 k
 pixman                     x86_64 0.40.0-6.el9_3       appstream         271 k
 pyproject-rpm-macros       noarch 1.12.0-1.el9         codeready-builder  43 k
 python-rpm-macros          noarch 3.9-54.el9           appstream          16 k
 python3                    x86_64 3.9.21-1.el9_5       baseos             30 k
 python3-libs               x86_64 3.9.21-1.el9_5       baseos            8.1 M
 python3-packaging          noarch 20.9-5.el9           appstream          81 k
 python3-pip-wheel          noarch 21.3.1-1.el9         baseos            1.1 M
 python3-pyparsing          noarch 2.4.7-9.el9          baseos            154 k
 python3-rpm-generators     noarch 12-9.el9             appstream          29 k
 python3-rpm-macros         noarch 3.9-54.el9           appstream          10 k
 python3-setuptools         noarch 53.0.0-13.el9        baseos            947 k
 python3-setuptools-wheel   noarch 53.0.0-13.el9        baseos            469 k
 shared-mime-info           x86_64 2.1-5.el9            baseos            561 k
 xml-common                 noarch 0.6.3-58.el9         appstream          36 k

Transaction Summary
================================================================================
Install  55 Packages

Total download size: 29 M
Installed size: 103 M
Downloading Packages:
(1/55): graphite2-1.3.14-9.el9.x86_64.rpm       277 kB/s |  98 kB     00:00    
(2/55): json-glib-1.6.6-1.el9.x86_64.rpm        1.0 MB/s | 167 kB     00:00    
(3/55): dejavu-sans-fonts-2.37-18.el9.noarch.rp 2.1 MB/s | 1.3 MB     00:00    
(4/55): fonts-filesystem-2.0.5-7.el9.1.noarch.r  13 kB/s |  11 kB     00:00    
(5/55): libproxy-0.4.15-35.el9.x86_64.rpm       294 kB/s |  78 kB     00:00    
(6/55): libpng-1.6.37-12.el9.x86_64.rpm         281 kB/s | 119 kB     00:00    
(7/55): freetype-2.10.4-9.el9.x86_64.rpm        1.9 MB/s | 391 kB     00:00    
(8/55): glib-networking-2.68.3-3.el9.x86_64.rpm 634 kB/s | 190 kB     00:00    
(9/55): gsettings-desktop-schemas-40.0-6.el9.x8 4.6 MB/s | 688 kB     00:00    
(10/55): python3-pyparsing-2.4.7-9.el9.noarch.r 284 kB/s | 154 kB     00:00    
(11/55): adobe-source-code-pro-fonts-2.030.1.05 3.1 MB/s | 836 kB     00:00    
(12/55): shared-mime-info-2.1-5.el9.x86_64.rpm  2.3 MB/s | 561 kB     00:00    
(13/55): nettle-3.9.1-1.el9.x86_64.rpm          2.1 MB/s | 564 kB     00:00    
(14/55): harfbuzz-2.7.4-10.el9.x86_64.rpm       1.9 MB/s | 629 kB     00:00    
(15/55): gnutls-3.8.3-4.el9_4.x86_64.rpm        4.6 MB/s | 1.1 MB     00:00    
(16/55): python3-setuptools-53.0.0-13.el9.noarc 3.5 MB/s | 947 kB     00:00    
(17/55): python3-pip-wheel-21.3.1-1.el9.noarch. 3.8 MB/s | 1.1 MB     00:00    
(18/55): glib2-2.68.4-14.el9_4.1.x86_64.rpm     7.8 MB/s | 2.6 MB     00:00    
(19/55): python3-setuptools-wheel-53.0.0-13.el9 4.4 MB/s | 469 kB     00:00    
(20/55): expat-2.5.0-3.el9_5.1.x86_64.rpm       988 kB/s | 119 kB     00:00    
(21/55): python3-3.9.21-1.el9_5.x86_64.rpm      216 kB/s |  30 kB     00:00    
(22/55): libXext-1.3.4-8.el9.x86_64.rpm         367 kB/s |  42 kB     00:00    
(23/55): libstemmer-0-18.585svn.el9.x86_64.rpm  533 kB/s |  85 kB     00:00    
(24/55): libthai-0.1.28-8.el9.x86_64.rpm        2.1 MB/s | 211 kB     00:00    
(25/55): langpacks-core-font-en-3.0-16.el9.noar  94 kB/s |  11 kB     00:00    
(26/55): cairo-gobject-1.17.4-7.el9.x86_64.rpm  141 kB/s |  20 kB     00:00    
(27/55): python3-libs-3.9.21-1.el9_5.x86_64.rpm  22 MB/s | 8.1 MB     00:00    
(28/55): libXft-2.3.3-8.el9.x86_64.rpm          438 kB/s |  64 kB     00:00    
(29/55): python3-packaging-20.9-5.el9.noarch.rp 443 kB/s |  81 kB     00:00    
(30/55): libdatrie-0.2.13-4.el9.x86_64.rpm      160 kB/s |  34 kB     00:00    
(31/55): xml-common-0.6.3-58.el9.noarch.rpm     338 kB/s |  36 kB     00:00    
(32/55): libXrender-0.9.10-16.el9.x86_64.rpm    265 kB/s |  30 kB     00:00    
(33/55): libXau-1.0.9-8.el9.x86_64.rpm          244 kB/s |  34 kB     00:00    
(34/55): cairo-1.17.4-7.el9.x86_64.rpm          3.5 MB/s | 664 kB     00:00    
(35/55): fribidi-1.0.10-6.el9.2.x86_64.rpm      1.0 MB/s |  89 kB     00:00    
(36/55): libxcb-1.13.1-9.el9.x86_64.rpm         1.8 MB/s | 247 kB     00:00    
(37/55): desktop-file-utils-0.26-6.el9.x86_64.r 523 kB/s |  78 kB     00:00    
(38/55): pango-1.48.7-3.el9.x86_64.rpm          2.8 MB/s | 306 kB     00:00    
(39/55): fontconfig-2.14.0-2.el9_1.x86_64.rpm   2.1 MB/s | 301 kB     00:00    
(40/55): pixman-0.40.0-6.el9_3.x86_64.rpm       2.0 MB/s | 271 kB     00:00    
(41/55): libX11-common-1.7.0-9.el9.noarch.rpm   2.1 MB/s | 209 kB     00:00    
(42/55): libX11-1.7.0-9.el9.x86_64.rpm          4.4 MB/s | 647 kB     00:00    
(43/55): libjpeg-turbo-2.0.90-7.el9.x86_64.rpm  818 kB/s | 178 kB     00:00    
(44/55): librsvg2-tools-2.50.7-3.el9.x86_64.rpm 128 kB/s |  20 kB     00:00    
(45/55): python3-rpm-generators-12-9.el9.noarch 271 kB/s |  29 kB     00:00    
(46/55): librsvg2-2.50.7-3.el9.x86_64.rpm        12 MB/s | 3.2 MB     00:00    
(47/55): emacs-filesystem-27.2-10.el9_4.noarch.  94 kB/s | 9.3 kB     00:00    
(48/55): libappstream-glib-0.7.18-5.el9_4.x86_6 2.4 MB/s | 399 kB     00:00    
(49/55): gdk-pixbuf2-2.42.6-4.el9_4.x86_64.rpm  1.8 MB/s | 496 kB     00:00    
(50/55): python3-rpm-macros-3.9-54.el9.noarch.r  95 kB/s |  10 kB     00:00    
(51/55): libsoup-2.72.0-8.el9_5.2.x86_64.rpm    4.0 MB/s | 407 kB     00:00    
(52/55): python-rpm-macros-3.9-54.el9.noarch.rp  97 kB/s |  16 kB     00:00    
(53/55): javapackages-filesystem-6.0.0-7.el9_5. 114 kB/s |  16 kB     00:00    
(54/55): pyproject-rpm-macros-1.12.0-1.el9.noar 279 kB/s |  43 kB     00:00    
(55/55): python3-devel-3.9.21-1.el9_5.x86_64.rp 969 kB/s | 249 kB     00:00    
--------------------------------------------------------------------------------
Total                                           7.2 MB/s |  29 MB     00:03     
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
  Preparing        :                                                        1/1 
  Installing       : libpng-2:1.6.37-12.el9.x86_64                         1/55 
  Installing       : python-rpm-macros-3.9-54.el9.noarch                   2/55 
  Installing       : fonts-filesystem-1:2.0.5-7.el9.1.noarch               3/55 
  Installing       : dejavu-sans-fonts-2.37-18.el9.noarch                  4/55 
  Installing       : python3-rpm-macros-3.9-54.el9.noarch                  5/55 
  Installing       : pixman-0.40.0-6.el9_3.x86_64                          6/55 
  Installing       : langpacks-core-font-en-3.0-16.el9.noarch              7/55 
  Installing       : adobe-source-code-pro-fonts-2.030.1.050-12.el9.1.n    8/55 
  Installing       : emacs-filesystem-1:27.2-10.el9_4.noarch               9/55 
  Installing       : libjpeg-turbo-2.0.90-7.el9.x86_64                    10/55 
  Installing       : libX11-common-1.7.0-9.el9.noarch                     11/55 
  Installing       : fribidi-1.0.10-6.el9.2.x86_64                        12/55 
  Installing       : libXau-1.0.9-8.el9.x86_64                            13/55 
  Installing       : libxcb-1.13.1-9.el9.x86_64                           14/55 
  Installing       : libX11-1.7.0-9.el9.x86_64                            15/55 
  Installing       : libXrender-0.9.10-16.el9.x86_64                      16/55 
  Installing       : libXext-1.3.4-8.el9.x86_64                           17/55 
  Running scriptlet: xml-common-0.6.3-58.el9.noarch                       18/55 
  Installing       : xml-common-0.6.3-58.el9.noarch                       18/55 
  Installing       : libdatrie-0.2.13-4.el9.x86_64                        19/55 
  Installing       : libthai-0.1.28-8.el9.x86_64                          20/55 
  Installing       : libstemmer-0-18.585svn.el9.x86_64                    21/55 
  Installing       : expat-2.5.0-3.el9_5.1.x86_64                         22/55 
  Installing       : python3-setuptools-wheel-53.0.0-13.el9.noarch        23/55 
  Installing       : python3-pip-wheel-21.3.1-1.el9.noarch                24/55 
  Installing       : python3-3.9.21-1.el9_5.x86_64                        25/55 
  Installing       : python3-libs-3.9.21-1.el9_5.x86_64                   26/55 
  Installing       : python3-pyparsing-2.4.7-9.el9.noarch                 27/55 
  Installing       : python3-packaging-20.9-5.el9.noarch                  28/55 
  Installing       : python3-rpm-generators-12-9.el9.noarch               29/55 
  Installing       : python3-setuptools-53.0.0-13.el9.noarch              30/55 
  Installing       : nettle-3.9.1-1.el9.x86_64                            31/55 
  Installing       : gnutls-3.8.3-4.el9_4.x86_64                          32/55 
  Installing       : glib2-2.68.4-14.el9_4.1.x86_64                       33/55 
  Installing       : json-glib-1.6.6-1.el9.x86_64                         34/55 
  Installing       : gsettings-desktop-schemas-40.0-6.el9.x86_64          35/55 
  Installing       : shared-mime-info-2.1-5.el9.x86_64                    36/55 
  Running scriptlet: shared-mime-info-2.1-5.el9.x86_64                    36/55 
  Installing       : gdk-pixbuf2-2.42.6-4.el9_4.x86_64                    37/55 
  Installing       : libproxy-0.4.15-35.el9.x86_64                        38/55 
  Installing       : glib-networking-2.68.3-3.el9.x86_64                  39/55 
  Installing       : libsoup-2.72.0-8.el9_5.2.x86_64                      40/55 
  Installing       : graphite2-1.3.14-9.el9.x86_64                        41/55 
  Installing       : freetype-2.10.4-9.el9.x86_64                         42/55 
  Installing       : harfbuzz-2.7.4-10.el9.x86_64                         43/55 
  Installing       : fontconfig-2.14.0-2.el9_1.x86_64                     44/55 
  Running scriptlet: fontconfig-2.14.0-2.el9_1.x86_64                     44/55 
  Installing       : cairo-1.17.4-7.el9.x86_64                            45/55 
  Installing       : cairo-gobject-1.17.4-7.el9.x86_64                    46/55 
  Installing       : libXft-2.3.3-8.el9.x86_64                            47/55 
  Installing       : pango-1.48.7-3.el9.x86_64                            48/55 
  Installing       : librsvg2-2.50.7-3.el9.x86_64                         49/55 
  Installing       : librsvg2-tools-2.50.7-3.el9.x86_64                   50/55 
  Installing       : libappstream-glib-0.7.18-5.el9_4.x86_64              51/55 
  Installing       : desktop-file-utils-0.26-6.el9.x86_64                 52/55 
  Installing       : python3-devel-3.9.21-1.el9_5.x86_64                  53/55 
  Installing       : pyproject-rpm-macros-1.12.0-1.el9.noarch             54/55 
  Installing       : javapackages-filesystem-6.0.0-7.el9_5.noarch         55/55 
  Running scriptlet: fontconfig-2.14.0-2.el9_1.x86_64                     55/55 
  Running scriptlet: javapackages-filesystem-6.0.0-7.el9_5.noarch         55/55 
  Verifying        : dejavu-sans-fonts-2.37-18.el9.noarch                  1/55 
  Verifying        : fonts-filesystem-1:2.0.5-7.el9.1.noarch               2/55 
  Verifying        : graphite2-1.3.14-9.el9.x86_64                         3/55 
  Verifying        : json-glib-1.6.6-1.el9.x86_64                          4/55 
  Verifying        : libpng-2:1.6.37-12.el9.x86_64                         5/55 
  Verifying        : libproxy-0.4.15-35.el9.x86_64                         6/55 
  Verifying        : python3-pyparsing-2.4.7-9.el9.noarch                  7/55 
  Verifying        : glib-networking-2.68.3-3.el9.x86_64                   8/55 
  Verifying        : freetype-2.10.4-9.el9.x86_64                          9/55 
  Verifying        : gsettings-desktop-schemas-40.0-6.el9.x86_64          10/55 
  Verifying        : adobe-source-code-pro-fonts-2.030.1.050-12.el9.1.n   11/55 
  Verifying        : shared-mime-info-2.1-5.el9.x86_64                    12/55 
  Verifying        : harfbuzz-2.7.4-10.el9.x86_64                         13/55 
  Verifying        : nettle-3.9.1-1.el9.x86_64                            14/55 
  Verifying        : gnutls-3.8.3-4.el9_4.x86_64                          15/55 
  Verifying        : glib2-2.68.4-14.el9_4.1.x86_64                       16/55 
  Verifying        : python3-pip-wheel-21.3.1-1.el9.noarch                17/55 
  Verifying        : python3-setuptools-53.0.0-13.el9.noarch              18/55 
  Verifying        : python3-setuptools-wheel-53.0.0-13.el9.noarch        19/55 
  Verifying        : expat-2.5.0-3.el9_5.1.x86_64                         20/55 
  Verifying        : python3-3.9.21-1.el9_5.x86_64                        21/55 
  Verifying        : python3-libs-3.9.21-1.el9_5.x86_64                   22/55 
  Verifying        : libXext-1.3.4-8.el9.x86_64                           23/55 
  Verifying        : libstemmer-0-18.585svn.el9.x86_64                    24/55 
  Verifying        : libthai-0.1.28-8.el9.x86_64                          25/55 
  Verifying        : cairo-gobject-1.17.4-7.el9.x86_64                    26/55 
  Verifying        : langpacks-core-font-en-3.0-16.el9.noarch             27/55 
  Verifying        : libXft-2.3.3-8.el9.x86_64                            28/55 
  Verifying        : libdatrie-0.2.13-4.el9.x86_64                        29/55 
  Verifying        : python3-packaging-20.9-5.el9.noarch                  30/55 
  Verifying        : xml-common-0.6.3-58.el9.noarch                       31/55 
  Verifying        : cairo-1.17.4-7.el9.x86_64                            32/55 
  Verifying        : libXau-1.0.9-8.el9.x86_64                            33/55 
  Verifying        : libXrender-0.9.10-16.el9.x86_64                      34/55 
  Verifying        : libxcb-1.13.1-9.el9.x86_64                           35/55 
  Verifying        : desktop-file-utils-0.26-6.el9.x86_64                 36/55 
  Verifying        : fribidi-1.0.10-6.el9.2.x86_64                        37/55 
  Verifying        : fontconfig-2.14.0-2.el9_1.x86_64                     38/55 
  Verifying        : pango-1.48.7-3.el9.x86_64                            39/55 
  Verifying        : pixman-0.40.0-6.el9_3.x86_64                         40/55 
  Verifying        : libX11-1.7.0-9.el9.x86_64                            41/55 
  Verifying        : libX11-common-1.7.0-9.el9.noarch                     42/55 
  Verifying        : libjpeg-turbo-2.0.90-7.el9.x86_64                    43/55 
  Verifying        : librsvg2-2.50.7-3.el9.x86_64                         44/55 
  Verifying        : librsvg2-tools-2.50.7-3.el9.x86_64                   45/55 
  Verifying        : python3-rpm-generators-12-9.el9.noarch               46/55 
  Verifying        : gdk-pixbuf2-2.42.6-4.el9_4.x86_64                    47/55 
  Verifying        : libappstream-glib-0.7.18-5.el9_4.x86_64              48/55 
  Verifying        : emacs-filesystem-1:27.2-10.el9_4.noarch              49/55 
  Verifying        : python3-rpm-macros-3.9-54.el9.noarch                 50/55 
  Verifying        : python-rpm-macros-3.9-54.el9.noarch                  51/55 
  Verifying        : libsoup-2.72.0-8.el9_5.2.x86_64                      52/55 
  Verifying        : python3-devel-3.9.21-1.el9_5.x86_64                  53/55 
  Verifying        : javapackages-filesystem-6.0.0-7.el9_5.noarch         54/55 
  Verifying        : pyproject-rpm-macros-1.12.0-1.el9.noarch             55/55 
Installed products updated.

Installed:
  adobe-source-code-pro-fonts-2.030.1.050-12.el9.1.noarch                       
  cairo-1.17.4-7.el9.x86_64                                                     
  cairo-gobject-1.17.4-7.el9.x86_64                                             
  dejavu-sans-fonts-2.37-18.el9.noarch                                          
  desktop-file-utils-0.26-6.el9.x86_64                                          
  emacs-filesystem-1:27.2-10.el9_4.noarch                                       
  expat-2.5.0-3.el9_5.1.x86_64                                                  
  fontconfig-2.14.0-2.el9_1.x86_64                                              
  fonts-filesystem-1:2.0.5-7.el9.1.noarch                                       
  freetype-2.10.4-9.el9.x86_64                                                  
  fribidi-1.0.10-6.el9.2.x86_64                                                 
  gdk-pixbuf2-2.42.6-4.el9_4.x86_64                                             
  glib-networking-2.68.3-3.el9.x86_64                                           
  glib2-2.68.4-14.el9_4.1.x86_64                                                
  gnutls-3.8.3-4.el9_4.x86_64                                                   
  graphite2-1.3.14-9.el9.x86_64                                                 
  gsettings-desktop-schemas-40.0-6.el9.x86_64                                   
  harfbuzz-2.7.4-10.el9.x86_64                                                  
  javapackages-filesystem-6.0.0-7.el9_5.noarch                                  
  json-glib-1.6.6-1.el9.x86_64                                                  
  langpacks-core-font-en-3.0-16.el9.noarch                                      
  libX11-1.7.0-9.el9.x86_64                                                     
  libX11-common-1.7.0-9.el9.noarch                                              
  libXau-1.0.9-8.el9.x86_64                                                     
  libXext-1.3.4-8.el9.x86_64                                                    
  libXft-2.3.3-8.el9.x86_64                                                     
  libXrender-0.9.10-16.el9.x86_64                                               
  libappstream-glib-0.7.18-5.el9_4.x86_64                                       
  libdatrie-0.2.13-4.el9.x86_64                                                 
  libjpeg-turbo-2.0.90-7.el9.x86_64                                             
  libpng-2:1.6.37-12.el9.x86_64                                                 
  libproxy-0.4.15-35.el9.x86_64                                                 
  librsvg2-2.50.7-3.el9.x86_64                                                  
  librsvg2-tools-2.50.7-3.el9.x86_64                                            
  libsoup-2.72.0-8.el9_5.2.x86_64                                               
  libstemmer-0-18.585svn.el9.x86_64                                             
  libthai-0.1.28-8.el9.x86_64                                                   
  libxcb-1.13.1-9.el9.x86_64                                                    
  nettle-3.9.1-1.el9.x86_64                                                     
  pango-1.48.7-3.el9.x86_64                                                     
  pixman-0.40.0-6.el9_3.x86_64                                                  
  pyproject-rpm-macros-1.12.0-1.el9.noarch                                      
  python-rpm-macros-3.9-54.el9.noarch                                           
  python3-3.9.21-1.el9_5.x86_64                                                 
  python3-devel-3.9.21-1.el9_5.x86_64                                           
  python3-libs-3.9.21-1.el9_5.x86_64                                            
  python3-packaging-20.9-5.el9.noarch                                           
  python3-pip-wheel-21.3.1-1.el9.noarch                                         
  python3-pyparsing-2.4.7-9.el9.noarch                                          
  python3-rpm-generators-12-9.el9.noarch                                        
  python3-rpm-macros-3.9-54.el9.noarch                                          
  python3-setuptools-53.0.0-13.el9.noarch                                       
  python3-setuptools-wheel-53.0.0-13.el9.noarch                                 
  shared-mime-info-2.1-5.el9.x86_64                                             
  xml-common-0.6.3-58.el9.noarch                                                

Complete!
Finish: build setup for pycharm-community-2024.3.2-1.el9.src.rpm
Start: rpmbuild pycharm-community-2024.3.2-1.el9.src.rpm
Building target platforms: x86_64
Building for target x86_64
setting SOURCE_DATE_EPOCH=1738022400
Executing(%prep): /bin/sh -e /var/tmp/rpm-tmp.SXvmvz
+ umask 022
+ cd /builddir/build/BUILD
+ cd /builddir/build/BUILD
+ rm -rf pycharm-community-2024.3.2
+ /usr/bin/gzip -dc /builddir/build/SOURCES/pycharm-community-2024.3.2.tar.gz
+ /usr/bin/tar -xof -
+ STATUS=0
+ '[' 0 -ne 0 ']'
+ cd pycharm-community-2024.3.2
+ /usr/bin/chmod -Rf a+rX,u+w,g-w,o-w .
+ rm -rf plugins/cwm-plugin plugins/cwm-plugin-projector plugins/marketplace plugins/space
+ find bin -type f -name '*.py' -exec sed -e 's@/usr/bin/env python.*@/usr/bin/python3@g' -i '{}' ';'
+ RPM_EC=0
++ jobs -p
+ exit 0
Executing(%install): /bin/sh -e /var/tmp/rpm-tmp.fczfwJ
+ umask 022
+ cd /builddir/build/BUILD
+ '[' /builddir/build/BUILDROOT/pycharm-community-2024.3.2-1.el9.x86_64 '!=' / ']'
+ rm -rf /builddir/build/BUILDROOT/pycharm-community-2024.3.2-1.el9.x86_64
++ dirname /builddir/build/BUILDROOT/pycharm-community-2024.3.2-1.el9.x86_64
+ mkdir -p /builddir/build/BUILDROOT
+ mkdir /builddir/build/BUILDROOT/pycharm-community-2024.3.2-1.el9.x86_64
+ cd pycharm-community-2024.3.2
+ install -d /builddir/build/BUILDROOT/pycharm-community-2024.3.2-1.el9.x86_64/usr/share/java/pycharm-community
+ cp -arf ./bin ./jbr ./lib ./plugins ./build.txt ./product-info.json /builddir/build/BUILDROOT/pycharm-community-2024.3.2-1.el9.x86_64/usr/share/java/pycharm-community/
+ install -d /builddir/build/BUILDROOT/pycharm-community-2024.3.2-1.el9.x86_64/usr/share/pixmaps
+ install -m 0644 -p bin/pycharm.png /builddir/build/BUILDROOT/pycharm-community-2024.3.2-1.el9.x86_64/usr/share/pixmaps/pycharm-community.png
+ install -d /builddir/build/BUILDROOT/pycharm-community-2024.3.2-1.el9.x86_64/usr/share/icons/hicolor/scalable/apps
+ install -m 0644 -p bin/pycharm.svg /builddir/build/BUILDROOT/pycharm-community-2024.3.2-1.el9.x86_64/usr/share/icons/hicolor/scalable/apps/pycharm-community.svg
+ for size in 16 22 24 32 48 64 128 256
+ dest=/builddir/build/BUILDROOT/pycharm-community-2024.3.2-1.el9.x86_64/usr/share/icons/hicolor/16x16/apps
+ install -d /builddir/build/BUILDROOT/pycharm-community-2024.3.2-1.el9.x86_64/usr/share/icons/hicolor/16x16/apps
+ rsvg-convert -w 16 -h 16 bin/pycharm.svg -o /builddir/build/BUILDROOT/pycharm-community-2024.3.2-1.el9.x86_64/usr/share/icons/hicolor/16x16/apps/pycharm-community.png
+ chmod 0644 /builddir/build/BUILDROOT/pycharm-community-2024.3.2-1.el9.x86_64/usr/share/icons/hicolor/16x16/apps/pycharm-community.png
+ touch -r bin/pycharm.svg /builddir/build/BUILDROOT/pycharm-community-2024.3.2-1.el9.x86_64/usr/share/icons/hicolor/16x16/apps/pycharm-community.png
+ for size in 16 22 24 32 48 64 128 256
+ dest=/builddir/build/BUILDROOT/pycharm-community-2024.3.2-1.el9.x86_64/usr/share/icons/hicolor/22x22/apps
+ install -d /builddir/build/BUILDROOT/pycharm-community-2024.3.2-1.el9.x86_64/usr/share/icons/hicolor/22x22/apps
+ rsvg-convert -w 22 -h 22 bin/pycharm.svg -o /builddir/build/BUILDROOT/pycharm-community-2024.3.2-1.el9.x86_64/usr/share/icons/hicolor/22x22/apps/pycharm-community.png
+ chmod 0644 /builddir/build/BUILDROOT/pycharm-community-2024.3.2-1.el9.x86_64/usr/share/icons/hicolor/22x22/apps/pycharm-community.png
+ touch -r bin/pycharm.svg /builddir/build/BUILDROOT/pycharm-community-2024.3.2-1.el9.x86_64/usr/share/icons/hicolor/22x22/apps/pycharm-community.png
+ for size in 16 22 24 32 48 64 128 256
+ dest=/builddir/build/BUILDROOT/pycharm-community-2024.3.2-1.el9.x86_64/usr/share/icons/hicolor/24x24/apps
+ install -d /builddir/build/BUILDROOT/pycharm-community-2024.3.2-1.el9.x86_64/usr/share/icons/hicolor/24x24/apps
+ rsvg-convert -w 24 -h 24 bin/pycharm.svg -o /builddir/build/BUILDROOT/pycharm-community-2024.3.2-1.el9.x86_64/usr/share/icons/hicolor/24x24/apps/pycharm-community.png
+ chmod 0644 /builddir/build/BUILDROOT/pycharm-community-2024.3.2-1.el9.x86_64/usr/share/icons/hicolor/24x24/apps/pycharm-community.png
+ touch -r bin/pycharm.svg /builddir/build/BUILDROOT/pycharm-community-2024.3.2-1.el9.x86_64/usr/share/icons/hicolor/24x24/apps/pycharm-community.png
+ for size in 16 22 24 32 48 64 128 256
+ dest=/builddir/build/BUILDROOT/pycharm-community-2024.3.2-1.el9.x86_64/usr/share/icons/hicolor/32x32/apps
+ install -d /builddir/build/BUILDROOT/pycharm-community-2024.3.2-1.el9.x86_64/usr/share/icons/hicolor/32x32/apps
+ rsvg-convert -w 32 -h 32 bin/pycharm.svg -o /builddir/build/BUILDROOT/pycharm-community-2024.3.2-1.el9.x86_64/usr/share/icons/hicolor/32x32/apps/pycharm-community.png
+ chmod 0644 /builddir/build/BUILDROOT/pycharm-community-2024.3.2-1.el9.x86_64/usr/share/icons/hicolor/32x32/apps/pycharm-community.png
+ touch -r bin/pycharm.svg /builddir/build/BUILDROOT/pycharm-community-2024.3.2-1.el9.x86_64/usr/share/icons/hicolor/32x32/apps/pycharm-community.png
+ for size in 16 22 24 32 48 64 128 256
+ dest=/builddir/build/BUILDROOT/pycharm-community-2024.3.2-1.el9.x86_64/usr/share/icons/hicolor/48x48/apps
+ install -d /builddir/build/BUILDROOT/pycharm-community-2024.3.2-1.el9.x86_64/usr/share/icons/hicolor/48x48/apps
+ rsvg-convert -w 48 -h 48 bin/pycharm.svg -o /builddir/build/BUILDROOT/pycharm-community-2024.3.2-1.el9.x86_64/usr/share/icons/hicolor/48x48/apps/pycharm-community.png
+ chmod 0644 /builddir/build/BUILDROOT/pycharm-community-2024.3.2-1.el9.x86_64/usr/share/icons/hicolor/48x48/apps/pycharm-community.png
+ touch -r bin/pycharm.svg /builddir/build/BUILDROOT/pycharm-community-2024.3.2-1.el9.x86_64/usr/share/icons/hicolor/48x48/apps/pycharm-community.png
+ for size in 16 22 24 32 48 64 128 256
+ dest=/builddir/build/BUILDROOT/pycharm-community-2024.3.2-1.el9.x86_64/usr/share/icons/hicolor/64x64/apps
+ install -d /builddir/build/BUILDROOT/pycharm-community-2024.3.2-1.el9.x86_64/usr/share/icons/hicolor/64x64/apps
+ rsvg-convert -w 64 -h 64 bin/pycharm.svg -o /builddir/build/BUILDROOT/pycharm-community-2024.3.2-1.el9.x86_64/usr/share/icons/hicolor/64x64/apps/pycharm-community.png
+ chmod 0644 /builddir/build/BUILDROOT/pycharm-community-2024.3.2-1.el9.x86_64/usr/share/icons/hicolor/64x64/apps/pycharm-community.png
+ touch -r bin/pycharm.svg /builddir/build/BUILDROOT/pycharm-community-2024.3.2-1.el9.x86_64/usr/share/icons/hicolor/64x64/apps/pycharm-community.png
+ for size in 16 22 24 32 48 64 128 256
+ dest=/builddir/build/BUILDROOT/pycharm-community-2024.3.2-1.el9.x86_64/usr/share/icons/hicolor/128x128/apps
+ install -d /builddir/build/BUILDROOT/pycharm-community-2024.3.2-1.el9.x86_64/usr/share/icons/hicolor/128x128/apps
+ rsvg-convert -w 128 -h 128 bin/pycharm.svg -o /builddir/build/BUILDROOT/pycharm-community-2024.3.2-1.el9.x86_64/usr/share/icons/hicolor/128x128/apps/pycharm-community.png
+ chmod 0644 /builddir/build/BUILDROOT/pycharm-community-2024.3.2-1.el9.x86_64/usr/share/icons/hicolor/128x128/apps/pycharm-community.png
+ touch -r bin/pycharm.svg /builddir/build/BUILDROOT/pycharm-community-2024.3.2-1.el9.x86_64/usr/share/icons/hicolor/128x128/apps/pycharm-community.png
+ for size in 16 22 24 32 48 64 128 256
+ dest=/builddir/build/BUILDROOT/pycharm-community-2024.3.2-1.el9.x86_64/usr/share/icons/hicolor/256x256/apps
+ install -d /builddir/build/BUILDROOT/pycharm-community-2024.3.2-1.el9.x86_64/usr/share/icons/hicolor/256x256/apps
+ rsvg-convert -w 256 -h 256 bin/pycharm.svg -o /builddir/build/BUILDROOT/pycharm-community-2024.3.2-1.el9.x86_64/usr/share/icons/hicolor/256x256/apps/pycharm-community.png
+ chmod 0644 /builddir/build/BUILDROOT/pycharm-community-2024.3.2-1.el9.x86_64/usr/share/icons/hicolor/256x256/apps/pycharm-community.png
+ touch -r bin/pycharm.svg /builddir/build/BUILDROOT/pycharm-community-2024.3.2-1.el9.x86_64/usr/share/icons/hicolor/256x256/apps/pycharm-community.png
+ install -d /builddir/build/BUILDROOT/pycharm-community-2024.3.2-1.el9.x86_64/usr/share/metainfo
+ install -m 0644 -p /builddir/build/SOURCES/pycharm-community.metainfo.xml /builddir/build/BUILDROOT/pycharm-community-2024.3.2-1.el9.x86_64/usr/share/metainfo/pycharm-community.metainfo.xml
+ install -d /builddir/build/BUILDROOT/pycharm-community-2024.3.2-1.el9.x86_64/usr/bin
+ ln -s /usr/share/java/pycharm-community/bin/pycharm /builddir/build/BUILDROOT/pycharm-community-2024.3.2-1.el9.x86_64/usr/bin/pycharm-community
+ install -d /builddir/build/BUILDROOT/pycharm-community-2024.3.2-1.el9.x86_64/usr/share/applications
+ install -m 0644 -p /builddir/build/SOURCES/pycharm-community.desktop /builddir/build/BUILDROOT/pycharm-community-2024.3.2-1.el9.x86_64/usr/share/applications/pycharm-community.desktop
+ install -d /builddir/build/BUILDROOT/pycharm-community-2024.3.2-1.el9.x86_64/usr/share/mime/packages
+ install -m 0644 -p /builddir/build/SOURCES/pycharm-community.xml /builddir/build/BUILDROOT/pycharm-community-2024.3.2-1.el9.x86_64/usr/share/mime/packages/pycharm-community.xml
+ tail -n +2 /builddir/build/BUILDROOT/pycharm-community-2024.3.2-1.el9.x86_64/usr/share/java/pycharm-community/plugins/python-ce/helpers/pycodestyle-2.10.0.py
# pycodestyle.py - Check Python source code formatting, according to
# PEP 8
#
# Copyright (C) 2006-2009 Johann C. Rocholl <johann@rocholl.net>
# Copyright (C) 2009-2014 Florent Xicluna <florent.xicluna@gmail.com>
# Copyright (C) 2014-2016 Ian Lee <ianlee1521@gmail.com>
#
# Permission is hereby granted, free of charge, to any person
# obtaining a copy of this software and associated documentation files
# (the "Software"), to deal in the Software without restriction,
# including without limitation the rights to use, copy, modify, merge,
# publish, distribute, sublicense, and/or sell copies of the Software,
# and to permit persons to whom the Software is furnished to do so,
# subject to the following conditions:
#
# The above copyright notice and this permission notice shall be
# included in all copies or substantial portions of the Software.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
# BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
# ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
# CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
# SOFTWARE.
r"""
Check Python source code formatting, according to PEP 8.

For usage and a list of options, try this:
$ python pycodestyle.py -h

This program and its regression test suite live here:
https://github.com/pycqa/pycodestyle

Groups of errors and warnings:
E errors
W warnings
100 indentation
200 whitespace
300 blank lines
400 imports
500 line length
600 deprecation
700 statements
900 syntax error
"""
import bisect
import configparser
import inspect
import io
import keyword
import os
import re
import sys
import time
import tokenize
import warnings
from fnmatch import fnmatch
from functools import lru_cache
from optparse import OptionParser

# this is a performance hack.  see https://bugs.python.org/issue43014
if (
        sys.version_info < (3, 10) and
        callable(getattr(tokenize, '_compile', None))
):  # pragma: no cover (<py310)
    tokenize._compile = lru_cache()(tokenize._compile)  # type: ignore

__version__ = '2.10.0'  # patched PY-37054

DEFAULT_EXCLUDE = '.svn,CVS,.bzr,.hg,.git,__pycache__,.tox'
DEFAULT_IGNORE = 'E121,E123,E126,E226,E24,E704,W503,W504'
try:
    if sys.platform == 'win32':
        USER_CONFIG = os.path.expanduser(r'~\.pycodestyle')
    else:
        USER_CONFIG = os.path.join(
            os.getenv('XDG_CONFIG_HOME') or os.path.expanduser('~/.config'),
            'pycodestyle'
        )
except ImportError:
    USER_CONFIG = None

PROJECT_CONFIG = ('setup.cfg', 'tox.ini')
TESTSUITE_PATH = os.path.join(os.path.dirname(__file__), 'testsuite')
MAX_LINE_LENGTH = 79
# Number of blank lines between various code parts.
BLANK_LINES_CONFIG = {
    # Top level class and function.
    'top_level': 2,
    # Methods and nested class and function.
    'method': 1,
}
MAX_DOC_LENGTH = 72
INDENT_SIZE = 4
REPORT_FORMAT = {
    'default': '%(path)s:%(row)d:%(col)d: %(code)s %(text)s',
    'pylint': '%(path)s:%(row)d: [%(code)s] %(text)s',
}

PyCF_ONLY_AST = 1024
SINGLETONS = frozenset(['False', 'None', 'True'])
KEYWORDS = frozenset(keyword.kwlist + ['print', 'async']) - SINGLETONS
UNARY_OPERATORS = frozenset(['>>', '**', '*', '+', '-'])
ARITHMETIC_OP = frozenset(['**', '*', '/', '//', '+', '-', '@'])
WS_OPTIONAL_OPERATORS = ARITHMETIC_OP.union(['^', '&', '|', '<<', '>>', '%'])
ASSIGNMENT_EXPRESSION_OP = [':='] if sys.version_info >= (3, 8) else []
WS_NEEDED_OPERATORS = frozenset([
    '**=', '*=', '/=', '//=', '+=', '-=', '!=', '<>', '<', '>',
    '%=', '^=', '&=', '|=', '==', '<=', '>=', '<<=', '>>=', '=',
    'and', 'in', 'is', 'or', '->'] +
    ASSIGNMENT_EXPRESSION_OP)
WHITESPACE = frozenset(' \t\xa0')
NEWLINE = frozenset([tokenize.NL, tokenize.NEWLINE])
SKIP_TOKENS = NEWLINE.union([tokenize.INDENT, tokenize.DEDENT])
# ERRORTOKEN is triggered by backticks in Python 3
SKIP_COMMENTS = SKIP_TOKENS.union([tokenize.COMMENT, tokenize.ERRORTOKEN])
BENCHMARK_KEYS = ['directories', 'files', 'logical lines', 'physical lines']

INDENT_REGEX = re.compile(r'([ \t]*)')
ERRORCODE_REGEX = re.compile(r'\b[A-Z]\d{3}\b')
DOCSTRING_REGEX = re.compile(r'u?r?["\']')
EXTRANEOUS_WHITESPACE_REGEX = re.compile(r'[\[({][ \t]|[ \t][\]}),;:](?!=)')
WHITESPACE_AFTER_COMMA_REGEX = re.compile(r'[,;:]\s*(?:  |\t)')
COMPARE_SINGLETON_REGEX = re.compile(r'(\bNone|\bFalse|\bTrue)?\s*([=!]=)'
                                     r'\s*(?(1)|(None|False|True))\b')
COMPARE_NEGATIVE_REGEX = re.compile(r'\b(?<!is\s)(not)\s+[^][)(}{ ]+\s+'
                                    r'(in|is)\s')
COMPARE_TYPE_REGEX = re.compile(r'(?:[=!]=|is(?:\s+not)?)\s+type(?:s.\w+Type'
                                r'|\s*\(\s*([^)]*[^ )])\s*\))')
KEYWORD_REGEX = re.compile(r'(\s*)\b(?:%s)\b(\s*)' % r'|'.join(KEYWORDS))
OPERATOR_REGEX = re.compile(r'(?:[^,\s])(\s*)(?:[-+*/|!<=>%&^]+|:=)(\s*)')
LAMBDA_REGEX = re.compile(r'\blambda\b')
HUNK_REGEX = re.compile(r'^@@ -\d+(?:,\d+)? \+(\d+)(?:,(\d+))? @@.*$')
STARTSWITH_DEF_REGEX = re.compile(r'^(async\s+def|def)\b')
STARTSWITH_TOP_LEVEL_REGEX = re.compile(r'^(async\s+def\s+|def\s+|class\s+|@)')
STARTSWITH_INDENT_STATEMENT_REGEX = re.compile(
    r'^\s*({})\b'.format('|'.join(s.replace(' ', r'\s+') for s in (
        'def', 'async def',
        'for', 'async for',
        'if', 'elif', 'else',
        'try', 'except', 'finally',
        'with', 'async with',
        'class',
        'while',
    )))
)
DUNDER_REGEX = re.compile(r"^__([^\s]+)__(?::\s*[a-zA-Z.0-9_\[\]\"]+)? = ")
BLANK_EXCEPT_REGEX = re.compile(r"except\s*:")

_checks = {'physical_line': {}, 'logical_line': {}, 'tree': {}}


def _get_parameters(function):
    return [parameter.name
            for parameter
            in inspect.signature(function).parameters.values()
            if parameter.kind == parameter.POSITIONAL_OR_KEYWORD]


def register_check(check, codes=None):
    """Register a new check object."""
    def _add_check(check, kind, codes, args):
        if check in _checks[kind]:
            _checks[kind][check][0].extend(codes or [])
        else:
            _checks[kind][check] = (codes or [''], args)
    if inspect.isfunction(check):
        args = _get_parameters(check)
        if args and args[0] in ('physical_line', 'logical_line'):
            if codes is None:
                codes = ERRORCODE_REGEX.findall(check.__doc__ or '')
            _add_check(check, args[0], codes, args)
    elif inspect.isclass(check):
        if _get_parameters(check.__init__)[:2] == ['self', 'tree']:
            _add_check(check, 'tree', codes, None)
    return check


########################################################################
# Plugins (check functions) for physical lines
########################################################################

@register_check
def tabs_or_spaces(physical_line, indent_char):
    r"""Never mix tabs and spaces.

    The most popular way of indenting Python is with spaces only.  The
    second-most popular way is with tabs only.  Code indented with a
    mixture of tabs and spaces should be converted to using spaces
    exclusively.  When invoking the Python command line interpreter with
    the -t option, it issues warnings about code that illegally mixes
    tabs and spaces.  When using -tt these warnings become errors.
    These options are highly recommended!

    Okay: if a == 0:\n    a = 1\n    b = 1
    E101: if a == 0:\n        a = 1\n\tb = 1
    """
    indent = INDENT_REGEX.match(physical_line).group(1)
    for offset, char in enumerate(indent):
        if char != indent_char:
            return offset, "E101 indentation contains mixed spaces and tabs"


@register_check
def tabs_obsolete(physical_line):
    r"""On new projects, spaces-only are strongly recommended over tabs.

    Okay: if True:\n    return
    W191: if True:\n\treturn
    """
    indent = INDENT_REGEX.match(physical_line).group(1)
    if '\t' in indent:
        return indent.index('\t'), "W191 indentation contains tabs"


@register_check
def trailing_whitespace(physical_line):
    r"""Trailing whitespace is superfluous.

    The warning returned varies on whether the line itself is blank,
    for easier filtering for those who want to indent their blank lines.

    Okay: spam(1)\n#
    W291: spam(1) \n#
    W293: class Foo(object):\n    \n    bang = 12
    """
    physical_line = physical_line.rstrip('\n')    # chr(10), newline
    physical_line = physical_line.rstrip('\r')    # chr(13), carriage return
    physical_line = physical_line.rstrip('\x0c')  # chr(12), form feed, ^L
    stripped = physical_line.rstrip(' \t\v')
    if physical_line != stripped:
        if stripped:
            return len(stripped), "W291 trailing whitespace"
        else:
            return 0, "W293 blank line contains whitespace"


@register_check
def trailing_blank_lines(physical_line, lines, line_number, total_lines):
    r"""Trailing blank lines are superfluous.

    Okay: spam(1)
    W391: spam(1)\n

    However the last line should end with a new line (warning W292).
    """
    if line_number == total_lines:
        stripped_last_line = physical_line.rstrip('\r\n')
        if physical_line and not stripped_last_line:
            return 0, "W391 blank line at end of file"
        if stripped_last_line == physical_line:
            return len(lines[-1]), "W292 no newline at end of file"


@register_check
def maximum_line_length(physical_line, max_line_length, multiline,
                        line_number, noqa):
    r"""Limit all lines to a maximum of 79 characters.

    There are still many devices around that are limited to 80 character
    lines; plus, limiting windows to 80 characters makes it possible to
    have several windows side-by-side.  The default wrapping on such
    devices looks ugly.  Therefore, please limit all lines to a maximum
    of 79 characters. For flowing long blocks of text (docstrings or
    comments), limiting the length to 72 characters is recommended.

    Reports error E501.
    """
    line = physical_line.rstrip()
    length = len(line)
    if length > max_line_length and not noqa:
        # Special case: ignore long shebang lines.
        if line_number == 1 and line.startswith('#!'):
            return
        # Special case for long URLs in multi-line docstrings or
        # comments, but still report the error when the 72 first chars
        # are whitespaces.
        chunks = line.split()
        if ((len(chunks) == 1 and multiline) or
            (len(chunks) == 2 and chunks[0] == '#')) and \
                len(line) - len(chunks[-1]) < max_line_length - 7:
            return
        if length > max_line_length:
            return (max_line_length, "E501 line too long "
                    "(%d > %d characters)" % (length, max_line_length))


########################################################################
# Plugins (check functions) for logical lines
########################################################################


def _is_one_liner(logical_line, indent_level, lines, line_number):
    if not STARTSWITH_TOP_LEVEL_REGEX.match(logical_line):
        return False

    line_idx = line_number - 1

    if line_idx < 1:
        prev_indent = 0
    else:
        prev_indent = expand_indent(lines[line_idx - 1])

    if prev_indent > indent_level:
        return False

    while line_idx < len(lines):
        line = lines[line_idx].strip()
        if not line.startswith('@') and STARTSWITH_TOP_LEVEL_REGEX.match(line):
            break
        else:
            line_idx += 1
    else:
        return False  # invalid syntax: EOF while searching for def/class

    next_idx = line_idx + 1
    while next_idx < len(lines):
        if lines[next_idx].strip():
            break
        else:
            next_idx += 1
    else:
        return True  # line is last in the file

    return expand_indent(lines[next_idx]) <= indent_level


@register_check
def blank_lines(logical_line, blank_lines, indent_level, line_number,
                blank_before, previous_logical,
                previous_unindented_logical_line, previous_indent_level,
                lines):
    r"""Separate top-level function and class definitions with two blank
    lines.

    Method definitions inside a class are separated by a single blank
    line.

    Extra blank lines may be used (sparingly) to separate groups of
    related functions.  Blank lines may be omitted between a bunch of
    related one-liners (e.g. a set of dummy implementations).

    Use blank lines in functions, sparingly, to indicate logical
    sections.

    Okay: def a():\n    pass\n\n\ndef b():\n    pass
    Okay: def a():\n    pass\n\n\nasync def b():\n    pass
    Okay: def a():\n    pass\n\n\n# Foo\n# Bar\n\ndef b():\n    pass
    Okay: default = 1\nfoo = 1
    Okay: classify = 1\nfoo = 1

    E301: class Foo:\n    b = 0\n    def bar():\n        pass
    E302: def a():\n    pass\n\ndef b(n):\n    pass
    E302: def a():\n    pass\n\nasync def b(n):\n    pass
    E303: def a():\n    pass\n\n\n\ndef b(n):\n    pass
    E303: def a():\n\n\n\n    pass
    E304: @decorator\n\ndef a():\n    pass
    E305: def a():\n    pass\na()
    E306: def a():\n    def b():\n        pass\n    def c():\n        pass
    """  # noqa
    top_level_lines = BLANK_LINES_CONFIG['top_level']
    method_lines = BLANK_LINES_CONFIG['method']

    if not previous_logical and blank_before < top_level_lines:
        return  # Don't expect blank lines before the first line
    if previous_logical.startswith('@'):
        if blank_lines:
            yield 0, "E304 blank lines found after function decorator"
    elif (blank_lines > top_level_lines or
            (indent_level and blank_lines == method_lines + 1)
          ):
        yield 0, "E303 too many blank lines (%d)" % blank_lines
    elif STARTSWITH_TOP_LEVEL_REGEX.match(logical_line):
        # allow a group of one-liners
        if (
            _is_one_liner(logical_line, indent_level, lines, line_number) and
            blank_before == 0
        ):
            return
        if indent_level:
            if not (blank_before == method_lines or
                    previous_indent_level < indent_level or
                    DOCSTRING_REGEX.match(previous_logical)
                    ):
                ancestor_level = indent_level
                nested = False
                # Search backwards for a def ancestor or tree root
                # (top level).
                for line in lines[line_number - top_level_lines::-1]:
                    if line.strip() and expand_indent(line) < ancestor_level:
                        ancestor_level = expand_indent(line)
                        nested = STARTSWITH_DEF_REGEX.match(line.lstrip())
                        if nested or ancestor_level == 0:
                            break
                if nested:
                    yield 0, "E306 expected %s blank line before a " \
                        "nested definition, found 0" % (method_lines,)
                else:
                    yield 0, "E301 expected {} blank line, found 0".format(
                        method_lines)
        elif blank_before != top_level_lines:
            yield 0, "E302 expected %s blank lines, found %d" % (
                top_level_lines, blank_before)
    elif (logical_line and
            not indent_level and
            blank_before != top_level_lines and
            previous_unindented_logical_line.startswith(('def ', 'class '))
          ):
        yield 0, "E305 expected %s blank lines after " \
            "class or function definition, found %d" % (
                top_level_lines, blank_before)


@register_check
def extraneous_whitespace(logical_line):
    r"""Avoid extraneous whitespace.

    Avoid extraneous whitespace in these situations:
    - Immediately inside parentheses, brackets or braces.
    - Immediately before a comma, semicolon, or colon.

    Okay: spam(ham[1], {eggs: 2})
    E201: spam( ham[1], {eggs: 2})
    E201: spam(ham[ 1], {eggs: 2})
    E201: spam(ham[1], { eggs: 2})
    E202: spam(ham[1], {eggs: 2} )
    E202: spam(ham[1 ], {eggs: 2})
    E202: spam(ham[1], {eggs: 2 })

    E203: if x == 4: print x, y; x, y = y , x
    E203: if x == 4: print x, y ; x, y = y, x
    E203: if x == 4 : print x, y; x, y = y, x
    """
    line = logical_line
    for match in EXTRANEOUS_WHITESPACE_REGEX.finditer(line):
        text = match.group()
        char = text.strip()
        found = match.start()
        if text[-1].isspace():
            # assert char in '([{'
            yield found + 1, "E201 whitespace after '%s'" % char
        elif line[found - 1] != ',':
            code = ('E202' if char in '}])' else 'E203')  # if char in ',;:'
            yield found, f"{code} whitespace before '{char}'"


@register_check
def whitespace_around_keywords(logical_line):
    r"""Avoid extraneous whitespace around keywords.

    Okay: True and False
    E271: True and  False
    E272: True  and False
    E273: True and\tFalse
    E274: True\tand False
    """
    for match in KEYWORD_REGEX.finditer(logical_line):
        before, after = match.groups()

        if '\t' in before:
            yield match.start(1), "E274 tab before keyword"
        elif len(before) > 1:
            yield match.start(1), "E272 multiple spaces before keyword"

        if '\t' in after:
            yield match.start(2), "E273 tab after keyword"
        elif len(after) > 1:
            yield match.start(2), "E271 multiple spaces after keyword"


@register_check
def missing_whitespace_after_keyword(logical_line, tokens):
    r"""Keywords should be followed by whitespace.

    Okay: from foo import (bar, baz)
    E275: from foo import(bar, baz)
    E275: from importable.module import(bar, baz)
    E275: if(foo): bar
    """
    for tok0, tok1 in zip(tokens, tokens[1:]):
        # This must exclude the True/False/None singletons, which can
        # appear e.g. as "if x is None:", and async/await, which were
        # valid identifier names in old Python versions.
        if (tok0.end == tok1.start and
                keyword.iskeyword(tok0.string) and
                tok0.string not in SINGLETONS and
                tok0.string not in ('async', 'await') and
                not (tok0.string == 'except' and tok1.string == '*') and
                not (tok0.string == 'yield' and tok1.string == ')') and
                tok1.string not in ':\n'):
            yield tok0.end, "E275 missing whitespace after keyword"


@register_check
def missing_whitespace(logical_line):
    r"""Each comma, semicolon or colon should be followed by whitespace.

    Okay: [a, b]
    Okay: (3,)
    Okay: a[3,] = 1
    Okay: a[1:4]
    Okay: a[:4]
    Okay: a[1:]
    Okay: a[1:4:2]
    E231: ['a','b']
    E231: foo(bar,baz)
    E231: [{'a':'b'}]
    """
    line = logical_line
    for index in range(len(line) - 1):
        char = line[index]
        next_char = line[index + 1]
        if char in ',;:' and next_char not in WHITESPACE:
            before = line[:index]
            if char == ':' and before.count('[') > before.count(']') and \
                    before.rfind('{') < before.rfind('['):
                continue  # Slice syntax, no space required
            if char == ',' and next_char in ')]':
                continue  # Allow tuple with only one element: (3,)
            if char == ':' and next_char == '=' and sys.version_info >= (3, 8):
                continue  # Allow assignment expression
            yield index, "E231 missing whitespace after '%s'" % char


@register_check
def indentation(logical_line, previous_logical, indent_char,
                indent_level, previous_indent_level,
                indent_size):
    r"""Use indent_size (PEP8 says 4) spaces per indentation level.

    For really old code that you don't want to mess up, you can continue
    to use 8-space tabs.

    Okay: a = 1
    Okay: if a == 0:\n    a = 1
    E111:   a = 1
    E114:   # a = 1

    Okay: for item in items:\n    pass
    E112: for item in items:\npass
    E115: for item in items:\n# Hi\n    pass

    Okay: a = 1\nb = 2
    E113: a = 1\n    b = 2
    E116: a = 1\n    # b = 2
    """
    c = 0 if logical_line else 3
    tmpl = "E11%d %s" if logical_line else "E11%d %s (comment)"
    if indent_level % indent_size:
        yield 0, tmpl % (
            1 + c,
            "indentation is not a multiple of " + str(indent_size),
        )
    indent_expect = previous_logical.endswith(':')
    if indent_expect and indent_level <= previous_indent_level:
        yield 0, tmpl % (2 + c, "expected an indented block")
    elif not indent_expect and indent_level > previous_indent_level:
        yield 0, tmpl % (3 + c, "unexpected indentation")

    if indent_expect:
        expected_indent_amount = 8 if indent_char == '\t' else 4
        expected_indent_level = previous_indent_level + expected_indent_amount
        if indent_level > expected_indent_level:
            yield 0, tmpl % (7, 'over-indented')


@register_check
def continued_indentation(logical_line, tokens, indent_level, hang_closing,
                          indent_char, indent_size, noqa, verbose):
    r"""Continuation lines indentation.

    Continuation lines should align wrapped elements either vertically
    using Python's implicit line joining inside parentheses, brackets
    and braces, or using a hanging indent.

    When using a hanging indent these considerations should be applied:
    - there should be no arguments on the first line, and
    - further indentation should be used to clearly distinguish itself
      as a continuation line.

    Okay: a = (\n)
    E123: a = (\n    )

    Okay: a = (\n    42)
    E121: a = (\n   42)
    E122: a = (\n42)
    E123: a = (\n    42\n    )
    E124: a = (24,\n     42\n)
    E125: if (\n    b):\n    pass
    E126: a = (\n        42)
    E127: a = (24,\n      42)
    E128: a = (24,\n    42)
    E129: if (a or\n    b):\n    pass
    E131: a = (\n    42\n 24)
    """
    first_row = tokens[0][2][0]
    nrows = 1 + tokens[-1][2][0] - first_row
    if noqa or nrows == 1:
        return

    # indent_next tells us whether the next block is indented; assuming
    # that it is indented by 4 spaces, then we should not allow 4-space
    # indents on the final continuation line; in turn, some other
    # indents are allowed to have an extra 4 spaces.
    indent_next = logical_line.endswith(':')

    row = depth = 0
    valid_hangs = (indent_size,) if indent_char != '\t' \
        else (indent_size, indent_size * 2)
    # remember how many brackets were opened on each line
    parens = [0] * nrows
    # relative indents of physical lines
    rel_indent = [0] * nrows
    # for each depth, collect a list of opening rows
    open_rows = [[0]]
    # for each depth, memorize the hanging indentation
    hangs = [None]
    # visual indents
    indent_chances = {}
    last_indent = tokens[0][2]
    visual_indent = None
    last_token_multiline = False
    # for each depth, memorize the visual indent column
    indent = [last_indent[1]]
    if verbose >= 3:
        print(">>> " + tokens[0][4].rstrip())

    for token_type, text, start, end, line in tokens:

        newline = row < start[0] - first_row
        if newline:
            row = start[0] - first_row
            newline = not last_token_multiline and token_type not in NEWLINE

        if newline:
            # this is the beginning of a continuation line.
            last_indent = start
            if verbose >= 3:
                print("... " + line.rstrip())

            # record the initial indent.
            rel_indent[row] = expand_indent(line) - indent_level

            # identify closing bracket
            close_bracket = (token_type == tokenize.OP and text in ']})')

            # is the indent relative to an opening bracket line?
            for open_row in reversed(open_rows[depth]):
                hang = rel_indent[row] - rel_indent[open_row]
                hanging_indent = hang in valid_hangs
                if hanging_indent:
                    break
            if hangs[depth]:
                hanging_indent = (hang == hangs[depth])
            # is there any chance of visual indent?
            visual_indent = (not close_bracket and hang > 0 and
                             indent_chances.get(start[1]))

            if close_bracket and indent[depth]:
                # closing bracket for visual indent
                if start[1] != indent[depth]:
                    yield (start, "E124 closing bracket does not match "
                           "visual indentation")
            elif close_bracket and not hang:
                # closing bracket matches indentation of opening
                # bracket's line
                if hang_closing:
                    yield start, "E133 closing bracket is missing indentation"
            elif indent[depth] and start[1] < indent[depth]:
                if visual_indent is not True:
                    # visual indent is broken
                    yield (start, "E128 continuation line "
                           "under-indented for visual indent")
            elif hanging_indent or (indent_next and
                                    rel_indent[row] == 2 * indent_size):
                # hanging indent is verified
                if close_bracket and not hang_closing:
                    yield (start, "E123 closing bracket does not match "
                           "indentation of opening bracket's line")
                hangs[depth] = hang
            elif visual_indent is True:
                # visual indent is verified
                indent[depth] = start[1]
            elif visual_indent in (text, str):
                # ignore token lined up with matching one from a
                # previous line
                pass
            else:
                # indent is broken
                if hang <= 0:
                    error = "E122", "missing indentation or outdented"
                elif indent[depth]:
                    error = "E127", "over-indented for visual indent"
                elif not close_bracket and hangs[depth]:
                    error = "E131", "unaligned for hanging indent"
                else:
                    hangs[depth] = hang
                    if hang > indent_size:
                        error = "E126", "over-indented for hanging indent"
                    else:
                        error = "E121", "under-indented for hanging indent"
                yield start, "%s continuation line %s" % error

        # look for visual indenting
        if (parens[row] and
                token_type not in (tokenize.NL, tokenize.COMMENT) and
                not indent[depth]):
            indent[depth] = start[1]
            indent_chances[start[1]] = True
            if verbose >= 4:
                print(f"bracket depth {depth} indent to {start[1]}")
        # deal with implicit string concatenation
        elif (token_type in (tokenize.STRING, tokenize.COMMENT) or
              text in ('u', 'ur', 'b', 'br')):
            indent_chances[start[1]] = str
        # visual indent after assert/raise/with
        elif not row and not depth and text in ["assert", "raise", "with"]:
            indent_chances[end[1] + 1] = True
        # special case for the "if" statement because len("if (") == 4
        elif not indent_chances and not row and not depth and text == 'if':
            indent_chances[end[1] + 1] = True
        elif text == ':' and line[end[1]:].isspace():
            open_rows[depth].append(row)

        # keep track of bracket depth
        if token_type == tokenize.OP:
            if text in '([{':
                depth += 1
                indent.append(0)
                hangs.append(None)
                if len(open_rows) == depth:
                    open_rows.append([])
                open_rows[depth].append(row)
                parens[row] += 1
                if verbose >= 4:
                    print("bracket depth %s seen, col %s, visual min = %s" %
                          (depth, start[1], indent[depth]))
            elif text in ')]}' and depth > 0:
                # parent indents should not be more than this one
                prev_indent = indent.pop() or last_indent[1]
                hangs.pop()
                for d in range(depth):
                    if indent[d] > prev_indent:
                        indent[d] = 0
                for ind in list(indent_chances):
                    if ind >= prev_indent:
                        del indent_chances[ind]
                del open_rows[depth + 1:]
                depth -= 1
                if depth:
                    indent_chances[indent[depth]] = True
                for idx in range(row, -1, -1):
                    if parens[idx]:
                        parens[idx] -= 1
                        break
            assert len(indent) == depth + 1
            if start[1] not in indent_chances:
                # allow lining up tokens
                indent_chances[start[1]] = text

        last_token_multiline = (start[0] != end[0])
        if last_token_multiline:
            rel_indent[end[0] - first_row] = rel_indent[row]

    if indent_next and expand_indent(line) == indent_level + indent_size:
        pos = (start[0], indent[0] + indent_size)
        if visual_indent:
            code = "E129 visually indented line"
        else:
            code = "E125 continuation line"
        yield pos, "%s with same indent as next logical line" % code


@register_check
def whitespace_before_parameters(logical_line, tokens):
    r"""Avoid extraneous whitespace.

    Avoid extraneous whitespace in the following situations:
    - before the open parenthesis that starts the argument list of a
      function call.
    - before the open parenthesis that starts an indexing or slicing.

    Okay: spam(1)
    E211: spam (1)

    Okay: dict['key'] = list[index]
    E211: dict ['key'] = list[index]
    E211: dict['key'] = list [index]
    """
    prev_type, prev_text, __, prev_end, __ = tokens[0]
    for index in range(1, len(tokens)):
        token_type, text, start, end, __ = tokens[index]
        if (
            token_type == tokenize.OP and
            text in '([' and
            start != prev_end and
            (prev_type == tokenize.NAME or prev_text in '}])') and
            # Syntax "class A (B):" is allowed, but avoid it
            (index < 2 or tokens[index - 2][1] != 'class') and
            # Allow "return (a.foo for a in range(5))"
            not keyword.iskeyword(prev_text) and
            # 'match' and 'case' are only soft keywords
            (
                sys.version_info < (3, 9) or
                not keyword.issoftkeyword(prev_text)
            )
        ):
            yield prev_end, "E211 whitespace before '%s'" % text
        prev_type = token_type
        prev_text = text
        prev_end = end


@register_check
def whitespace_around_operator(logical_line):
    r"""Avoid extraneous whitespace around an operator.

    Okay: a = 12 + 3
    E221: a = 4  + 5
    E222: a = 4 +  5
    E223: a = 4\t+ 5
    E224: a = 4 +\t5
    """
    for match in OPERATOR_REGEX.finditer(logical_line):
        before, after = match.groups()

        if '\t' in before:
            yield match.start(1), "E223 tab before operator"
        elif len(before) > 1:
            yield match.start(1), "E221 multiple spaces before operator"

        if '\t' in after:
            yield match.start(2), "E224 tab after operator"
        elif len(after) > 1:
            yield match.start(2), "E222 multiple spaces after operator"


@register_check
def missing_whitespace_around_operator(logical_line, tokens):
    r"""Surround operators with a single space on either side.

    - Always surround these binary operators with a single space on
      either side: assignment (=), augmented assignment (+=, -= etc.),
      comparisons (==, <, >, !=, <=, >=, in, not in, is, is not),
      Booleans (and, or, not).

    - If operators with different priorities are used, consider adding
      whitespace around the operators with the lowest priorities.

    Okay: i = i + 1
    Okay: submitted += 1
    Okay: x = x * 2 - 1
    Okay: hypot2 = x * x + y * y
    Okay: c = (a + b) * (a - b)
    Okay: foo(bar, key='word', *args, **kwargs)
    Okay: alpha[:-i]

    E225: i=i+1
    E225: submitted +=1
    E225: x = x /2 - 1
    E225: z = x **y
    E225: z = 1and 1
    E226: c = (a+b) * (a-b)
    E226: hypot2 = x*x + y*y
    E227: c = a|b
    E228: msg = fmt%(errno, errmsg)
    """
    parens = 0
    need_space = False
    prev_type = tokenize.OP
    prev_text = prev_end = None
    operator_types = (tokenize.OP, tokenize.NAME)
    for token_type, text, start, end, line in tokens:
        if token_type in SKIP_COMMENTS:
            continue
        if text in ('(', 'lambda'):
            parens += 1
        elif text == ')':
            parens -= 1
        if need_space:
            if start != prev_end:
                # Found a (probably) needed space
                if need_space is not True and not need_space[1]:
                    yield (need_space[0],
                           "E225 missing whitespace around operator")
                need_space = False
            elif text == '>' and prev_text in ('<', '-'):
                # Tolerate the "<>" operator, even if running Python 3
                # Deal with Python 3's annotated return value "->"
                pass
            elif (
                    # def f(a, /, b):
                    #           ^
                    # def f(a, b, /):
                    #              ^
                    # f = lambda a, /:
                    #                ^
                    prev_text == '/' and text in {',', ')', ':'} or
                    # def f(a, b, /):
                    #               ^
                    prev_text == ')' and text == ':'
            ):
                # Tolerate the "/" operator in function definition
                # For more info see PEP570
                pass
            else:
                if need_space is True or need_space[1]:
                    # A needed trailing space was not found
                    yield prev_end, "E225 missing whitespace around operator"
                elif prev_text != '**':
                    code, optype = 'E226', 'arithmetic'
                    if prev_text == '%':
                        code, optype = 'E228', 'modulo'
                    elif prev_text not in ARITHMETIC_OP:
                        code, optype = 'E227', 'bitwise or shift'
                    yield (need_space[0], "%s missing whitespace "
                           "around %s operator" % (code, optype))
                need_space = False
        elif token_type in operator_types and prev_end is not None:
            if text == '=' and parens:
                # Allow keyword args or defaults: foo(bar=None).
                pass
            elif text in WS_NEEDED_OPERATORS:
                need_space = True
            elif text in UNARY_OPERATORS:
                # Check if the operator is used as a binary operator
                # Allow unary operators: -123, -x, +1.
                # Allow argument unpacking: foo(*args, **kwargs).
                if prev_type == tokenize.OP and prev_text in '}])' or (
                    prev_type != tokenize.OP and
                    prev_text not in KEYWORDS and (
                        sys.version_info < (3, 9) or
                        not keyword.issoftkeyword(prev_text)
                    )
                ):
                    need_space = None
            elif text in WS_OPTIONAL_OPERATORS:
                need_space = None

            if need_space is None:
                # Surrounding space is optional, but ensure that
                # trailing space matches opening space
                need_space = (prev_end, start != prev_end)
            elif need_space and start == prev_end:
                # A needed opening space was not found
                yield prev_end, "E225 missing whitespace around operator"
                need_space = False
        prev_type = token_type
        prev_text = text
        prev_end = end


@register_check
def whitespace_around_comma(logical_line):
    r"""Avoid extraneous whitespace after a comma or a colon.

    Note: these checks are disabled by default

    Okay: a = (1, 2)
    E241: a = (1,  2)
    E242: a = (1,\t2)
    """
    line = logical_line
    for m in WHITESPACE_AFTER_COMMA_REGEX.finditer(line):
        found = m.start() + 1
        if '\t' in m.group():
            yield found, "E242 tab after '%s'" % m.group()[0]
        else:
            yield found, "E241 multiple spaces after '%s'" % m.group()[0]


@register_check
def whitespace_around_named_parameter_equals(logical_line, tokens):
    r"""Don't use spaces around the '=' sign in function arguments.

    Don't use spaces around the '=' sign when used to indicate a
    keyword argument or a default parameter value, except when
    using a type annotation.

    Okay: def complex(real, imag=0.0):
    Okay: return magic(r=real, i=imag)
    Okay: boolean(a == b)
    Okay: boolean(a != b)
    Okay: boolean(a <= b)
    Okay: boolean(a >= b)
    Okay: def foo(arg: int = 42):
    Okay: async def foo(arg: int = 42):

    E251: def complex(real, imag = 0.0):
    E251: return magic(r = real, i = imag)
    E252: def complex(real, image: float=0.0):
    """
    parens = 0
    no_space = False
    require_space = False
    prev_end = None
    annotated_func_arg = False
    in_def = bool(STARTSWITH_DEF_REGEX.match(logical_line))

    message = "E251 unexpected spaces around keyword / parameter equals"
    missing_message = "E252 missing whitespace around parameter equals"

    for token_type, text, start, end, line in tokens:
        if token_type == tokenize.NL:
            continue
        if no_space:
            no_space = False
            if start != prev_end:
                yield (prev_end, message)
        if require_space:
            require_space = False
            if start == prev_end:
                yield (prev_end, missing_message)
        if token_type == tokenize.OP:
            if text in '([':
                parens += 1
            elif text in ')]':
                parens -= 1
            elif in_def and text == ':' and parens == 1:
                annotated_func_arg = True
            elif parens == 1 and text == ',':
                annotated_func_arg = False
            elif parens and text == '=':
                if annotated_func_arg and parens == 1:
                    require_space = True
                    if start == prev_end:
                        yield (prev_end, missing_message)
                else:
                    no_space = True
                    if start != prev_end:
                        yield (prev_end, message)
            if not parens:
                annotated_func_arg = False

        prev_end = end


@register_check
def whitespace_before_comment(logical_line, tokens):
    """Separate inline comments by at least two spaces.

    An inline comment is a comment on the same line as a statement.
    Inline comments should be separated by at least two spaces from the
    statement. They should start with a # and a single space.

    Each line of a block comment starts with a # and one or multiple
    spaces as there can be indented text inside the comment.

    Okay: x = x + 1  # Increment x
    Okay: x = x + 1    # Increment x
    Okay: # Block comments:
    Okay: #  - Block comment list
    Okay: # \xa0- Block comment list
    E261: x = x + 1 # Increment x
    E262: x = x + 1  #Increment x
    E262: x = x + 1  #  Increment x
    E262: x = x + 1  # \xa0Increment x
    E265: #Block comment
    E266: ### Block comment
    """
    prev_end = (0, 0)
    for token_type, text, start, end, line in tokens:
        if token_type == tokenize.COMMENT:
            inline_comment = line[:start[1]].strip()
            if inline_comment:
                if prev_end[0] == start[0] and start[1] < prev_end[1] + 2:
                    yield (prev_end,
                           "E261 at least two spaces before inline comment")
            symbol, sp, comment = text.partition(' ')
            bad_prefix = symbol not in '#:' and (symbol.lstrip('#')[:1] or '#')
            if inline_comment:
                if bad_prefix or comment[:1] in WHITESPACE:
                    yield start, "E262 inline comment should start with '# '"
            elif bad_prefix and (bad_prefix != '!' or start[0] > 1):
                if bad_prefix != '#':
                    yield start, "E265 block comment should start with '# '"
                elif comment:
                    yield start, "E266 too many leading '#' for block comment"
        elif token_type != tokenize.NL:
            prev_end = end


@register_check
def imports_on_separate_lines(logical_line):
    r"""Place imports on separate lines.

    Okay: import os\nimport sys
    E401: import sys, os

    Okay: from subprocess import Popen, PIPE
    Okay: from myclas import MyClass
    Okay: from foo.bar.yourclass import YourClass
    Okay: import myclass
    Okay: import foo.bar.yourclass
    """
    line = logical_line
    if line.startswith('import '):
        found = line.find(',')
        if -1 < found and ';' not in line[:found]:
            yield found, "E401 multiple imports on one line"


@register_check
def module_imports_on_top_of_file(
        logical_line, indent_level, checker_state, noqa):
    r"""Place imports at the top of the file.

    Always put imports at the top of the file, just after any module
    comments and docstrings, and before module globals and constants.

    Okay: import os
    Okay: # this is a comment\nimport os
    Okay: '''this is a module docstring'''\nimport os
    Okay: r'''this is a module docstring'''\nimport os
    Okay:
    try:\n\timport x\nexcept ImportError:\n\tpass\nelse:\n\tpass\nimport y
    Okay:
    try:\n\timport x\nexcept ImportError:\n\tpass\nfinally:\n\tpass\nimport y
    E402: a=1\nimport os
    E402: 'One string'\n"Two string"\nimport os
    E402: a=1\nfrom sys import x

    Okay: if x:\n    import os
    """  # noqa
    def is_string_literal(line):
        if line[0] in 'uUbB':
            line = line[1:]
        if line and line[0] in 'rR':
            line = line[1:]
        return line and (line[0] == '"' or line[0] == "'")

    allowed_keywords = (
        'try', 'except', 'else', 'finally', 'with', 'if', 'elif')

    if indent_level:  # Allow imports in conditional statement/function
        return
    if not logical_line:  # Allow empty lines or comments
        return
    if noqa:
        return
    line = logical_line
    if line.startswith('import ') or line.startswith('from '):
        if checker_state.get('seen_non_imports', False):
            yield 0, "E402 module level import not at top of file"
    elif re.match(DUNDER_REGEX, line):
        return
    elif any(line.startswith(kw) for kw in allowed_keywords):
        # Allow certain keywords intermixed with imports in order to
        # support conditional or filtered importing
        return
    elif is_string_literal(line):
        # The first literal is a docstring, allow it. Otherwise, report
        # error.
        if checker_state.get('seen_docstring', False):
            checker_state['seen_non_imports'] = True
        else:
            checker_state['seen_docstring'] = True
    else:
        checker_state['seen_non_imports'] = True


@register_check
def compound_statements(logical_line):
    r"""Compound statements (on the same line) are generally
    discouraged.

    While sometimes it's okay to put an if/for/while with a small body
    on the same line, never do this for multi-clause statements.
    Also avoid folding such long lines!

    Always use a def statement instead of an assignment statement that
    binds a lambda expression directly to a name.

    Okay: if foo == 'blah':\n    do_blah_thing()
    Okay: do_one()
    Okay: do_two()
    Okay: do_three()

    E701: if foo == 'blah': do_blah_thing()
    E701: for x in lst: total += x
    E701: while t < 10: t = delay()
    E701: if foo == 'blah': do_blah_thing()
    E701: else: do_non_blah_thing()
    E701: try: something()
    E701: finally: cleanup()
    E701: if foo == 'blah': one(); two(); three()
    E702: do_one(); do_two(); do_three()
    E703: do_four();  # useless semicolon
    E704: def f(x): return 2*x
    E731: f = lambda x: 2*x
    """
    line = logical_line
    last_char = len(line) - 1
    found = line.find(':')
    prev_found = 0
    counts = {char: 0 for char in '{}[]()'}
    while -1 < found < last_char:
        update_counts(line[prev_found:found], counts)
        if ((counts['{'] <= counts['}'] and   # {'a': 1} (dict)
             counts['['] <= counts[']'] and   # [1:2] (slice)
             counts['('] <= counts[')']) and  # (annotation)
            not (sys.version_info >= (3, 8) and
                 line[found + 1] == '=')):  # assignment expression
            lambda_kw = LAMBDA_REGEX.search(line, 0, found)
            if lambda_kw:
                before = line[:lambda_kw.start()].rstrip()
                if before[-1:] == '=' and before[:-1].strip().isidentifier():
                    yield 0, ("E731 do not assign a lambda expression, use a "
                              "def")
                break
            if STARTSWITH_DEF_REGEX.match(line):
                yield 0, "E704 multiple statements on one line (def)"
            elif STARTSWITH_INDENT_STATEMENT_REGEX.match(line):
                yield found, "E701 multiple statements on one line (colon)"
        prev_found = found
        found = line.find(':', found + 1)
    found = line.find(';')
    while -1 < found:
        if found < last_char:
            yield found, "E702 multiple statements on one line (semicolon)"
        else:
            yield found, "E703 statement ends with a semicolon"
        found = line.find(';', found + 1)


@register_check
def explicit_line_join(logical_line, tokens):
    r"""Avoid explicit line join between brackets.

    The preferred way of wrapping long lines is by using Python's
    implied line continuation inside parentheses, brackets and braces.
    Long lines can be broken over multiple lines by wrapping expressions
    in parentheses.  These should be used in preference to using a
    backslash for line continuation.

    E502: aaa = [123, \\n       123]
    E502: aaa = ("bbb " \\n       "ccc")

    Okay: aaa = [123,\n       123]
    Okay: aaa = ("bbb "\n       "ccc")
    Okay: aaa = "bbb " \\n    "ccc"
    Okay: aaa = 123  # \\
    """
    prev_start = prev_end = parens = 0
    comment = False
    backslash = None
    for token_type, text, start, end, line in tokens:
        if token_type == tokenize.COMMENT:
            comment = True
        if start[0] != prev_start and parens and backslash and not comment:
            yield backslash, "E502 the backslash is redundant between brackets"
        if end[0] != prev_end:
            if line.rstrip('\r\n').endswith('\\'):
                backslash = (end[0], len(line.splitlines()[-1]) - 1)
            else:
                backslash = None
            prev_start = prev_end = end[0]
        else:
            prev_start = start[0]
        if token_type == tokenize.OP:
            if text in '([{':
                parens += 1
            elif text in ')]}':
                parens -= 1


# The % character is strictly speaking a binary operator, but the
# common usage seems to be to put it next to the format parameters,
# after a line break.
_SYMBOLIC_OPS = frozenset("()[]{},:.;@=%~") | frozenset(("...",))


def _is_binary_operator(token_type, text):
    return (
        token_type == tokenize.OP or
        text in {'and', 'or'}
    ) and (
        text not in _SYMBOLIC_OPS
    )


def _break_around_binary_operators(tokens):
    """Private function to reduce duplication.

    This factors out the shared details between
    :func:`break_before_binary_operator` and
    :func:`break_after_binary_operator`.
    """
    line_break = False
    unary_context = True
    # Previous non-newline token types and text
    previous_token_type = None
    previous_text = None
    for token_type, text, start, end, line in tokens:
        if token_type == tokenize.COMMENT:
            continue
        if ('\n' in text or '\r' in text) and token_type != tokenize.STRING:
            line_break = True
        else:
            yield (token_type, text, previous_token_type, previous_text,
                   line_break, unary_context, start)
            unary_context = text in '([{,;'
            line_break = False
            previous_token_type = token_type
            previous_text = text


@register_check
def break_before_binary_operator(logical_line, tokens):
    r"""
    Avoid breaks before binary operators.

    The preferred place to break around a binary operator is after the
    operator, not before it.

    W503: (width == 0\n + height == 0)
    W503: (width == 0\n and height == 0)
    W503: var = (1\n       & ~2)
    W503: var = (1\n       / -2)
    W503: var = (1\n       + -1\n       + -2)

    Okay: foo(\n    -x)
    Okay: foo(x\n    [])
    Okay: x = '''\n''' + ''
    Okay: foo(x,\n    -y)
    Okay: foo(x,  # comment\n    -y)
    """
    for context in _break_around_binary_operators(tokens):
        (token_type, text, previous_token_type, previous_text,
         line_break, unary_context, start) = context
        if (_is_binary_operator(token_type, text) and line_break and
                not unary_context and
                not _is_binary_operator(previous_token_type,
                                        previous_text)):
            yield start, "W503 line break before binary operator"


@register_check
def break_after_binary_operator(logical_line, tokens):
    r"""
    Avoid breaks after binary operators.

    The preferred place to break around a binary operator is before the
    operator, not after it.

    W504: (width == 0 +\n height == 0)
    W504: (width == 0 and\n height == 0)
    W504: var = (1 &\n       ~2)

    Okay: foo(\n    -x)
    Okay: foo(x\n    [])
    Okay: x = '''\n''' + ''
    Okay: x = '' + '''\n'''
    Okay: foo(x,\n    -y)
    Okay: foo(x,  # comment\n    -y)

    The following should be W504 but unary_context is tricky with these
    Okay: var = (1 /\n       -2)
    Okay: var = (1 +\n       -1 +\n       -2)
    """
    prev_start = None
    for context in _break_around_binary_operators(tokens):
        (token_type, text, previous_token_type, previous_text,
         line_break, unary_context, start) = context
        if (_is_binary_operator(previous_token_type, previous_text) and
                line_break and
                not unary_context and
                not _is_binary_operator(token_type, text)):
            yield prev_start, "W504 line break after binary operator"
        prev_start = start


@register_check
def comparison_to_singleton(logical_line, noqa):
    r"""Comparison to singletons should use "is" or "is not".

    Comparisons to singletons like None should always be done
    with "is" or "is not", never the equality operators.

    Okay: if arg is not None:
    E711: if arg != None:
    E711: if None == arg:
    E712: if arg == True:
    E712: if False == arg:

    Also, beware of writing if x when you really mean if x is not None
    -- e.g. when testing whether a variable or argument that defaults to
    None was set to some other value.  The other value might have a type
    (such as a container) that could be false in a boolean context!
    """
    if noqa:
        return

    for match in COMPARE_SINGLETON_REGEX.finditer(logical_line):
        singleton = match.group(1) or match.group(3)
        same = (match.group(2) == '==')

        msg = "'if cond is %s:'" % (('' if same else 'not ') + singleton)
        if singleton in ('None',):
            code = 'E711'
        else:
            code = 'E712'
            nonzero = ((singleton == 'True' and same) or
                       (singleton == 'False' and not same))
            msg += " or 'if %scond:'" % ('' if nonzero else 'not ')
        yield match.start(2), ("%s comparison to %s should be %s" %
                               (code, singleton, msg))


@register_check
def comparison_negative(logical_line):
    r"""Negative comparison should be done using "not in" and "is not".

    Okay: if x not in y:\n    pass
    Okay: assert (X in Y or X is Z)
    Okay: if not (X in Y):\n    pass
    Okay: zz = x is not y
    E713: Z = not X in Y
    E713: if not X.B in Y:\n    pass
    E714: if not X is Y:\n    pass
    E714: Z = not X.B is Y
    """
    match = COMPARE_NEGATIVE_REGEX.search(logical_line)
    if match:
        pos = match.start(1)
        if match.group(2) == 'in':
            yield pos, "E713 test for membership should be 'not in'"
        else:
            yield pos, "E714 test for object identity should be 'is not'"


@register_check
def comparison_type(logical_line, noqa):
    r"""Object type comparisons should always use isinstance().

    Do not compare types directly.

    Okay: if isinstance(obj, int):
    E721: if type(obj) is type(1):

    When checking if an object is a string, keep in mind that it might
    be a unicode string too! In Python 2.3, str and unicode have a
    common base class, basestring, so you can do:

    Okay: if isinstance(obj, basestring):
    Okay: if type(a1) is type(b1):
    """
    match = COMPARE_TYPE_REGEX.search(logical_line)
    if match and not noqa:
        inst = match.group(1)
        if inst and inst.isidentifier() and inst not in SINGLETONS:
            return  # Allow comparison for types which are not obvious
        yield match.start(), "E721 do not compare types, use 'isinstance()'"


@register_check
def bare_except(logical_line, noqa):
    r"""When catching exceptions, mention specific exceptions when
    possible.

    Okay: except Exception:
    Okay: except BaseException:
    E722: except:
    """
    if noqa:
        return

    match = BLANK_EXCEPT_REGEX.match(logical_line)
    if match:
        yield match.start(), "E722 do not use bare 'except'"


@register_check
def ambiguous_identifier(logical_line, tokens):
    r"""Never use the characters 'l', 'O', or 'I' as variable names.

    In some fonts, these characters are indistinguishable from the
    numerals one and zero. When tempted to use 'l', use 'L' instead.

    Okay: L = 0
    Okay: o = 123
    Okay: i = 42
    E741: l = 0
    E741: O = 123
    E741: I = 42

    Variables can be bound in several other contexts, including class
    and function definitions, lambda functions, 'global' and 'nonlocal'
    statements, exception handlers, and 'with' and 'for' statements.
    In addition, we have a special handling for function parameters.

    Okay: except AttributeError as o:
    Okay: with lock as L:
    Okay: foo(l=12)
    Okay: foo(l=I)
    Okay: for a in foo(l=12):
    Okay: lambda arg: arg * l
    Okay: lambda a=l[I:5]: None
    Okay: lambda x=a.I: None
    Okay: if l >= 12:
    E741: except AttributeError as O:
    E741: with lock as l:
    E741: global I
    E741: nonlocal l
    E741: def foo(l):
    E741: def foo(l=12):
    E741: l = foo(l=12)
    E741: for l in range(10):
    E741: [l for l in lines if l]
    E741: lambda l: None
    E741: lambda a=x[1:5], l: None
    E741: lambda **l:
    E741: def f(**l):
    E742: class I(object):
    E743: def l(x):
    """
    func_depth = None  # set to brace depth if 'def' or 'lambda' is found
    seen_colon = False  # set to true if we're done with function parameters
    brace_depth = 0
    idents_to_avoid = ('l', 'O', 'I')
    prev_type, prev_text, prev_start, prev_end, __ = tokens[0]
    for index in range(1, len(tokens)):
        token_type, text, start, end, line = tokens[index]
        ident = pos = None
        # find function definitions
        if prev_text in {'def', 'lambda'}:
            func_depth = brace_depth
            seen_colon = False
        elif (
                func_depth is not None and
                text == ':' and
                brace_depth == func_depth
        ):
            seen_colon = True
        # update parameter parentheses level
        if text in '([{':
            brace_depth += 1
        elif text in ')]}':
            brace_depth -= 1
        # identifiers on the lhs of an assignment operator
        if text == ':=' or (text == '=' and brace_depth == 0):
            if prev_text in idents_to_avoid:
                ident = prev_text
                pos = prev_start
        # identifiers bound to values with 'as', 'for',
        # 'global', or 'nonlocal'
        if prev_text in ('as', 'for', 'global', 'nonlocal'):
            if text in idents_to_avoid:
                ident = text
                pos = start
        # function / lambda parameter definitions
        if (
                func_depth is not None and
                not seen_colon and
                index < len(tokens) - 1 and tokens[index + 1][1] in ':,=)' and
                prev_text in {'lambda', ',', '*', '**', '('} and
                text in idents_to_avoid
        ):
            ident = text
            pos = start
        if prev_text == 'class':
            if text in idents_to_avoid:
                yield start, "E742 ambiguous class definition '%s'" % text
        if prev_text == 'def':
            if text in idents_to_avoid:
                yield start, "E743 ambiguous function definition '%s'" % text
        if ident:
            yield pos, "E741 ambiguous variable name '%s'" % ident
        prev_text = text
        prev_start = start


@register_check
def python_3000_invalid_escape_sequence(logical_line, tokens, noqa):
    r"""Invalid escape sequences are deprecated in Python 3.6.

    Okay: regex = r'\.png$'
    W605: regex = '\.png$'
    """
    if noqa:
        return

    # https://docs.python.org/3/reference/lexical_analysis.html#string-and-bytes-literals
    valid = [
        '\n',
        '\\',
        '\'',
        '"',
        'a',
        'b',
        'f',
        'n',
        'r',
        't',
        'v',
        '0', '1', '2', '3', '4', '5', '6', '7',
        'x',

        # Escape sequences only recognized in string literals
        'N',
        'u',
        'U',
    ]

    for token_type, text, start, end, line in tokens:
        if token_type == tokenize.STRING:
            start_line, start_col = start
            quote = text[-3:] if text[-3:] in ('"""', "'''") else text[-1]
            # Extract string modifiers (e.g. u or r)
            quote_pos = text.index(quote)
            prefix = text[:quote_pos].lower()
            start = quote_pos + len(quote)
            string = text[start:-len(quote)]

            if 'r' not in prefix:
                pos = string.find('\\')
                while pos >= 0:
                    pos += 1
                    if string[pos] not in valid:
                        line = start_line + string.count('\n', 0, pos)
                        if line == start_line:
                            col = start_col + len(prefix) + len(quote) + pos
                        else:
                            col = pos - string.rfind('\n', 0, pos) - 1
                        yield (
                            (line, col - 1),
                            "W605 invalid escape sequence '\\%s'" %
                            string[pos],
                        )
                    pos = string.find('\\', pos + 1)


@register_check
def python_3000_async_await_keywords(logical_line, tokens):
    """'async' and 'await' are reserved keywords starting at Python 3.7.

    W606: async = 42
    W606: await = 42
    Okay: async def read(db):\n    data = await db.fetch('SELECT ...')
    """
    # The Python tokenize library before Python 3.5 recognizes
    # async/await as a NAME token. Therefore, use a state machine to
    # look for the possible async/await constructs as defined by the
    # Python grammar:
    # https://docs.python.org/3/reference/grammar.html

    state = None
    for token_type, text, start, end, line in tokens:
        error = False

        if token_type == tokenize.NL:
            continue

        if state is None:
            if token_type == tokenize.NAME:
                if text == 'async':
                    state = ('async_stmt', start)
                elif text == 'await':
                    state = ('await', start)
                elif (token_type == tokenize.NAME and
                      text in ('def', 'for')):
                    state = ('define', start)

        elif state[0] == 'async_stmt':
            if token_type == tokenize.NAME and text in ('def', 'with', 'for'):
                # One of funcdef, with_stmt, or for_stmt. Return to
                # looking for async/await names.
                state = None
            else:
                error = True
        elif state[0] == 'await':
            if token_type == tokenize.NAME:
                # An await expression. Return to looking for async/await
                # names.
                state = None
            elif token_type == tokenize.OP and text == '(':
                state = None
            else:
                error = True
        elif state[0] == 'define':
            if token_type == tokenize.NAME and text in ('async', 'await'):
                error = True
            else:
                state = None

        if error:
            yield (
                state[1],
                "W606 'async' and 'await' are reserved keywords starting with "
                "Python 3.7",
            )
            state = None

    # Last token
    if state is not None:
        yield (
            state[1],
            "W606 'async' and 'await' are reserved keywords starting with "
            "Python 3.7",
        )


########################################################################
@register_check
def maximum_doc_length(logical_line, max_doc_length, noqa, tokens):
    r"""Limit all doc lines to a maximum of 72 characters.

    For flowing long blocks of text (docstrings or comments), limiting
    the length to 72 characters is recommended.

    Reports warning W505
    """
    if max_doc_length is None or noqa:
        return

    prev_token = None
    skip_lines = set()
    # Skip lines that
    for token_type, text, start, end, line in tokens:
        if token_type not in SKIP_COMMENTS.union([tokenize.STRING]):
            skip_lines.add(line)

    for token_type, text, start, end, line in tokens:
        # Skip lines that aren't pure strings
        if token_type == tokenize.STRING and skip_lines:
            continue
        if token_type in (tokenize.STRING, tokenize.COMMENT):
            # Only check comment-only lines
            if prev_token is None or prev_token in SKIP_TOKENS:
                lines = line.splitlines()
                for line_num, physical_line in enumerate(lines):
                    if start[0] + line_num == 1 and line.startswith('#!'):
                        return
                    length = len(physical_line)
                    chunks = physical_line.split()
                    if token_type == tokenize.COMMENT:
                        if (len(chunks) == 2 and
                                length - len(chunks[-1]) < MAX_DOC_LENGTH):
                            continue
                    if len(chunks) == 1 and line_num + 1 < len(lines):
                        if (len(chunks) == 1 and
                                length - len(chunks[-1]) < MAX_DOC_LENGTH):
                            continue
                    if length > max_doc_length:
                        doc_error = (start[0] + line_num, max_doc_length)
                        yield (doc_error, "W505 doc line too long "
                                          "(%d > %d characters)"
                               % (length, max_doc_length))
        prev_token = token_type


########################################################################
# Helper functions
########################################################################


def readlines(filename):
    """Read the source code."""
    try:
        with tokenize.open(filename) as f:
            return f.readlines()
    except (LookupError, SyntaxError, UnicodeError):
        # Fall back if file encoding is improperly declared
        with open(filename, encoding='latin-1') as f:
            return f.readlines()


def stdin_get_value():
    """Read the value from stdin."""
    return io.TextIOWrapper(sys.stdin.buffer, encoding='utf-8', errors='ignore').read()


noqa = lru_cache(512)(re.compile(r'# no(?:qa|pep8)\b', re.I).search)


def expand_indent(line):
    r"""Return the amount of indentation.

    Tabs are expanded to the next multiple of 8.

    >>> expand_indent('    ')
    4
    >>> expand_indent('\t')
    8
    >>> expand_indent('       \t')
    8
    >>> expand_indent('        \t')
    16
    """
    line = line.rstrip('\n\r')
    if '\t' not in line:
        return len(line) - len(line.lstrip())
    result = 0
    for char in line:
        if char == '\t':
            result = result // 8 * 8 + 8
        elif char == ' ':
            result += 1
        else:
            break
    return result


def mute_string(text):
    """Replace contents with 'xxx' to prevent syntax matching.

    >>> mute_string('"abc"')
    '"xxx"'
    >>> mute_string("'''abc'''")
    "'''xxx'''"
    >>> mute_string("r'abc'")
    "r'xxx'"
    """
    # String modifiers (e.g. u or r)
    start = text.index(text[-1]) + 1
    end = len(text) - 1
    # Triple quotes
    if text[-3:] in ('"""', "'''"):
        start += 2
        end -= 2
    return text[:start] + 'x' * (end - start) + text[end:]


def parse_udiff(diff, patterns=None, parent='.'):
    """Return a dictionary of matching lines."""
    # For each file of the diff, the entry key is the filename,
    # and the value is a set of row numbers to consider.
    rv = {}
    path = nrows = None
    for line in diff.splitlines():
        if nrows:
            if line[:1] != '-':
                nrows -= 1
            continue
        if line[:3] == '@@ ':
            hunk_match = HUNK_REGEX.match(line)
            (row, nrows) = (int(g or '1') for g in hunk_match.groups())
            rv[path].update(range(row, row + nrows))
        elif line[:3] == '+++':
            path = line[4:].split('\t', 1)[0]
            # Git diff will use (i)ndex, (w)ork tree, (c)ommit and
            # (o)bject instead of a/b/c/d as prefixes for patches
            if path[:2] in ('b/', 'w/', 'i/'):
                path = path[2:]
            rv[path] = set()
    return {
        os.path.join(parent, filepath): rows
        for (filepath, rows) in rv.items()
        if rows and filename_match(filepath, patterns)
    }


def normalize_paths(value, parent=os.curdir):
    """Parse a comma-separated list of paths.

    Return a list of absolute paths.
    """
    if not value:
        return []
    if isinstance(value, list):
        return value
    paths = []
    for path in value.split(','):
        path = path.strip()
        if '/' in path:
            path = os.path.abspath(os.path.join(parent, path))
        paths.append(path.rstrip('/'))
    return paths


def filename_match(filename, patterns, default=True):
    """Check if patterns contains a pattern that matches filename.

    If patterns is unspecified, this always returns True.
    """
    if not patterns:
        return default
    return any(fnmatch(filename, pattern) for pattern in patterns)


def update_counts(s, counts):
    r"""Adds one to the counts of each appearance of characters in s,
        for characters in counts"""
    for char in s:
        if char in counts:
            counts[char] += 1


def _is_eol_token(token):
    return token[0] in NEWLINE or token[4][token[3][1]:].lstrip() == '\\\n'


########################################################################
# Framework to run all checks
########################################################################


class Checker:
    """Load a Python source file, tokenize it, check coding style."""

    def __init__(self, filename=None, lines=None,
                 options=None, report=None, **kwargs):
        if options is None:
            options = StyleGuide(kwargs).options
        else:
            assert not kwargs
        self._io_error = None
        self._physical_checks = options.physical_checks
        self._logical_checks = options.logical_checks
        self._ast_checks = options.ast_checks
        self.max_line_length = options.max_line_length
        self.max_doc_length = options.max_doc_length
        self.indent_size = options.indent_size
        self.multiline = False  # in a multiline string?
        self.hang_closing = options.hang_closing
        self.indent_size = options.indent_size
        self.verbose = options.verbose
        self.filename = filename
        # Dictionary where a checker can store its custom state.
        self._checker_states = {}
        if filename is None:
            self.filename = 'stdin'
            self.lines = lines or []
        elif filename == '-':
            self.filename = 'stdin'
            self.lines = stdin_get_value().splitlines(True)
        elif lines is None:
            try:
                self.lines = readlines(filename)
            except OSError:
                (exc_type, exc) = sys.exc_info()[:2]
                self._io_error = f'{exc_type.__name__}: {exc}'
                self.lines = []
        else:
            self.lines = lines
        if self.lines:
            ord0 = ord(self.lines[0][0])
            if ord0 in (0xef, 0xfeff):  # Strip the UTF-8 BOM
                if ord0 == 0xfeff:
                    self.lines[0] = self.lines[0][1:]
                elif self.lines[0][:3] == '\xef\xbb\xbf':
                    self.lines[0] = self.lines[0][3:]
        self.report = report or options.report
        self.report_error = self.report.error
        self.noqa = False

    def report_invalid_syntax(self):
        """Check if the syntax is valid."""
        (exc_type, exc) = sys.exc_info()[:2]
        if len(exc.args) > 1:
            offset = exc.args[1]
            if len(offset) > 2:
                offset = offset[1:3]
        else:
            offset = (1, 0)
        self.report_error(offset[0], offset[1] or 0,
                          f'E901 {exc_type.__name__}: {exc.args[0]}',
                          self.report_invalid_syntax)

    def readline(self):
        """Get the next line from the input buffer."""
        if self.line_number >= self.total_lines:
            return ''
        line = self.lines[self.line_number]
        self.line_number += 1
        if self.indent_char is None and line[:1] in WHITESPACE:
            self.indent_char = line[0]
        return line

    def run_check(self, check, argument_names):
        """Run a check plugin."""
        arguments = []
        for name in argument_names:
            arguments.append(getattr(self, name))
        return check(*arguments)

    def init_checker_state(self, name, argument_names):
        """Prepare custom state for the specific checker plugin."""
        if 'checker_state' in argument_names:
            self.checker_state = self._checker_states.setdefault(name, {})

    def check_physical(self, line):
        """Run all physical checks on a raw input line."""
        self.physical_line = line
        for name, check, argument_names in self._physical_checks:
            self.init_checker_state(name, argument_names)
            result = self.run_check(check, argument_names)
            if result is not None:
                (offset, text) = result
                self.report_error(self.line_number, offset, text, check)
                if text[:4] == 'E101':
                    self.indent_char = line[0]

    def build_tokens_line(self):
        """Build a logical line from tokens."""
        logical = []
        comments = []
        length = 0
        prev_row = prev_col = mapping = None
        for token_type, text, start, end, line in self.tokens:
            if token_type in SKIP_TOKENS:
                continue
            if not mapping:
                mapping = [(0, start)]
            if token_type == tokenize.COMMENT:
                comments.append(text)
                continue
            if token_type == tokenize.STRING:
                text = mute_string(text)
            if prev_row:
                (start_row, start_col) = start
                if prev_row != start_row:    # different row
                    prev_text = self.lines[prev_row - 1][prev_col - 1]
                    if prev_text == ',' or (prev_text not in '{[(' and
                                            text not in '}])'):
                        text = ' ' + text
                elif prev_col != start_col:  # different column
                    text = line[prev_col:start_col] + text
            logical.append(text)
            length += len(text)
            mapping.append((length, end))
            (prev_row, prev_col) = end
        self.logical_line = ''.join(logical)
        self.noqa = comments and noqa(''.join(comments))
        return mapping

    def check_logical(self):
        """Build a line from tokens and run all logical checks on it."""
        self.report.increment_logical_line()
        mapping = self.build_tokens_line()
        if not mapping:
            return

        mapping_offsets = [offset for offset, _ in mapping]
        (start_row, start_col) = mapping[0][1]
        start_line = self.lines[start_row - 1]
        self.indent_level = expand_indent(start_line[:start_col])
        if self.blank_before < self.blank_lines:
            self.blank_before = self.blank_lines
        if self.verbose >= 2:
            print(self.logical_line[:80].rstrip())
        for name, check, argument_names in self._logical_checks:
            if self.verbose >= 4:
                print('   ' + name)
            self.init_checker_state(name, argument_names)
            for offset, text in self.run_check(check, argument_names) or ():
                if not isinstance(offset, tuple):
                    # As mappings are ordered, bisecting is a fast way
                    # to find a given offset in them.
                    token_offset, pos = mapping[bisect.bisect_left(
                        mapping_offsets, offset)]
                    offset = (pos[0], pos[1] + offset - token_offset)
                self.report_error(offset[0], offset[1], text, check)
        if self.logical_line:
            self.previous_indent_level = self.indent_level
            self.previous_logical = self.logical_line
            if not self.indent_level:
                self.previous_unindented_logical_line = self.logical_line
        self.blank_lines = 0
        self.tokens = []

    def check_ast(self):
        """Build the file's AST and run all AST checks."""
        try:
            tree = compile(''.join(self.lines), '', 'exec', PyCF_ONLY_AST)
        except (ValueError, SyntaxError, TypeError):
            return self.report_invalid_syntax()
        for name, cls, __ in self._ast_checks:
            checker = cls(tree, self.filename)
            for lineno, offset, text, check in checker.run():
                if not self.lines or not noqa(self.lines[lineno - 1]):
                    self.report_error(lineno, offset, text, check)

    def generate_tokens(self):
        """Tokenize file, run physical line checks and yield tokens."""
        if self._io_error:
            self.report_error(1, 0, 'E902 %s' % self._io_error, readlines)
        tokengen = tokenize.generate_tokens(self.readline)
        try:
            prev_physical = ''
            for token in tokengen:
                if token[2][0] > self.total_lines:
                    return
                self.noqa = token[4] and noqa(token[4])
                self.maybe_check_physical(token, prev_physical)
                yield token
                prev_physical = token[4]
        except (SyntaxError, tokenize.TokenError):
            self.report_invalid_syntax()

    def maybe_check_physical(self, token, prev_physical):
        """If appropriate for token, check current physical line(s)."""
        # Called after every token, but act only on end of line.

        # a newline token ends a single physical line.
        if _is_eol_token(token):
            # if the file does not end with a newline, the NEWLINE
            # token is inserted by the parser, but it does not contain
            # the previous physical line in `token[4]`
            if token[4] == '':
                self.check_physical(prev_physical)
            else:
                self.check_physical(token[4])
        elif token[0] == tokenize.STRING and '\n' in token[1]:
            # Less obviously, a string that contains newlines is a
            # multiline string, either triple-quoted or with internal
            # newlines backslash-escaped. Check every physical line in
            # the string *except* for the last one: its newline is
            # outside of the multiline string, so we consider it a
            # regular physical line, and will check it like any other
            # physical line.
            #
            # Subtleties:
            # - we don't *completely* ignore the last line; if it
            #   contains the magical "# noqa" comment, we disable all
            #   physical checks for the entire multiline string
            # - have to wind self.line_number back because initially it
            #   points to the last line of the string, and we want
            #   check_physical() to give accurate feedback
            if noqa(token[4]):
                return
            self.multiline = True
            self.line_number = token[2][0]
            _, src, (_, offset), _, _ = token
            src = self.lines[self.line_number - 1][:offset] + src
            for line in src.split('\n')[:-1]:
                self.check_physical(line + '\n')
                self.line_number += 1
            self.multiline = False

    def check_all(self, expected=None, line_offset=0):
        """Run all checks on the input file."""
        self.report.init_file(self.filename, self.lines, expected, line_offset)
        self.total_lines = len(self.lines)
        if self._ast_checks:
            self.check_ast()
        self.line_number = 0
        self.indent_char = None
        self.indent_level = self.previous_indent_level = 0
        self.previous_logical = ''
        self.previous_unindented_logical_line = ''
        self.tokens = []
        self.blank_lines = self.blank_before = 0
        parens = 0
        for token in self.generate_tokens():
            self.tokens.append(token)
            token_type, text = token[0:2]
            if self.verbose >= 3:
                if token[2][0] == token[3][0]:
                    pos = '[{}:{}]'.format(token[2][1] or '', token[3][1])
                else:
                    pos = 'l.%s' % token[3][0]
                print('l.%s\t%s\t%s\t%r' %
                      (token[2][0], pos, tokenize.tok_name[token[0]], text))
            if token_type == tokenize.OP:
                if text in '([{':
                    parens += 1
                elif text in '}])':
                    parens -= 1
            elif not parens:
                if token_type in NEWLINE:
                    if token_type == tokenize.NEWLINE:
                        self.check_logical()
                        self.blank_before = 0
                    elif len(self.tokens) == 1:
                        # The physical line contains only this token.
                        self.blank_lines += 1
                        del self.tokens[0]
                    else:
                        self.check_logical()
        if self.tokens:
            self.check_physical(self.lines[-1])
            self.check_logical()
        return self.report.get_file_results()


class BaseReport:
    """Collect the results of the checks."""

    print_filename = False

    def __init__(self, options):
        self._benchmark_keys = options.benchmark_keys
        self._ignore_code = options.ignore_code
        # Results
        self.elapsed = 0
        self.total_errors = 0
        self.counters = dict.fromkeys(self._benchmark_keys, 0)
        self.messages = {}

    def start(self):
        """Start the timer."""
        self._start_time = time.time()

    def stop(self):
        """Stop the timer."""
        self.elapsed = time.time() - self._start_time

    def init_file(self, filename, lines, expected, line_offset):
        """Signal a new file."""
        self.filename = filename
        self.lines = lines
        self.expected = expected or ()
        self.line_offset = line_offset
        self.file_errors = 0
        self.counters['files'] += 1
        self.counters['physical lines'] += len(lines)

    def increment_logical_line(self):
        """Signal a new logical line."""
        self.counters['logical lines'] += 1

    def error(self, line_number, offset, text, check):
        """Report an error, according to options."""
        code = text[:4]
        if self._ignore_code(code):
            return
        if code in self.counters:
            self.counters[code] += 1
        else:
            self.counters[code] = 1
            self.messages[code] = text[5:]
        # Don't care about expected errors or warnings
        if code in self.expected:
            return
        if self.print_filename and not self.file_errors:
            print(self.filename)
        self.file_errors += 1
        self.total_errors += 1
        return code

    def get_file_results(self):
        """Return the count of errors and warnings for this file."""
        return self.file_errors

    def get_count(self, prefix=''):
        """Return the total count of errors and warnings."""
        return sum(self.counters[key]
                   for key in self.messages if key.startswith(prefix))

    def get_statistics(self, prefix=''):
        """Get statistics for message codes that start with the prefix.

        prefix='' matches all errors and warnings
        prefix='E' matches all errors
        prefix='W' matches all warnings
        prefix='E4' matches all errors that have to do with imports
        """
        return ['%-7s %s %s' % (self.counters[key], key, self.messages[key])
                for key in sorted(self.messages) if key.startswith(prefix)]

    def print_statistics(self, prefix=''):
        """Print overall statistics (number of errors and warnings)."""
        for line in self.get_statistics(prefix):
            print(line)

    def print_benchmark(self):
        """Print benchmark numbers."""
        print('{:<7.2f} {}'.format(self.elapsed, 'seconds elapsed'))
        if self.elapsed:
            for key in self._benchmark_keys:
                print('%-7d %s per second (%d total)' %
                      (self.counters[key] / self.elapsed, key,
                       self.counters[key]))


class FileReport(BaseReport):
    """Collect the results of the checks and print the filenames."""

    print_filename = True


class StandardReport(BaseReport):
    """Collect and print the results of the checks."""

    def __init__(self, options):
        super().__init__(options)
        self._fmt = REPORT_FORMAT.get(options.format.lower(),
                                      options.format)
        self._repeat = options.repeat
        self._show_source = options.show_source
        self._show_pep8 = options.show_pep8

    def init_file(self, filename, lines, expected, line_offset):
        """Signal a new file."""
        self._deferred_print = []
        return super().init_file(
            filename, lines, expected, line_offset)

    def error(self, line_number, offset, text, check):
        """Report an error, according to options."""
        code = super().error(line_number, offset, text, check)
        if code and (self.counters[code] == 1 or self._repeat):
            self._deferred_print.append(
                (line_number, offset, code, text[5:], check.__doc__))
        return code

    def get_file_results(self):
        """Print results and return the overall count for this file."""
        self._deferred_print.sort()
        for line_number, offset, code, text, doc in self._deferred_print:
            print(self._fmt % {
                'path': self.filename,
                'row': self.line_offset + line_number, 'col': offset + 1,
                'code': code, 'text': text,
            })
            if self._show_source:
                if line_number > len(self.lines):
                    line = ''
                else:
                    line = self.lines[line_number - 1]
                print(line.rstrip())
                print(re.sub(r'\S', ' ', line[:offset]) + '^')
            if self._show_pep8 and doc:
                print('    ' + doc.strip())

            # stdout is block buffered when not stdout.isatty().
            # line can be broken where buffer boundary since other
            # processes write to same file.
            # flush() after print() to avoid buffer boundary.
            # Typical buffer size is 8192. line written safely when
            # len(line) < 8192.
            sys.stdout.flush()
        return self.file_errors


class DiffReport(StandardReport):
    """Collect and print the results for the changed lines only."""

    def __init__(self, options):
        super().__init__(options)
        self._selected = options.selected_lines

    def error(self, line_number, offset, text, check):
        if line_number not in self._selected[self.filename]:
            return
        return super().error(line_number, offset, text, check)


class StyleGuide:
    """Initialize a PEP-8 instance with few options."""

    def __init__(self, *args, **kwargs):
        # build options from the command line
        self.checker_class = kwargs.pop('checker_class', Checker)
        parse_argv = kwargs.pop('parse_argv', False)
        config_file = kwargs.pop('config_file', False)
        parser = kwargs.pop('parser', None)
        # build options from dict
        options_dict = dict(*args, **kwargs)
        arglist = None if parse_argv else options_dict.get('paths', None)
        verbose = options_dict.get('verbose', None)
        options, self.paths = process_options(
            arglist, parse_argv, config_file, parser, verbose)
        if options_dict:
            options.__dict__.update(options_dict)
            if 'paths' in options_dict:
                self.paths = options_dict['paths']

        self.runner = self.input_file
        self.options = options

        if not options.reporter:
            options.reporter = BaseReport if options.quiet else StandardReport

        options.select = tuple(options.select or ())
        if not (options.select or options.ignore or
                options.testsuite or options.doctest) and DEFAULT_IGNORE:
            # The default choice: ignore controversial checks
            options.ignore = tuple(DEFAULT_IGNORE.split(','))
        else:
            # Ignore all checks which are not explicitly selected
            options.ignore = ('',) if options.select else tuple(options.ignore)
        options.benchmark_keys = BENCHMARK_KEYS[:]
        options.ignore_code = self.ignore_code
        options.physical_checks = self.get_checks('physical_line')
        options.logical_checks = self.get_checks('logical_line')
        options.ast_checks = self.get_checks('tree')
        self.init_report()

    def init_report(self, reporter=None):
        """Initialize the report instance."""
        self.options.report = (reporter or self.options.reporter)(self.options)
        return self.options.report

    def check_files(self, paths=None):
        """Run all checks on the paths."""
        if paths is None:
            paths = self.paths
        report = self.options.report
        runner = self.runner
        report.start()
        try:
            for path in paths:
                if os.path.isdir(path):
                    self.input_dir(path)
                elif not self.excluded(path):
                    runner(path)
        except KeyboardInterrupt:
            print('... stopped')
        report.stop()
        return report

    def input_file(self, filename, lines=None, expected=None, line_offset=0):
        """Run all checks on a Python source file."""
        if self.options.verbose:
            print('checking %s' % filename)
        fchecker = self.checker_class(
            filename, lines=lines, options=self.options)
        return fchecker.check_all(expected=expected, line_offset=line_offset)

    def input_dir(self, dirname):
        """Check all files in this directory and all subdirectories."""
        dirname = dirname.rstrip('/')
        if self.excluded(dirname):
            return 0
        counters = self.options.report.counters
        verbose = self.options.verbose
        filepatterns = self.options.filename
        runner = self.runner
        for root, dirs, files in os.walk(dirname):
            if verbose:
                print('directory ' + root)
            counters['directories'] += 1
            for subdir in sorted(dirs):
                if self.excluded(subdir, root):
                    dirs.remove(subdir)
            for filename in sorted(files):
                # contain a pattern that matches?
                if (
                    filename_match(filename, filepatterns) and
                    not self.excluded(filename, root)
                ):
                    runner(os.path.join(root, filename))

    def excluded(self, filename, parent=None):
        """Check if the file should be excluded.

        Check if 'options.exclude' contains a pattern matching filename.
        """
        if not self.options.exclude:
            return False
        basename = os.path.basename(filename)
        if filename_match(basename, self.options.exclude):
            return True
        if parent:
            filename = os.path.join(parent, filename)
        filename = os.path.abspath(filename)
        return filename_match(filename, self.options.exclude)

    def ignore_code(self, code):
        """Check if the error code should be ignored.

        If 'options.select' contains a prefix of the error code,
        return False.  Else, if 'options.ignore' contains a prefix of
        the error code, return True.
        """
        if len(code) < 4 and any(s.startswith(code)
                                 for s in self.options.select):
            return False
        return (code.startswith(self.options.ignore) and
                not code.startswith(self.options.select))

    def get_checks(self, argument_name):
        """Get all the checks for this category.

        Find all globally visible functions where the first argument
        name starts with argument_name and which contain selected tests.
        """
        checks = []
        for check, attrs in _checks[argument_name].items():
            (codes, args) = attrs
            if any(not (code and self.ignore_code(code)) for code in codes):
                checks.append((check.__name__, check, args))
        return sorted(checks)


def get_parser(prog='pycodestyle', version=__version__):
    """Create the parser for the program."""
    parser = OptionParser(prog=prog, version=version,
                          usage="%prog [options] input ...")
    parser.config_options = [
        'exclude', 'filename', 'select', 'ignore', 'max-line-length',
        'max-doc-length', 'indent-size', 'hang-closing', 'count', 'format',
        'quiet', 'show-pep8', 'show-source', 'statistics', 'verbose']
    parser.add_option('-v', '--verbose', default=0, action='count',
                      help="print status messages, or debug with -vv")
    parser.add_option('-q', '--quiet', default=0, action='count',
                      help="report only file names, or nothing with -qq")
    parser.add_option('-r', '--repeat', default=True, action='store_true',
                      help="(obsolete) show all occurrences of the same error")
    parser.add_option('--first', action='store_false', dest='repeat',
                      help="show first occurrence of each error")
    parser.add_option('--exclude', metavar='patterns', default=DEFAULT_EXCLUDE,
                      help="exclude files or directories which match these "
                           "comma separated patterns (default: %default)")
    parser.add_option('--filename', metavar='patterns', default='*.py',
                      help="when parsing directories, only check filenames "
                           "matching these comma separated patterns "
                           "(default: %default)")
    parser.add_option('--select', metavar='errors', default='',
                      help="select errors and warnings (e.g. E,W6)")
    parser.add_option('--ignore', metavar='errors', default='',
                      help="skip errors and warnings (e.g. E4,W) "
                           "(default: %s)" % DEFAULT_IGNORE)
    parser.add_option('--show-source', action='store_true',
                      help="show source code for each error")
    parser.add_option('--show-pep8', action='store_true',
                      help="show text of PEP 8 for each error "
                           "(implies --first)")
    parser.add_option('--statistics', action='store_true',
                      help="count errors and warnings")
    parser.add_option('--count', action='store_true',
                      help="print total number of errors and warnings "
                           "to standard error and set exit code to 1 if "
                           "total is not null")
    parser.add_option('--max-line-length', type='int', metavar='n',
                      default=MAX_LINE_LENGTH,
                      help="set maximum allowed line length "
                           "(default: %default)")
    parser.add_option('--max-doc-length', type='int', metavar='n',
                      default=None,
                      help="set maximum allowed doc line length and perform "
                           "these checks (unchecked if not set)")
    parser.add_option('--indent-size', type='int', metavar='n',
                      default=INDENT_SIZE,
                      help="set how many spaces make up an indent "
                           "(default: %default)")
    parser.add_option('--hang-closing', action='store_true',
                      help="hang closing bracket instead of matching "
                           "indentation of opening bracket's line")
    parser.add_option('--format', metavar='format', default='default',
                      help="set the error format [default|pylint|<custom>]")
    parser.add_option('--diff', action='store_true',
                      help="report changes only within line number ranges in "
                           "the unified diff received on STDIN")
    group = parser.add_option_group("Testing Options")
    if os.path.exists(TESTSUITE_PATH):
        group.add_option('--testsuite', metavar='dir',
                         help="run regression tests from dir")
        group.add_option('--doctest', action='store_true',
                         help="run doctest on myself")
    group.add_option('--benchmark', action='store_true',
                     help="measure processing speed")
    return parser


def read_config(options, args, arglist, parser):
    """Read and parse configurations.

    If a config file is specified on the command line with the
    "--config" option, then only it is used for configuration.

    Otherwise, the user configuration (~/.config/pycodestyle) and any
    local configurations in the current directory or above will be
    merged together (in that order) using the read method of
    ConfigParser.
    """
    config = configparser.RawConfigParser()

    cli_conf = options.config

    local_dir = os.curdir

    if USER_CONFIG and os.path.isfile(USER_CONFIG):
        if options.verbose:
            print('user configuration: %s' % USER_CONFIG)
        config.read(USER_CONFIG)

    parent = tail = args and os.path.abspath(os.path.commonprefix(args))
    while tail:
        if config.read(os.path.join(parent, fn) for fn in PROJECT_CONFIG):
            local_dir = parent
            if options.verbose:
                print('local configuration: in %s' % parent)
            break
        (parent, tail) = os.path.split(parent)

    if cli_conf and os.path.isfile(cli_conf):
        if options.verbose:
            print('cli configuration: %s' % cli_conf)
        config.read(cli_conf)

    pycodestyle_section = None
    if config.has_section(parser.prog):
        pycodestyle_section = parser.prog
    elif config.has_section('pep8'):
        pycodestyle_section = 'pep8'  # Deprecated
        warnings.warn('[pep8] section is deprecated. Use [pycodestyle].')

    if pycodestyle_section:
        option_list = {o.dest: o.type or o.action for o in parser.option_list}

        # First, read the default values
        (new_options, __) = parser.parse_args([])

        # Second, parse the configuration
        for opt in config.options(pycodestyle_section):
            if opt.replace('_', '-') not in parser.config_options:
                print("  unknown option '%s' ignored" % opt)
                continue
            if options.verbose > 1:
                print("  {} = {}".format(opt,
                                         config.get(pycodestyle_section, opt)))
            normalized_opt = opt.replace('-', '_')
            opt_type = option_list[normalized_opt]
            if opt_type in ('int', 'count'):
                value = config.getint(pycodestyle_section, opt)
            elif opt_type in ('store_true', 'store_false'):
                value = config.getboolean(pycodestyle_section, opt)
            else:
                value = config.get(pycodestyle_section, opt)
                if normalized_opt == 'exclude':
                    value = normalize_paths(value, local_dir)
            setattr(new_options, normalized_opt, value)

        # Third, overwrite with the command-line options
        (options, __) = parser.parse_args(arglist, values=new_options)
    options.doctest = options.testsuite = False
    return options


def process_options(arglist=None, parse_argv=False, config_file=None,
                    parser=None, verbose=None):
    """Process options passed either via arglist or command line args.

    Passing in the ``config_file`` parameter allows other tools, such as
    flake8 to specify their own options to be processed in pycodestyle.
    """
    if not parser:
        parser = get_parser()
    if not parser.has_option('--config'):
        group = parser.add_option_group("Configuration", description=(
            "The project options are read from the [%s] section of the "
            "tox.ini file or the setup.cfg file located in any parent folder "
            "of the path(s) being processed.  Allowed options are: %s." %
            (parser.prog, ', '.join(parser.config_options))))
        group.add_option('--config', metavar='path', default=config_file,
                         help="user config file location")
    # Don't read the command line if the module is used as a library.
    if not arglist and not parse_argv:
        arglist = []
    # If parse_argv is True and arglist is None, arguments are
    # parsed from the command line (sys.argv)
    (options, args) = parser.parse_args(arglist)
    options.reporter = None

    # If explicitly specified verbosity, override any `-v` CLI flag
    if verbose is not None:
        options.verbose = verbose

    if options.ensure_value('testsuite', False):
        args.append(options.testsuite)
    elif not options.ensure_value('doctest', False):
        if parse_argv and not args:
            if options.diff or any(os.path.exists(name)
                                   for name in PROJECT_CONFIG):
                args = ['.']
            else:
                parser.error('input not specified')
        options = read_config(options, args, arglist, parser)
        options.reporter = parse_argv and options.quiet == 1 and FileReport

    options.filename = _parse_multi_options(options.filename)
    options.exclude = normalize_paths(options.exclude)
    options.select = _parse_multi_options(options.select)
    options.ignore = _parse_multi_options(options.ignore)

    if options.diff:
        options.reporter = DiffReport
        stdin = stdin_get_value()
        options.selected_lines = parse_udiff(stdin, options.filename, args[0])
        args = sorted(options.selected_lines)

    return options, args


def _parse_multi_options(options, split_token=','):
    r"""Split and strip and discard empties.

    Turns the following:

    A,
    B,

    into ["A", "B"]
    """
    if options:
        return [o.strip() for o in options.split(split_token) if o.strip()]
    else:
        return options


def _main():
    """Parse options and run checks on Python source."""
    import signal

    # Handle "Broken pipe" gracefully
    try:
        signal.signal(signal.SIGPIPE, lambda signum, frame: sys.exit(1))
    except AttributeError:
        pass    # not supported on Windows

    style_guide = StyleGuide(parse_argv=True)
    options = style_guide.options

    if options.doctest or options.testsuite:
        from testsuite.support import run_tests
        report = run_tests(style_guide)
    else:
        report = style_guide.check_files()

    if options.statistics:
        report.print_statistics()

    if options.benchmark:
        report.print_benchmark()

    if options.testsuite and not options.quiet:
        report.print_results()

    if report.total_errors:
        if options.count:
            sys.stderr.write(str(report.total_errors) + '\n')
        sys.exit(1)


if __name__ == '__main__':
    _main()
# pycodestyle.py - Check Python source code formatting, according to
# PEP 8
#
# Copyright (C) 2006-2009 Johann C. Rocholl <johann@rocholl.net>
# Copyright (C) 2009-2014 Florent Xicluna <florent.xicluna@gmail.com>
# Copyright (C) 2014-2016 Ian Lee <ianlee1521@gmail.com>
#
# Permission is hereby granted, free of charge, to any person
# obtaining a copy of this software and associated documentation files
# (the "Software"), to deal in the Software without restriction,
# including without limitation the rights to use, copy, modify, merge,
# publish, distribute, sublicense, and/or sell copies of the Software,
# and to permit persons to whom the Software is furnished to do so,
# subject to the following conditions:
#
# The above copyright notice and this permission notice shall be
# included in all copies or substantial portions of the Software.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
# BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
# ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
# CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
# SOFTWARE.
r"""
Check Python source code formatting, according to PEP 8.

For usage and a list of options, try this:
$ python pycodestyle.py -h

This program and its regression test suite live here:
https://github.com/pycqa/pycodestyle

Groups of errors and warnings:
E errors
W warnings
100 indentation
200 whitespace
300 blank lines
400 imports
500 line length
600 deprecation
700 statements
900 syntax error
"""
import bisect
import configparser
import inspect
import io
import keyword
import os
import re
import sys
import time
import tokenize
import warnings
from fnmatch import fnmatch
from functools import lru_cache
from optparse import OptionParser

# this is a performance hack.  see https://bugs.python.org/issue43014
if (
        sys.version_info < (3, 10) and
        callable(getattr(tokenize, '_compile', None))
):  # pragma: no cover (<py310)
    tokenize._compile = lru_cache(tokenize._compile)  # type: ignore

__version__ = '2.11.0'  # patched PY-37054

DEFAULT_EXCLUDE = '.svn,CVS,.bzr,.hg,.git,__pycache__,.tox'
DEFAULT_IGNORE = 'E121,E123,E126,E226,E24,E704,W503,W504'
try:
    if sys.platform == 'win32':  # pragma: win32 cover
        USER_CONFIG = os.path.expanduser(r'~\.pycodestyle')
    else:  # pragma: win32 no cover
        USER_CONFIG = os.path.join(
            os.getenv('XDG_CONFIG_HOME') or os.path.expanduser('~/.config'),
            'pycodestyle'
        )
except ImportError:
    USER_CONFIG = None

PROJECT_CONFIG = ('setup.cfg', 'tox.ini')
MAX_LINE_LENGTH = 79
# Number of blank lines between various code parts.
BLANK_LINES_CONFIG = {
    # Top level class and function.
    'top_level': 2,
    # Methods and nested class and function.
    'method': 1,
}
MAX_DOC_LENGTH = 72
INDENT_SIZE = 4
REPORT_FORMAT = {
    'default': '%(path)s:%(row)d:%(col)d: %(code)s %(text)s',
    'pylint': '%(path)s:%(row)d: [%(code)s] %(text)s',
}

PyCF_ONLY_AST = 1024
SINGLETONS = frozenset(['False', 'None', 'True'])
KEYWORDS = frozenset(keyword.kwlist + ['print']) - SINGLETONS
UNARY_OPERATORS = frozenset(['>>', '**', '*', '+', '-'])
ARITHMETIC_OP = frozenset(['**', '*', '/', '//', '+', '-', '@'])
WS_OPTIONAL_OPERATORS = ARITHMETIC_OP.union(['^', '&', '|', '<<', '>>', '%'])
WS_NEEDED_OPERATORS = frozenset([
    '**=', '*=', '/=', '//=', '+=', '-=', '!=', '<', '>',
    '%=', '^=', '&=', '|=', '==', '<=', '>=', '<<=', '>>=', '=',
    'and', 'in', 'is', 'or', '->', ':='])
WHITESPACE = frozenset(' \t\xa0')
NEWLINE = frozenset([tokenize.NL, tokenize.NEWLINE])
SKIP_TOKENS = NEWLINE.union([tokenize.INDENT, tokenize.DEDENT])
# ERRORTOKEN is triggered by backticks in Python 3
SKIP_COMMENTS = SKIP_TOKENS.union([tokenize.COMMENT, tokenize.ERRORTOKEN])
BENCHMARK_KEYS = ['directories', 'files', 'logical lines', 'physical lines']

INDENT_REGEX = re.compile(r'([ \t]*)')
ERRORCODE_REGEX = re.compile(r'\b[A-Z]\d{3}\b')
DOCSTRING_REGEX = re.compile(r'u?r?["\']')
EXTRANEOUS_WHITESPACE_REGEX = re.compile(r'[\[({][ \t]|[ \t][\]}),;:](?!=)')
WHITESPACE_AFTER_COMMA_REGEX = re.compile(r'[,;:]\s*(?:  |\t)')
COMPARE_SINGLETON_REGEX = re.compile(r'(\bNone|\bFalse|\bTrue)?\s*([=!]=)'
                                     r'\s*(?(1)|(None|False|True))\b')
COMPARE_NEGATIVE_REGEX = re.compile(r'\b(?<!is\s)(not)\s+[^][)(}{ ]+\s+'
                                    r'(in|is)\s')
COMPARE_TYPE_REGEX = re.compile(
    r'[=!]=\s+type(?:\s*\(\s*([^)]*[^ )])\s*\))'
    r'|\btype(?:\s*\(\s*([^)]*[^ )])\s*\))\s+[=!]='
)
KEYWORD_REGEX = re.compile(r'(\s*)\b(?:%s)\b(\s*)' % r'|'.join(KEYWORDS))
OPERATOR_REGEX = re.compile(r'(?:[^,\s])(\s*)(?:[-+*/|!<=>%&^]+|:=)(\s*)')
LAMBDA_REGEX = re.compile(r'\blambda\b')
HUNK_REGEX = re.compile(r'^@@ -\d+(?:,\d+)? \+(\d+)(?:,(\d+))? @@.*$')
STARTSWITH_DEF_REGEX = re.compile(r'^(async\s+def|def)\b')
STARTSWITH_TOP_LEVEL_REGEX = re.compile(r'^(async\s+def\s+|def\s+|class\s+|@)')
STARTSWITH_INDENT_STATEMENT_REGEX = re.compile(
    r'^\s*({})\b'.format('|'.join(s.replace(' ', r'\s+') for s in (
        'def', 'async def',
        'for', 'async for',
        'if', 'elif', 'else',
        'try', 'except', 'finally',
        'with', 'async with',
        'class',
        'while',
    )))
)
DUNDER_REGEX = re.compile(r"^__([^\s]+)__(?::\s*[a-zA-Z.0-9_\[\]\"]+)? = ")
BLANK_EXCEPT_REGEX = re.compile(r"except\s*:")

if sys.version_info >= (3, 12):  # pragma: >=3.12 cover
    FSTRING_START = tokenize.FSTRING_START
    FSTRING_MIDDLE = tokenize.FSTRING_MIDDLE
    FSTRING_END = tokenize.FSTRING_END
else:  # pragma: <3.12 cover
    FSTRING_START = FSTRING_MIDDLE = FSTRING_END = -1

_checks = {'physical_line': {}, 'logical_line': {}, 'tree': {}}


def _get_parameters(function):
    return [parameter.name
            for parameter
            in inspect.signature(function).parameters.values()
            if parameter.kind == parameter.POSITIONAL_OR_KEYWORD]


def register_check(check, codes=None):
    """Register a new check object."""
    def _add_check(check, kind, codes, args):
        if check in _checks[kind]:
            _checks[kind][check][0].extend(codes or [])
        else:
            _checks[kind][check] = (codes or [''], args)
    if inspect.isfunction(check):
        args = _get_parameters(check)
        if args and args[0] in ('physical_line', 'logical_line'):
            if codes is None:
                codes = ERRORCODE_REGEX.findall(check.__doc__ or '')
            _add_check(check, args[0], codes, args)
    elif inspect.isclass(check):
        if _get_parameters(check.__init__)[:2] == ['self', 'tree']:
            _add_check(check, 'tree', codes, None)
    return check


########################################################################
# Plugins (check functions) for physical lines
########################################################################

@register_check
def tabs_or_spaces(physical_line, indent_char):
    r"""Never mix tabs and spaces.

    The most popular way of indenting Python is with spaces only.  The
    second-most popular way is with tabs only.  Code indented with a
    mixture of tabs and spaces should be converted to using spaces
    exclusively.  When invoking the Python command line interpreter with
    the -t option, it issues warnings about code that illegally mixes
    tabs and spaces.  When using -tt these warnings become errors.
    These options are highly recommended!

    Okay: if a == 0:\n    a = 1\n    b = 1
    """
    indent = INDENT_REGEX.match(physical_line).group(1)
    for offset, char in enumerate(indent):
        if char != indent_char:
            return offset, "E101 indentation contains mixed spaces and tabs"


@register_check
def tabs_obsolete(physical_line):
    r"""On new projects, spaces-only are strongly recommended over tabs.

    Okay: if True:\n    return
    W191: if True:\n\treturn
    """
    indent = INDENT_REGEX.match(physical_line).group(1)
    if '\t' in indent:
        return indent.index('\t'), "W191 indentation contains tabs"


@register_check
def trailing_whitespace(physical_line):
    r"""Trailing whitespace is superfluous.

    The warning returned varies on whether the line itself is blank,
    for easier filtering for those who want to indent their blank lines.

    Okay: spam(1)\n#
    W291: spam(1) \n#
    W293: class Foo(object):\n    \n    bang = 12
    """
    physical_line = physical_line.rstrip('\n')    # chr(10), newline
    physical_line = physical_line.rstrip('\r')    # chr(13), carriage return
    physical_line = physical_line.rstrip('\x0c')  # chr(12), form feed, ^L
    stripped = physical_line.rstrip(' \t\v')
    if physical_line != stripped:
        if stripped:
            return len(stripped), "W291 trailing whitespace"
        else:
            return 0, "W293 blank line contains whitespace"


@register_check
def trailing_blank_lines(physical_line, lines, line_number, total_lines):
    r"""Trailing blank lines are superfluous.

    Okay: spam(1)
    W391: spam(1)\n

    However the last line should end with a new line (warning W292).
    """
    if line_number == total_lines:
        stripped_last_line = physical_line.rstrip('\r\n')
        if physical_line and not stripped_last_line:
            return 0, "W391 blank line at end of file"
        if stripped_last_line == physical_line:
            return len(lines[-1]), "W292 no newline at end of file"


@register_check
def maximum_line_length(physical_line, max_line_length, multiline,
                        line_number, noqa):
    r"""Limit all lines to a maximum of 79 characters.

    There are still many devices around that are limited to 80 character
    lines; plus, limiting windows to 80 characters makes it possible to
    have several windows side-by-side.  The default wrapping on such
    devices looks ugly.  Therefore, please limit all lines to a maximum
    of 79 characters. For flowing long blocks of text (docstrings or
    comments), limiting the length to 72 characters is recommended.

    Reports error E501.
    """
    line = physical_line.rstrip()
    length = len(line)
    if length > max_line_length and not noqa:
        # Special case: ignore long shebang lines.
        if line_number == 1 and line.startswith('#!'):
            return
        # Special case for long URLs in multi-line docstrings or
        # comments, but still report the error when the 72 first chars
        # are whitespaces.
        chunks = line.split()
        if ((len(chunks) == 1 and multiline) or
            (len(chunks) == 2 and chunks[0] == '#')) and \
                len(line) - len(chunks[-1]) < max_line_length - 7:
            return
        if length > max_line_length:
            return (max_line_length, "E501 line too long "
                    "(%d > %d characters)" % (length, max_line_length))


########################################################################
# Plugins (check functions) for logical lines
########################################################################


def _is_one_liner(logical_line, indent_level, lines, line_number):
    if not STARTSWITH_TOP_LEVEL_REGEX.match(logical_line):
        return False

    line_idx = line_number - 1

    if line_idx < 1:
        prev_indent = 0
    else:
        prev_indent = expand_indent(lines[line_idx - 1])

    if prev_indent > indent_level:
        return False

    while line_idx < len(lines):
        line = lines[line_idx].strip()
        if not line.startswith('@') and STARTSWITH_TOP_LEVEL_REGEX.match(line):
            break
        else:
            line_idx += 1
    else:
        return False  # invalid syntax: EOF while searching for def/class

    next_idx = line_idx + 1
    while next_idx < len(lines):
        if lines[next_idx].strip():
            break
        else:
            next_idx += 1
    else:
        return True  # line is last in the file

    return expand_indent(lines[next_idx]) <= indent_level


@register_check
def blank_lines(logical_line, blank_lines, indent_level, line_number,
                blank_before, previous_logical,
                previous_unindented_logical_line, previous_indent_level,
                lines):
    r"""Separate top-level function and class definitions with two blank
    lines.

    Method definitions inside a class are separated by a single blank
    line.

    Extra blank lines may be used (sparingly) to separate groups of
    related functions.  Blank lines may be omitted between a bunch of
    related one-liners (e.g. a set of dummy implementations).

    Use blank lines in functions, sparingly, to indicate logical
    sections.

    Okay: def a():\n    pass\n\n\ndef b():\n    pass
    Okay: def a():\n    pass\n\n\nasync def b():\n    pass
    Okay: def a():\n    pass\n\n\n# Foo\n# Bar\n\ndef b():\n    pass
    Okay: default = 1\nfoo = 1
    Okay: classify = 1\nfoo = 1

    E301: class Foo:\n    b = 0\n    def bar():\n        pass
    E302: def a():\n    pass\n\ndef b(n):\n    pass
    E302: def a():\n    pass\n\nasync def b(n):\n    pass
    E303: def a():\n    pass\n\n\n\ndef b(n):\n    pass
    E303: def a():\n\n\n\n    pass
    E304: @decorator\n\ndef a():\n    pass
    E305: def a():\n    pass\na()
    E306: def a():\n    def b():\n        pass\n    def c():\n        pass
    """  # noqa
    top_level_lines = BLANK_LINES_CONFIG['top_level']
    method_lines = BLANK_LINES_CONFIG['method']

    if not previous_logical and blank_before < top_level_lines:
        return  # Don't expect blank lines before the first line
    if previous_logical.startswith('@'):
        if blank_lines:
            yield 0, "E304 blank lines found after function decorator"
    elif (blank_lines > top_level_lines or
            (indent_level and blank_lines == method_lines + 1)
          ):
        yield 0, "E303 too many blank lines (%d)" % blank_lines
    elif STARTSWITH_TOP_LEVEL_REGEX.match(logical_line):
        # allow a group of one-liners
        if (
            _is_one_liner(logical_line, indent_level, lines, line_number) and
            blank_before == 0
        ):
            return
        if indent_level:
            if not (blank_before == method_lines or
                    previous_indent_level < indent_level or
                    DOCSTRING_REGEX.match(previous_logical)
                    ):
                ancestor_level = indent_level
                nested = False
                # Search backwards for a def ancestor or tree root
                # (top level).
                for line in lines[line_number - top_level_lines::-1]:
                    if line.strip() and expand_indent(line) < ancestor_level:
                        ancestor_level = expand_indent(line)
                        nested = STARTSWITH_DEF_REGEX.match(line.lstrip())
                        if nested or ancestor_level == 0:
                            break
                if nested:
                    yield 0, "E306 expected %s blank line before a " \
                        "nested definition, found 0" % (method_lines,)
                else:
                    yield 0, "E301 expected {} blank line, found 0".format(
                        method_lines)
        elif blank_before != top_level_lines:
            yield 0, "E302 expected %s blank lines, found %d" % (
                top_level_lines, blank_before)
    elif (logical_line and
            not indent_level and
            blank_before != top_level_lines and
            previous_unindented_logical_line.startswith(('def ', 'class '))
          ):
        yield 0, "E305 expected %s blank lines after " \
            "class or function definition, found %d" % (
                top_level_lines, blank_before)


@register_check
def extraneous_whitespace(logical_line):
    r"""Avoid extraneous whitespace.

    Avoid extraneous whitespace in these situations:
    - Immediately inside parentheses, brackets or braces.
    - Immediately before a comma, semicolon, or colon.

    Okay: spam(ham[1], {eggs: 2})
    E201: spam( ham[1], {eggs: 2})
    E201: spam(ham[ 1], {eggs: 2})
    E201: spam(ham[1], { eggs: 2})
    E202: spam(ham[1], {eggs: 2} )
    E202: spam(ham[1 ], {eggs: 2})
    E202: spam(ham[1], {eggs: 2 })

    E203: if x == 4: print x, y; x, y = y , x
    E203: if x == 4: print x, y ; x, y = y, x
    E203: if x == 4 : print x, y; x, y = y, x
    """
    line = logical_line
    for match in EXTRANEOUS_WHITESPACE_REGEX.finditer(line):
        text = match.group()
        char = text.strip()
        found = match.start()
        if text[-1].isspace():
            # assert char in '([{'
            yield found + 1, "E201 whitespace after '%s'" % char
        elif line[found - 1] != ',':
            code = ('E202' if char in '}])' else 'E203')  # if char in ',;:'
            yield found, f"{code} whitespace before '{char}'"


@register_check
def whitespace_around_keywords(logical_line):
    r"""Avoid extraneous whitespace around keywords.

    Okay: True and False
    E271: True and  False
    E272: True  and False
    E273: True and\tFalse
    E274: True\tand False
    """
    for match in KEYWORD_REGEX.finditer(logical_line):
        before, after = match.groups()

        if '\t' in before:
            yield match.start(1), "E274 tab before keyword"
        elif len(before) > 1:
            yield match.start(1), "E272 multiple spaces before keyword"

        if '\t' in after:
            yield match.start(2), "E273 tab after keyword"
        elif len(after) > 1:
            yield match.start(2), "E271 multiple spaces after keyword"


@register_check
def missing_whitespace_after_keyword(logical_line, tokens):
    r"""Keywords should be followed by whitespace.

    Okay: from foo import (bar, baz)
    E275: from foo import(bar, baz)
    E275: from importable.module import(bar, baz)
    E275: if(foo): bar
    """
    for tok0, tok1 in zip(tokens, tokens[1:]):
        # This must exclude the True/False/None singletons, which can
        # appear e.g. as "if x is None:", and async/await, which were
        # valid identifier names in old Python versions.
        if (tok0.end == tok1.start and
                keyword.iskeyword(tok0.string) and
                tok0.string not in SINGLETONS and
                not (tok0.string == 'except' and tok1.string == '*') and
                not (tok0.string == 'yield' and tok1.string == ')') and
                tok1.string not in ':\n'):
            yield tok0.end, "E275 missing whitespace after keyword"


@register_check
def indentation(logical_line, previous_logical, indent_char,
                indent_level, previous_indent_level,
                indent_size):
    r"""Use indent_size (PEP8 says 4) spaces per indentation level.

    For really old code that you don't want to mess up, you can continue
    to use 8-space tabs.

    Okay: a = 1
    Okay: if a == 0:\n    a = 1
    E111:   a = 1
    E114:   # a = 1

    Okay: for item in items:\n    pass
    E112: for item in items:\npass
    E115: for item in items:\n# Hi\n    pass

    Okay: a = 1\nb = 2
    E113: a = 1\n    b = 2
    E116: a = 1\n    # b = 2
    """
    c = 0 if logical_line else 3
    tmpl = "E11%d %s" if logical_line else "E11%d %s (comment)"
    if indent_level % indent_size:
        yield 0, tmpl % (
            1 + c,
            "indentation is not a multiple of " + str(indent_size),
        )
    indent_expect = previous_logical.endswith(':')
    if indent_expect and indent_level <= previous_indent_level:
        yield 0, tmpl % (2 + c, "expected an indented block")
    elif not indent_expect and indent_level > previous_indent_level:
        yield 0, tmpl % (3 + c, "unexpected indentation")

    if indent_expect:
        expected_indent_amount = 8 if indent_char == '\t' else 4
        expected_indent_level = previous_indent_level + expected_indent_amount
        if indent_level > expected_indent_level:
            yield 0, tmpl % (7, 'over-indented')


@register_check
def continued_indentation(logical_line, tokens, indent_level, hang_closing,
                          indent_char, indent_size, noqa, verbose):
    r"""Continuation lines indentation.

    Continuation lines should align wrapped elements either vertically
    using Python's implicit line joining inside parentheses, brackets
    and braces, or using a hanging indent.

    When using a hanging indent these considerations should be applied:
    - there should be no arguments on the first line, and
    - further indentation should be used to clearly distinguish itself
      as a continuation line.

    Okay: a = (\n)
    E123: a = (\n    )

    Okay: a = (\n    42)
    E121: a = (\n   42)
    E122: a = (\n42)
    E123: a = (\n    42\n    )
    E124: a = (24,\n     42\n)
    E125: if (\n    b):\n    pass
    E126: a = (\n        42)
    E127: a = (24,\n      42)
    E128: a = (24,\n    42)
    E129: if (a or\n    b):\n    pass
    E131: a = (\n    42\n 24)
    """
    first_row = tokens[0][2][0]
    nrows = 1 + tokens[-1][2][0] - first_row
    if noqa or nrows == 1:
        return

    # indent_next tells us whether the next block is indented; assuming
    # that it is indented by 4 spaces, then we should not allow 4-space
    # indents on the final continuation line; in turn, some other
    # indents are allowed to have an extra 4 spaces.
    indent_next = logical_line.endswith(':')

    row = depth = 0
    valid_hangs = (indent_size,) if indent_char != '\t' \
        else (indent_size, indent_size * 2)
    # remember how many brackets were opened on each line
    parens = [0] * nrows
    # relative indents of physical lines
    rel_indent = [0] * nrows
    # for each depth, collect a list of opening rows
    open_rows = [[0]]
    # for each depth, memorize the hanging indentation
    hangs = [None]
    # visual indents
    indent_chances = {}
    last_indent = tokens[0][2]
    visual_indent = None
    last_token_multiline = False
    # for each depth, memorize the visual indent column
    indent = [last_indent[1]]
    if verbose >= 3:
        print(">>> " + tokens[0][4].rstrip())

    for token_type, text, start, end, line in tokens:

        newline = row < start[0] - first_row
        if newline:
            row = start[0] - first_row
            newline = not last_token_multiline and token_type not in NEWLINE

        if newline:
            # this is the beginning of a continuation line.
            last_indent = start
            if verbose >= 3:
                print("... " + line.rstrip())

            # record the initial indent.
            rel_indent[row] = expand_indent(line) - indent_level

            # identify closing bracket
            close_bracket = (token_type == tokenize.OP and text in ']})')

            # is the indent relative to an opening bracket line?
            for open_row in reversed(open_rows[depth]):
                hang = rel_indent[row] - rel_indent[open_row]
                hanging_indent = hang in valid_hangs
                if hanging_indent:
                    break
            if hangs[depth]:
                hanging_indent = (hang == hangs[depth])
            # is there any chance of visual indent?
            visual_indent = (not close_bracket and hang > 0 and
                             indent_chances.get(start[1]))

            if close_bracket and indent[depth]:
                # closing bracket for visual indent
                if start[1] != indent[depth]:
                    yield (start, "E124 closing bracket does not match "
                           "visual indentation")
            elif close_bracket and not hang:
                # closing bracket matches indentation of opening
                # bracket's line
                if hang_closing:
                    yield start, "E133 closing bracket is missing indentation"
            elif indent[depth] and start[1] < indent[depth]:
                if visual_indent is not True:
                    # visual indent is broken
                    yield (start, "E128 continuation line "
                           "under-indented for visual indent")
            elif hanging_indent or (indent_next and
                                    rel_indent[row] == 2 * indent_size):
                # hanging indent is verified
                if close_bracket and not hang_closing:
                    yield (start, "E123 closing bracket does not match "
              + sed -i '1 i #!/usr/bin/env python3' /builddir/build/BUILDROOT/pycharm-community-2024.3.2-1.el9.x86_64/usr/share/java/pycharm-community/plugins/python-ce/helpers/pycodestyle-2.10.0.py
+ tail -n +2 /builddir/build/BUILDROOT/pycharm-community-2024.3.2-1.el9.x86_64/usr/share/java/pycharm-community/plugins/python-ce/helpers/pycodestyle.py
             "indentation of opening bracket's line")
                hangs[depth] = hang
            elif visual_indent is True:
                # visual indent is verified
                indent[depth] = start[1]
            elif visual_indent in (text, str):
                # ignore token lined up with matching one from a
                # previous line
                pass
            else:
                # indent is broken
                if hang <= 0:
                    error = "E122", "missing indentation or outdented"
                elif indent[depth]:
                    error = "E127", "over-indented for visual indent"
                elif not close_bracket and hangs[depth]:
                    error = "E131", "unaligned for hanging indent"
                else:
                    hangs[depth] = hang
                    if hang > indent_size:
                        error = "E126", "over-indented for hanging indent"
                    else:
                        error = "E121", "under-indented for hanging indent"
                yield start, "%s continuation line %s" % error

        # look for visual indenting
        if (parens[row] and
                token_type not in (tokenize.NL, tokenize.COMMENT) and
                not indent[depth]):
            indent[depth] = start[1]
            indent_chances[start[1]] = True
            if verbose >= 4:
                print(f"bracket depth {depth} indent to {start[1]}")
        # deal with implicit string concatenation
        elif token_type in (tokenize.STRING, tokenize.COMMENT, FSTRING_START):
            indent_chances[start[1]] = str
        # visual indent after assert/raise/with
        elif not row and not depth and text in ["assert", "raise", "with"]:
            indent_chances[end[1] + 1] = True
        # special case for the "if" statement because len("if (") == 4
        elif not indent_chances and not row and not depth and text == 'if':
            indent_chances[end[1] + 1] = True
        elif text == ':' and line[end[1]:].isspace():
            open_rows[depth].append(row)

        # keep track of bracket depth
        if token_type == tokenize.OP:
            if text in '([{':
                depth += 1
                indent.append(0)
                hangs.append(None)
                if len(open_rows) == depth:
                    open_rows.append([])
                open_rows[depth].append(row)
                parens[row] += 1
                if verbose >= 4:
                    print("bracket depth %s seen, col %s, visual min = %s" %
                          (depth, start[1], indent[depth]))
            elif text in ')]}' and depth > 0:
                # parent indents should not be more than this one
                prev_indent = indent.pop() or last_indent[1]
                hangs.pop()
                for d in range(depth):
                    if indent[d] > prev_indent:
                        indent[d] = 0
                for ind in list(indent_chances):
                    if ind >= prev_indent:
                        del indent_chances[ind]
                del open_rows[depth + 1:]
                depth -= 1
                if depth:
                    indent_chances[indent[depth]] = True
                for idx in range(row, -1, -1):
                    if parens[idx]:
                        parens[idx] -= 1
                        break
            assert len(indent) == depth + 1
            if start[1] not in indent_chances:
                # allow lining up tokens
                indent_chances[start[1]] = text

        last_token_multiline = (start[0] != end[0])
        if last_token_multiline:
            rel_indent[end[0] - first_row] = rel_indent[row]

    if indent_next and expand_indent(line) == indent_level + indent_size:
        pos = (start[0], indent[0] + indent_size)
        if visual_indent:
            code = "E129 visually indented line"
        else:
            code = "E125 continuation line"
        yield pos, "%s with same indent as next logical line" % code


@register_check
def whitespace_before_parameters(logical_line, tokens):
    r"""Avoid extraneous whitespace.

    Avoid extraneous whitespace in the following situations:
    - before the open parenthesis that starts the argument list of a
      function call.
    - before the open parenthesis that starts an indexing or slicing.

    Okay: spam(1)
    E211: spam (1)

    Okay: dict['key'] = list[index]
    E211: dict ['key'] = list[index]
    E211: dict['key'] = list [index]
    """
    prev_type, prev_text, __, prev_end, __ = tokens[0]
    for index in range(1, len(tokens)):
        token_type, text, start, end, __ = tokens[index]
        if (
            token_type == tokenize.OP and
            text in '([' and
            start != prev_end and
            (prev_type == tokenize.NAME or prev_text in '}])') and
            # Syntax "class A (B):" is allowed, but avoid it
            (index < 2 or tokens[index - 2][1] != 'class') and
            # Allow "return (a.foo for a in range(5))"
            not keyword.iskeyword(prev_text) and
            (
                sys.version_info < (3, 9) or
                # 3.12+: type is a soft keyword but no braces after
                prev_text == 'type' or
                not keyword.issoftkeyword(prev_text)
            )
        ):
            yield prev_end, "E211 whitespace before '%s'" % text
        prev_type = token_type
        prev_text = text
        prev_end = end


@register_check
def whitespace_around_operator(logical_line):
    r"""Avoid extraneous whitespace around an operator.

    Okay: a = 12 + 3
    E221: a = 4  + 5
    E222: a = 4 +  5
    E223: a = 4\t+ 5
    E224: a = 4 +\t5
    """
    for match in OPERATOR_REGEX.finditer(logical_line):
        before, after = match.groups()

        if '\t' in before:
            yield match.start(1), "E223 tab before operator"
        elif len(before) > 1:
            yield match.start(1), "E221 multiple spaces before operator"

        if '\t' in after:
            yield match.start(2), "E224 tab after operator"
        elif len(after) > 1:
            yield match.start(2), "E222 multiple spaces after operator"


@register_check
def missing_whitespace(logical_line, tokens):
    r"""Surround operators with the correct amount of whitespace.

    - Always surround these binary operators with a single space on
      either side: assignment (=), augmented assignment (+=, -= etc.),
      comparisons (==, <, >, !=, <=, >=, in, not in, is, is not),
      Booleans (and, or, not).

    - Each comma, semicolon or colon should be followed by whitespace.

    - If operators with different priorities are used, consider adding
      whitespace around the operators with the lowest priorities.

    Okay: i = i + 1
    Okay: submitted += 1
    Okay: x = x * 2 - 1
    Okay: hypot2 = x * x + y * y
    Okay: c = (a + b) * (a - b)
    Okay: foo(bar, key='word', *args, **kwargs)
    Okay: alpha[:-i]
    Okay: [a, b]
    Okay: (3,)
    Okay: a[3,] = 1
    Okay: a[1:4]
    Okay: a[:4]
    Okay: a[1:]
    Okay: a[1:4:2]

    E225: i=i+1
    E225: submitted +=1
    E225: x = x /2 - 1
    E225: z = x **y
    E225: z = 1and 1
    E226: c = (a+b) * (a-b)
    E226: hypot2 = x*x + y*y
    E227: c = a|b
    E228: msg = fmt%(errno, errmsg)
    E231: ['a','b']
    E231: foo(bar,baz)
    E231: [{'a':'b'}]
    """
    need_space = False
    prev_type = tokenize.OP
    prev_text = prev_end = None
    operator_types = (tokenize.OP, tokenize.NAME)
    brace_stack = []
    for token_type, text, start, end, line in tokens:
        if token_type == tokenize.OP and text in {'[', '(', '{'}:
            brace_stack.append(text)
        elif token_type == FSTRING_START:  # pragma: >=3.12 cover
            brace_stack.append('f')
        elif token_type == tokenize.NAME and text == 'lambda':
            brace_stack.append('l')
        elif brace_stack:
            if token_type == tokenize.OP and text in {']', ')', '}'}:
                brace_stack.pop()
            elif token_type == FSTRING_END:  # pragma: >=3.12 cover
                brace_stack.pop()
            elif (
                    brace_stack[-1] == 'l' and
                    token_type == tokenize.OP and
                    text == ':'
            ):
                brace_stack.pop()

        if token_type in SKIP_COMMENTS:
            continue

        if token_type == tokenize.OP and text in {',', ';', ':'}:
            next_char = line[end[1]:end[1] + 1]
            if next_char not in WHITESPACE and next_char not in '\r\n':
                # slice
                if text == ':' and brace_stack[-1:] == ['[']:
                    pass
                # 3.12+ fstring format specifier
                elif text == ':' and brace_stack[-2:] == ['f', '{']:  # pragma: >=3.12 cover  # noqa: E501
                    pass
                # tuple (and list for some reason?)
                elif text == ',' and next_char in ')]':
                    pass
                else:
                    yield start, f'E231 missing whitespace after {text!r}'

        if need_space:
            if start != prev_end:
                # Found a (probably) needed space
                if need_space is not True and not need_space[1]:
                    yield (need_space[0],
                           "E225 missing whitespace around operator")
                need_space = False
            elif (
                    # def f(a, /, b):
                    #           ^
                    # def f(a, b, /):
                    #              ^
                    # f = lambda a, /:
                    #                ^
                    prev_text == '/' and text in {',', ')', ':'} or
                    # def f(a, b, /):
                    #               ^
                    prev_text == ')' and text == ':'
            ):
                # Tolerate the "/" operator in function definition
                # For more info see PEP570
                pass
            else:
                if need_space is True or need_space[1]:
                    # A needed trailing space was not found
                    yield prev_end, "E225 missing whitespace around operator"
                elif prev_text != '**':
                    code, optype = 'E226', 'arithmetic'
                    if prev_text == '%':
                        code, optype = 'E228', 'modulo'
                    elif prev_text not in ARITHMETIC_OP:
                        code, optype = 'E227', 'bitwise or shift'
                    yield (need_space[0], "%s missing whitespace "
                           "around %s operator" % (code, optype))
                need_space = False
        elif token_type in operator_types and prev_end is not None:
            if (
                    text == '=' and (
                        # allow lambda default args: lambda x=None: None
                        brace_stack[-1:] == ['l'] or
                        # allow keyword args or defaults: foo(bar=None).
                        brace_stack[-1:] == ['('] or
                        # allow python 3.8 fstring repr specifier
                        brace_stack[-2:] == ['f', '{']
                    )
            ):
                pass
            elif text in WS_NEEDED_OPERATORS:
                need_space = True
            elif text in UNARY_OPERATORS:
                # Check if the operator is used as a binary operator
                # Allow unary operators: -123, -x, +1.
                # Allow argument unpacking: foo(*args, **kwargs).
                if prev_type == tokenize.OP and prev_text in '}])' or (
                    prev_type != tokenize.OP and
                    prev_text not in KEYWORDS and (
                        sys.version_info < (3, 9) or
                        not keyword.issoftkeyword(prev_text)
                    )
                ):
                    need_space = None
            elif text in WS_OPTIONAL_OPERATORS:
                need_space = None

            if need_space is None:
                # Surrounding space is optional, but ensure that
                # trailing space matches opening space
                need_space = (prev_end, start != prev_end)
            elif need_space and start == prev_end:
                # A needed opening space was not found
                yield prev_end, "E225 missing whitespace around operator"
                need_space = False
        prev_type = token_type
        prev_text = text
        prev_end = end


@register_check
def whitespace_around_comma(logical_line):
    r"""Avoid extraneous whitespace after a comma or a colon.

    Note: these checks are disabled by default

    Okay: a = (1, 2)
    E241: a = (1,  2)
    E242: a = (1,\t2)
    """
    line = logical_line
    for m in WHITESPACE_AFTER_COMMA_REGEX.finditer(line):
        found = m.start() + 1
        if '\t' in m.group():
            yield found, "E242 tab after '%s'" % m.group()[0]
        else:
            yield found, "E241 multiple spaces after '%s'" % m.group()[0]


@register_check
def whitespace_around_named_parameter_equals(logical_line, tokens):
    r"""Don't use spaces around the '=' sign in function arguments.

    Don't use spaces around the '=' sign when used to indicate a
    keyword argument or a default parameter value, except when
    using a type annotation.

    Okay: def complex(real, imag=0.0):
    Okay: return magic(r=real, i=imag)
    Okay: boolean(a == b)
    Okay: boolean(a != b)
    Okay: boolean(a <= b)
    Okay: boolean(a >= b)
    Okay: def foo(arg: int = 42):
    Okay: async def foo(arg: int = 42):

    E251: def complex(real, imag = 0.0):
    E251: return magic(r = real, i = imag)
    E252: def complex(real, image: float=0.0):
    """
    parens = 0
    no_space = False
    require_space = False
    prev_end = None
    annotated_func_arg = False
    in_def = bool(STARTSWITH_DEF_REGEX.match(logical_line))

    message = "E251 unexpected spaces around keyword / parameter equals"
    missing_message = "E252 missing whitespace around parameter equals"

    for token_type, text, start, end, line in tokens:
        if token_type == tokenize.NL:
            continue
        if no_space:
            no_space = False
            if start != prev_end:
                yield (prev_end, message)
        if require_space:
            require_space = False
            if start == prev_end:
                yield (prev_end, missing_message)
        if token_type == tokenize.OP:
            if text in '([':
                parens += 1
            elif text in ')]':
                parens -= 1
            elif in_def and text == ':' and parens == 1:
                annotated_func_arg = True
            elif parens == 1 and text == ',':
                annotated_func_arg = False
            elif parens and text == '=':
                if annotated_func_arg and parens == 1:
                    require_space = True
                    if start == prev_end:
                        yield (prev_end, missing_message)
                else:
                    no_space = True
                    if start != prev_end:
                        yield (prev_end, message)
            if not parens:
                annotated_func_arg = False

        prev_end = end


@register_check
def whitespace_before_comment(logical_line, tokens):
    """Separate inline comments by at least two spaces.

    An inline comment is a comment on the same line as a statement.
    Inline comments should be separated by at least two spaces from the
    statement. They should start with a # and a single space.

    Each line of a block comment starts with a # and one or multiple
    spaces as there can be indented text inside the comment.

    Okay: x = x + 1  # Increment x
    Okay: x = x + 1    # Increment x
    Okay: # Block comments:
    Okay: #  - Block comment list
    Okay: # \xa0- Block comment list
    E261: x = x + 1 # Increment x
    E262: x = x + 1  #Increment x
    E262: x = x + 1  #  Increment x
    E262: x = x + 1  # \xa0Increment x
    E265: #Block comment
    E266: ### Block comment
    """
    prev_end = (0, 0)
    for token_type, text, start, end, line in tokens:
        if token_type == tokenize.COMMENT:
            inline_comment = line[:start[1]].strip()
            if inline_comment:
                if prev_end[0] == start[0] and start[1] < prev_end[1] + 2:
                    yield (prev_end,
                           "E261 at least two spaces before inline comment")
            symbol, sp, comment = text.partition(' ')
            bad_prefix = symbol not in '#:' and (symbol.lstrip('#')[:1] or '#')
            if inline_comment:
                if bad_prefix or comment[:1] in WHITESPACE:
                    yield start, "E262 inline comment should start with '# '"
            elif bad_prefix and (bad_prefix != '!' or start[0] > 1):
                if bad_prefix != '#':
                    yield start, "E265 block comment should start with '# '"
                elif comment:
                    yield start, "E266 too many leading '#' for block comment"
        elif token_type != tokenize.NL:
            prev_end = end


@register_check
def imports_on_separate_lines(logical_line):
    r"""Place imports on separate lines.

    Okay: import os\nimport sys
    E401: import sys, os

    Okay: from subprocess import Popen, PIPE
    Okay: from myclas import MyClass
    Okay: from foo.bar.yourclass import YourClass
    Okay: import myclass
    Okay: import foo.bar.yourclass
    """
    line = logical_line
    if line.startswith('import '):
        found = line.find(',')
        if -1 < found and ';' not in line[:found]:
            yield found, "E401 multiple imports on one line"


@register_check
def module_imports_on_top_of_file(
        logical_line, indent_level, checker_state, noqa):
    r"""Place imports at the top of the file.

    Always put imports at the top of the file, just after any module
    comments and docstrings, and before module globals and constants.

    Okay: import os
    Okay: # this is a comment\nimport os
    Okay: '''this is a module docstring'''\nimport os
    Okay: r'''this is a module docstring'''\nimport os
    E402: a=1\nimport os
    E402: 'One string'\n"Two string"\nimport os
    E402: a=1\nfrom sys import x

    Okay: if x:\n    import os
    """  # noqa
    def is_string_literal(line):
        if line[0] in 'uUbB':
            line = line[1:]
        if line and line[0] in 'rR':
            line = line[1:]
        return line and (line[0] == '"' or line[0] == "'")

    allowed_keywords = (
        'try', 'except', 'else', 'finally', 'with', 'if', 'elif')

    if indent_level:  # Allow imports in conditional statement/function
        return
    if not logical_line:  # Allow empty lines or comments
        return
    if noqa:
        return
    line = logical_line
    if line.startswith('import ') or line.startswith('from '):
        if checker_state.get('seen_non_imports', False):
            yield 0, "E402 module level import not at top of file"
    elif re.match(DUNDER_REGEX, line):
        return
    elif any(line.startswith(kw) for kw in allowed_keywords):
        # Allow certain keywords intermixed with imports in order to
        # support conditional or filtered importing
        return
    elif is_string_literal(line):
        # The first literal is a docstring, allow it. Otherwise, report
        # error.
        if checker_state.get('seen_docstring', False):
            checker_state['seen_non_imports'] = True
        else:
            checker_state['seen_docstring'] = True
    else:
        checker_state['seen_non_imports'] = True


@register_check
def compound_statements(logical_line):
    r"""Compound statements (on the same line) are generally
    discouraged.

    While sometimes it's okay to put an if/for/while with a small body
    on the same line, never do this for multi-clause statements.
    Also avoid folding such long lines!

    Always use a def statement instead of an assignment statement that
    binds a lambda expression directly to a name.

    Okay: if foo == 'blah':\n    do_blah_thing()
    Okay: do_one()
    Okay: do_two()
    Okay: do_three()

    E701: if foo == 'blah': do_blah_thing()
    E701: for x in lst: total += x
    E701: while t < 10: t = delay()
    E701: if foo == 'blah': do_blah_thing()
    E701: else: do_non_blah_thing()
    E701: try: something()
    E701: finally: cleanup()
    E701: if foo == 'blah': one(); two(); three()
    E702: do_one(); do_two(); do_three()
    E703: do_four();  # useless semicolon
    E704: def f(x): return 2*x
    E731: f = lambda x: 2*x
    """
    line = logical_line
    last_char = len(line) - 1
    found = line.find(':')
    prev_found = 0
    counts = {char: 0 for char in '{}[]()'}
    while -1 < found < last_char:
        update_counts(line[prev_found:found], counts)
        if (
                counts['{'] <= counts['}'] and  # {'a': 1} (dict)
                counts['['] <= counts[']'] and  # [1:2] (slice)
                counts['('] <= counts[')'] and  # (annotation)
                line[found + 1] != '='  # assignment expression
        ):
            lambda_kw = LAMBDA_REGEX.search(line, 0, found)
            if lambda_kw:
                before = line[:lambda_kw.start()].rstrip()
                if before[-1:] == '=' and before[:-1].strip().isidentifier():
                    yield 0, ("E731 do not assign a lambda expression, use a "
                              "def")
                break
            if STARTSWITH_DEF_REGEX.match(line):
                yield 0, "E704 multiple statements on one line (def)"
            elif STARTSWITH_INDENT_STATEMENT_REGEX.match(line):
                yield found, "E701 multiple statements on one line (colon)"
        prev_found = found
        found = line.find(':', found + 1)
    found = line.find(';')
    while -1 < found:
        if found < last_char:
            yield found, "E702 multiple statements on one line (semicolon)"
        else:
            yield found, "E703 statement ends with a semicolon"
        found = line.find(';', found + 1)


@register_check
def explicit_line_join(logical_line, tokens):
    r"""Avoid explicit line join between brackets.

    The preferred way of wrapping long lines is by using Python's
    implied line continuation inside parentheses, brackets and braces.
    Long lines can be broken over multiple lines by wrapping expressions
    in parentheses.  These should be used in preference to using a
    backslash for line continuation.

    E502: aaa = [123, \\n       123]
    E502: aaa = ("bbb " \\n       "ccc")

    Okay: aaa = [123,\n       123]
    Okay: aaa = ("bbb "\n       "ccc")
    Okay: aaa = "bbb " \\n    "ccc"
    Okay: aaa = 123  # \\
    """
    prev_start = prev_end = parens = 0
    comment = False
    backslash = None
    for token_type, text, start, end, line in tokens:
        if token_type == tokenize.COMMENT:
            comment = True
        if start[0] != prev_start and parens and backslash and not comment:
            yield backslash, "E502 the backslash is redundant between brackets"
        if end[0] != prev_end:
            if line.rstrip('\r\n').endswith('\\'):
                backslash = (end[0], len(line.splitlines()[-1]) - 1)
            else:
                backslash = None
            prev_start = prev_end = end[0]
        else:
            prev_start = start[0]
        if token_type == tokenize.OP:
            if text in '([{':
                parens += 1
            elif text in ')]}':
                parens -= 1


# The % character is strictly speaking a binary operator, but the
# common usage seems to be to put it next to the format parameters,
# after a line break.
_SYMBOLIC_OPS = frozenset("()[]{},:.;@=%~") | frozenset(("...",))


def _is_binary_operator(token_type, text):
    return (
        token_type == tokenize.OP or
        text in {'and', 'or'}
    ) and (
        text not in _SYMBOLIC_OPS
    )


def _break_around_binary_operators(tokens):
    """Private function to reduce duplication.

    This factors out the shared details between
    :func:`break_before_binary_operator` and
    :func:`break_after_binary_operator`.
    """
    line_break = False
    unary_context = True
    # Previous non-newline token types and text
    previous_token_type = None
    previous_text = None
    for token_type, text, start, end, line in tokens:
        if token_type == tokenize.COMMENT:
            continue
        if ('\n' in text or '\r' in text) and token_type != tokenize.STRING:
            line_break = True
        else:
            yield (token_type, text, previous_token_type, previous_text,
                   line_break, unary_context, start)
            unary_context = text in '([{,;'
            line_break = False
            previous_token_type = token_type
            previous_text = text


@register_check
def break_before_binary_operator(logical_line, tokens):
    r"""
    Avoid breaks before binary operators.

    The preferred place to break around a binary operator is after the
    operator, not before it.

    W503: (width == 0\n + height == 0)
    W503: (width == 0\n and height == 0)
    W503: var = (1\n       & ~2)
    W503: var = (1\n       / -2)
    W503: var = (1\n       + -1\n       + -2)

    Okay: foo(\n    -x)
    Okay: foo(x\n    [])
    Okay: x = '''\n''' + ''
    Okay: foo(x,\n    -y)
    Okay: foo(x,  # comment\n    -y)
    """
    for context in _break_around_binary_operators(tokens):
        (token_type, text, previous_token_type, previous_text,
         line_break, unary_context, start) = context
        if (_is_binary_operator(token_type, text) and line_break and
                not unary_context and
                not _is_binary_operator(previous_token_type,
                                        previous_text)):
            yield start, "W503 line break before binary operator"


@register_check
def break_after_binary_operator(logical_line, tokens):
    r"""
    Avoid breaks after binary operators.

    The preferred place to break around a binary operator is before the
    operator, not after it.

    W504: (width == 0 +\n height == 0)
    W504: (width == 0 and\n height == 0)
    W504: var = (1 &\n       ~2)

    Okay: foo(\n    -x)
    Okay: foo(x\n    [])
    Okay: x = '''\n''' + ''
    Okay: x = '' + '''\n'''
    Okay: foo(x,\n    -y)
    Okay: foo(x,  # comment\n    -y)

    The following should be W504 but unary_context is tricky with these
    Okay: var = (1 /\n       -2)
    Okay: var = (1 +\n       -1 +\n       -2)
    """
    prev_start = None
    for context in _break_around_binary_operators(tokens):
        (token_type, text, previous_token_type, previous_text,
         line_break, unary_context, start) = context
        if (_is_binary_operator(previous_token_type, previous_text) and
                line_break and
                not unary_context and
                not _is_binary_operator(token_type, text)):
            yield prev_start, "W504 line break after binary operator"
        prev_start = start


@register_check
def comparison_to_singleton(logical_line, noqa):
    r"""Comparison to singletons should use "is" or "is not".

    Comparisons to singletons like None should always be done
    with "is" or "is not", never the equality operators.

    Okay: if arg is not None:
    E711: if arg != None:
    E711: if None == arg:
    E712: if arg == True:
    E712: if False == arg:

    Also, beware of writing if x when you really mean if x is not None
    -- e.g. when testing whether a variable or argument that defaults to
    None was set to some other value.  The other value might have a type
    (such as a container) that could be false in a boolean context!
    """
    if noqa:
        return

    for match in COMPARE_SINGLETON_REGEX.finditer(logical_line):
        singleton = match.group(1) or match.group(3)
        same = (match.group(2) == '==')

        msg = "'if cond is %s:'" % (('' if same else 'not ') + singleton)
        if singleton in ('None',):
            code = 'E711'
        else:
            code = 'E712'
            nonzero = ((singleton == 'True' and same) or
                       (singleton == 'False' and not same))
            msg += " or 'if %scond:'" % ('' if nonzero else 'not ')
        yield match.start(2), ("%s comparison to %s should be %s" %
                               (code, singleton, msg))


@register_check
def comparison_negative(logical_line):
    r"""Negative comparison should be done using "not in" and "is not".

    Okay: if x not in y:\n    pass
    Okay: assert (X in Y or X is Z)
    Okay: if not (X in Y):\n    pass
    Okay: zz = x is not y
    E713: Z = not X in Y
    E713: if not X.B in Y:\n    pass
    E714: if not X is Y:\n    pass
    E714: Z = not X.B is Y
    """
    match = COMPARE_NEGATIVE_REGEX.search(logical_line)
    if match:
        pos = match.start(1)
        if match.group(2) == 'in':
            yield pos, "E713 test for membership should be 'not in'"
        else:
            yield pos, "E714 test for object identity should be 'is not'"


@register_check
def comparison_type(logical_line, noqa):
    r"""Object type comparisons should `is` / `is not` / `isinstance()`.

    Do not compare types directly.

    Okay: if isinstance(obj, int):
    Okay: if type(obj) is int:
    E721: if type(obj) == type(1):
    """
    match = COMPARE_TYPE_REGEX.search(logical_line)
    if match and not noqa:
        inst = match.group(1)
        if inst and inst.isidentifier() and inst not in SINGLETONS:
            return  # Allow comparison for types which are not obvious
        yield (
            match.start(),
            "E721 do not compare types, for exact checks use `is` / `is not`, "
            "for instance checks use `isinstance()`",
        )


@register_check
def bare_except(logical_line, noqa):
    r"""When catching exceptions, mention specific exceptions when
    possible.

    Okay: except Exception:
    Okay: except BaseException:
    E722: except:
    """
    if noqa:
        return

    match = BLANK_EXCEPT_REGEX.match(logical_line)
    if match:
        yield match.start(), "E722 do not use bare 'except'"


@register_check
def ambiguous_identifier(logical_line, tokens):
    r"""Never use the characters 'l', 'O', or 'I' as variable names.

    In some fonts, these characters are indistinguishable from the
    numerals one and zero. When tempted to use 'l', use 'L' instead.

    Okay: L = 0
    Okay: o = 123
    Okay: i = 42
    E741: l = 0
    E741: O = 123
    E741: I = 42

    Variables can be bound in several other contexts, including class
    and function definitions, lambda functions, 'global' and 'nonlocal'
    statements, exception handlers, and 'with' and 'for' statements.
    In addition, we have a special handling for function parameters.

    Okay: except AttributeError as o:
    Okay: with lock as L:
    Okay: foo(l=12)
    Okay: foo(l=I)
    Okay: for a in foo(l=12):
    Okay: lambda arg: arg * l
    Okay: lambda a=l[I:5]: None
    Okay: lambda x=a.I: None
    Okay: if l >= 12:
    E741: except AttributeError as O:
    E741: with lock as l:
    E741: global I
    E741: nonlocal l
    E741: def foo(l):
    E741: def foo(l=12):
    E741: l = foo(l=12)
    E741: for l in range(10):
    E741: [l for l in lines if l]
    E741: lambda l: None
    E741: lambda a=x[1:5], l: None
    E741: lambda **l:
    E741: def f(**l):
    E742: class I(object):
    E743: def l(x):
    """
    func_depth = None  # set to brace depth if 'def' or 'lambda' is found
    seen_colon = False  # set to true if we're done with function parameters
    brace_depth = 0
    idents_to_avoid = ('l', 'O', 'I')
    prev_type, prev_text, prev_start, prev_end, __ = tokens[0]
    for index in range(1, len(tokens)):
        token_type, text, start, end, line = tokens[index]
        ident = pos = None
        # find function definitions
        if prev_text in {'def', 'lambda'}:
            func_depth = brace_depth
            seen_colon = False
        elif (
                func_depth is not None and
                text == ':' and
                brace_depth == func_depth
        ):
            seen_colon = True
        # update parameter parentheses level
        if text in '([{':
            brace_depth += 1
        elif text in ')]}':
            brace_depth -= 1
        # identifiers on the lhs of an assignment operator
        if text == ':=' or (text == '=' and brace_depth == 0):
            if prev_text in idents_to_avoid:
                ident = prev_text
                pos = prev_start
        # identifiers bound to values with 'as', 'for',
        # 'global', or 'nonlocal'
        if prev_text in ('as', 'for', 'global', 'nonlocal'):
            if text in idents_to_avoid:
                ident = text
                pos = start
        # function / lambda parameter definitions
        if (
                func_depth is not None and
                not seen_colon and
                index < len(tokens) - 1 and tokens[index + 1][1] in ':,=)' and
                prev_text in {'lambda', ',', '*', '**', '('} and
                text in idents_to_avoid
        ):
            ident = text
            pos = start
        if prev_text == 'class':
            if text in idents_to_avoid:
                yield start, "E742 ambiguous class definition '%s'" % text
        if prev_text == 'def':
            if text in idents_to_avoid:
                yield start, "E743 ambiguous function definition '%s'" % text
        if ident:
            yield pos, "E741 ambiguous variable name '%s'" % ident
        prev_text = text
        prev_start = start


@register_check
def python_3000_invalid_escape_sequence(logical_line, tokens, noqa):
    r"""Invalid escape sequences are deprecated in Python 3.6.

    Okay: regex = r'\.png$'
    W605: regex = '\.png$'
    """
    if noqa:
        return

    # https://docs.python.org/3/reference/lexical_analysis.html#string-and-bytes-literals
    valid = [
        '\n',
        '\\',
        '\'',
        '"',
        'a',
        'b',
        'f',
        'n',
        'r',
        't',
        'v',
        '0', '1', '2', '3', '4', '5', '6', '7',
        'x',

        # Escape sequences only recognized in string literals
        'N',
        'u',
        'U',
    ]

    prefixes = []
    for token_type, text, start, _, _ in tokens:
        if token_type in {tokenize.STRING, FSTRING_START}:
            # Extract string modifiers (e.g. u or r)
            prefixes.append(text[:text.index(text[-1])].lower())

        if token_type in {tokenize.STRING, FSTRING_MIDDLE}:
            if 'r' not in prefixes[-1]:
                start_line, start_col = start
                pos = text.find('\\')
                while pos >= 0:
                    pos += 1
                    if text[pos] not in valid:
                        line = start_line + text.count('\n', 0, pos)
                        if line == start_line:
                            col = start_col + pos
                        else:
                            col = pos - text.rfind('\n', 0, pos) - 1
                        yield (
                            (line, col - 1),
                            f"W605 invalid escape sequence '\\{text[pos]}'"
                        )
                    pos = text.find('\\', pos + 1)

        if token_type in {tokenize.STRING, FSTRING_END}:
            prefixes.pop()


########################################################################
@register_check
def maximum_doc_length(logical_line, max_doc_length, noqa, tokens):
    r"""Limit all doc lines to a maximum of 72 characters.

    For flowing long blocks of text (docstrings or comments), limiting
    the length to 72 characters is recommended.

    Reports warning W505
    """
    if max_doc_length is None or noqa:
        return

    prev_token = None
    skip_lines = set()
    # Skip lines that
    for token_type, text, start, end, line in tokens:
        if token_type not in SKIP_COMMENTS.union([tokenize.STRING]):
            skip_lines.add(line)

    for token_type, text, start, end, line in tokens:
        # Skip lines that aren't pure strings
        if token_type == tokenize.STRING and skip_lines:
            continue
        if token_type in (tokenize.STRING, tokenize.COMMENT):
            # Only check comment-only lines
            if prev_token is None or prev_token in SKIP_TOKENS:
                lines = line.splitlines()
                for line_num, physical_line in enumerate(lines):
                    if start[0] + line_num == 1 and line.startswith('#!'):
                        return
                    length = len(physical_line)
                    chunks = physical_line.split()
                    if token_type == tokenize.COMMENT:
                        if (len(chunks) == 2 and
                                length - len(chunks[-1]) < MAX_DOC_LENGTH):
                            continue
                    if len(chunks) == 1 and line_num + 1 < len(lines):
                        if (len(chunks) == 1 and
                                length - len(chunks[-1]) < MAX_DOC_LENGTH):
                            continue
                    if length > max_doc_length:
                        doc_error = (start[0] + line_num, max_doc_length)
                        yield (doc_error, "W505 doc line too long "
                                          "(%d > %d characters)"
                               % (length, max_doc_length))
        prev_token = token_type


########################################################################
# Helper functions
########################################################################


def readlines(filename):
    """Read the source code."""
    try:
        with tokenize.open(filename) as f:
            return f.readlines()
    except (LookupError, SyntaxError, UnicodeError):
        # Fall back if file encoding is improperly declared
        with open(filename, encoding='latin-1') as f:
            return f.readlines()


def stdin_get_value():
    """Read the value from stdin."""
    return io.TextIOWrapper(sys.stdin.buffer, encoding='utf-8', errors='ignore').read()


noqa = lru_cache(512)(re.compile(r'# no(?:qa|pep8)\b', re.I).search)


def expand_indent(line):
    r"""Return the amount of indentation.

    Tabs are expanded to the next multiple of 8.
    """
    line = line.rstrip('\n\r')
    if '\t' not in line:
        return len(line) - len(line.lstrip())
    result = 0
    for char in line:
        if char == '\t':
            result = result // 8 * 8 + 8
        elif char == ' ':
            result += 1
        else:
            break
    return result


def mute_string(text):
    """Replace contents with 'xxx' to prevent syntax matching."""
    # String modifiers (e.g. u or r)
    start = text.index(text[-1]) + 1
    end = len(text) - 1
    # Triple quotes
    if text[-3:] in ('"""', "'''"):
        start += 2
        end -= 2
    return text[:start] + 'x' * (end - start) + text[end:]


def parse_udiff(diff, patterns=None, parent='.'):
    """Return a dictionary of matching lines."""
    # For each file of the diff, the entry key is the filename,
    # and the value is a set of row numbers to consider.
    rv = {}
    path = nrows = None
    for line in diff.splitlines():
        if nrows:
            if line[:1] != '-':
                nrows -= 1
            continue
        if line[:3] == '@@ ':
            hunk_match = HUNK_REGEX.match(line)
            (row, nrows) = (int(g or '1') for g in hunk_match.groups())
            rv[path].update(range(row, row + nrows))
        elif line[:3] == '+++':
            path = line[4:].split('\t', 1)[0]
            # Git diff will use (i)ndex, (w)ork tree, (c)ommit and
            # (o)bject instead of a/b/c/d as prefixes for patches
            if path[:2] in ('b/', 'w/', 'i/'):
                path = path[2:]
            rv[path] = set()
    return {
        os.path.join(parent, filepath): rows
        for (filepath, rows) in rv.items()
        if rows and filename_match(filepath, patterns)
    }


def normalize_paths(value, parent=os.curdir):
    """Parse a comma-separated list of paths.

    Return a list of absolute paths.
    """
    if not value:
        return []
    if isinstance(value, list):
        return value
    paths = []
    for path in value.split(','):
        path = path.strip()
        if '/' in path:
            path = os.path.abspath(os.path.join(parent, path))
        paths.append(path.rstrip('/'))
    return paths


def filename_match(filename, patterns, default=True):
    """Check if patterns contains a pattern that matches filename.

    If patterns is unspecified, this always returns True.
    """
    if not patterns:
        return default
    return any(fnmatch(filename, pattern) for pattern in patterns)


def update_counts(s, counts):
    r"""Adds one to the counts of each appearance of characters in s,
        for characters in counts"""
    for char in s:
        if char in counts:
            counts[char] += 1


def _is_eol_token(token):
    return token[0] in NEWLINE or token[4][token[3][1]:].lstrip() == '\\\n'


########################################################################
# Framework to run all checks
########################################################################


class Checker:
    """Load a Python source file, tokenize it, check coding style."""

    def __init__(self, filename=None, lines=None,
                 options=None, report=None, **kwargs):
        if options is None:
            options = StyleGuide(kwargs).options
        else:
            assert not kwargs
        self._io_error = None
        self._physical_checks = options.physical_checks
        self._logical_checks = options.logical_checks
        self._ast_checks = options.ast_checks
        self.max_line_length = options.max_line_length
        self.max_doc_length = options.max_doc_length
        self.indent_size = options.indent_size
        self.fstring_start = 0
        self.multiline = False  # in a multiline string?
        self.hang_closing = options.hang_closing
        self.indent_size = options.indent_size
        self.verbose = options.verbose
        self.filename = filename
        # Dictionary where a checker can store its custom state.
        self._checker_states = {}
        if filename is None:
            self.filename = 'stdin'
            self.lines = lines or []
        elif filename == '-':
            self.filename = 'stdin'
            self.lines = stdin_get_value().splitlines(True)
        elif lines is None:
            try:
                self.lines = readlines(filename)
            except OSError:
                (exc_type, exc) = sys.exc_info()[:2]
                self._io_error = f'{exc_type.__name__}: {exc}'
                self.lines = []
        else:
            self.lines = lines
        if self.lines:
            ord0 = ord(self.lines[0][0])
            if ord0 in (0xef, 0xfeff):  # Strip the UTF-8 BOM
                if ord0 == 0xfeff:
                    self.lines[0] = self.lines[0][1:]
                elif self.lines[0][:3] == '\xef\xbb\xbf':
                    self.lines[0] = self.lines[0][3:]
        self.report = report or options.report
        self.report_error = self.report.error
        self.noqa = False

    def report_invalid_syntax(self):
        """Check if the syntax is valid."""
        (exc_type, exc) = sys.exc_info()[:2]
        if len(exc.args) > 1:
            offset = exc.args[1]
            if len(offset) > 2:
                offset = offset[1:3]
        else:
            offset = (1, 0)
        self.report_error(offset[0], offset[1] or 0,
                          f'E901 {exc_type.__name__}: {exc.args[0]}',
                          self.report_invalid_syntax)

    def readline(self):
        """Get the next line from the input buffer."""
        if self.line_number >= self.total_lines:
            return ''
        line = self.lines[self.line_number]
        self.line_number += 1
        if self.indent_char is None and line[:1] in WHITESPACE:
            self.indent_char = line[0]
        return line

    def run_check(self, check, argument_names):
        """Run a check plugin."""
        arguments = []
        for name in argument_names:
            arguments.append(getattr(self, name))
        return check(*arguments)

    def init_checker_state(self, name, argument_names):
        """Prepare custom state for the specific checker plugin."""
        if 'checker_state' in argument_names:
            self.checker_state = self._checker_states.setdefault(name, {})

    def check_physical(self, line):
        """Run all physical checks on a raw input line."""
        self.physical_line = line
        for name, check, argument_names in self._physical_checks:
            self.init_checker_state(name, argument_names)
            result = self.run_check(check, argument_names)
            if result is not None:
                (offset, text) = result
                self.report_error(self.line_number, offset, text, check)
                if text[:4] == 'E101':
                    self.indent_char = line[0]

    def build_tokens_line(self):
        """Build a logical line from tokens."""
        logical = []
        comments = []
        length = 0
        prev_row = prev_col = mapping = None
        for token_type, text, start, end, line in self.tokens:
            if token_type in SKIP_TOKENS:
                continue
            if not mapping:
                mapping = [(0, start)]
            if token_type == tokenize.COMMENT:
                comments.append(text)
                continue
            if token_type == tokenize.STRING:
                text = mute_string(text)
            elif token_type == FSTRING_MIDDLE:  # pragma: >=3.12 cover
                text = 'x' * len(text)
            if prev_row:
                (start_row, start_col) = start
                if prev_row != start_row:    # different row
                    prev_text = self.lines[prev_row - 1][prev_col - 1]
                    if prev_text == ',' or (prev_text not in '{[(' and
                                            text not in '}])'):
                        text = ' ' + text
                elif prev_col != start_col:  # different column
                    text = line[prev_col:start_col] + text
            logical.append(text)
            length += len(text)
            mapping.append((length, end))
            (prev_row, prev_col) = end
        self.logical_line = ''.join(logical)
        self.noqa = comments and noqa(''.join(comments))
        return mapping

    def check_logical(self):
        """Build a line from tokens and run all logical checks on it."""
        self.report.increment_logical_line()
        mapping = self.build_tokens_line()
        if not mapping:
            return

        mapping_offsets = [offset for offset, _ in mapping]
        (start_row, start_col) = mapping[0][1]
        start_line = self.lines[start_row - 1]
        self.indent_level = expand_indent(start_line[:start_col])
        if self.blank_before < self.blank_lines:
            self.blank_before = self.blank_lines
        if self.verbose >= 2:
            print(self.logical_line[:80].rstrip())
        for name, check, argument_names in self._logical_checks:
            if self.verbose >= 4:
                print('   ' + name)
            self.init_checker_state(name, argument_names)
            for offset, text in self.run_check(check, argument_names) or ():
                if not isinstance(offset, tuple):
                    # As mappings are ordered, bisecting is a fast way
                    # to find a given offset in them.
                    token_offset, pos = mapping[bisect.bisect_left(
                        mapping_offsets, offset)]
                    offset = (pos[0], pos[1] + offset - token_offset)
                self.report_error(offset[0], offset[1], text, check)
        if self.logical_line:
            self.previous_indent_level = self.indent_level
            self.previous_logical = self.logical_line
            if not self.indent_level:
                self.previous_unindented_logical_line = self.logical_line
        self.blank_lines = 0
        self.tokens = []

    def check_ast(self):
        """Build the file's AST and run all AST checks."""
        try:
            tree = compile(''.join(self.lines), '', 'exec', PyCF_ONLY_AST)
        except (ValueError, SyntaxError, TypeError):
            return self.report_invalid_syntax()
        for name, cls, __ in self._ast_checks:
            checker = cls(tree, self.filename)
            for lineno, offset, text, check in checker.run():
                if not self.lines or not noqa(self.lines[lineno - 1]):
                    self.report_error(lineno, offset, text, check)

    def generate_tokens(self):
        """Tokenize file, run physical line checks and yield tokens."""
        if self._io_error:
            self.report_error(1, 0, 'E902 %s' % self._io_error, readlines)
        tokengen = tokenize.generate_tokens(self.readline)
        try:
            prev_physical = ''
            for token in tokengen:
                if token[2][0] > self.total_lines:
                    return
                self.noqa = token[4] and noqa(token[4])
                self.maybe_check_physical(token, prev_physical)
                yield token
                prev_physical = token[4]
        except (SyntaxError, tokenize.TokenError):
            self.report_invalid_syntax()

    def maybe_check_physical(self, token, prev_physical):
        """If appropriate for token, check current physical line(s)."""
        # Called after every token, but act only on end of line.

        if token.type == FSTRING_START:  # pragma: >=3.12 cover
            self.fstring_start = token.start[0]
        # a newline token ends a single physical line.
        elif _is_eol_token(token):
            # if the file does not end with a newline, the NEWLINE
            # token is inserted by the parser, but it does not contain
            # the previous physical line in `token[4]`
            if token.line == '':
                self.check_physical(prev_physical)
            else:
                self.check_physical(token.line)
        elif (
                token.type == tokenize.STRING and '\n' in token.string or
                token.type == FSTRING_END
        ):
            # Less obviously, a string that contains newlines is a
            # multiline string, either triple-quoted or with internal
            # newlines backslash-escaped. Check every physical line in
            # the string *except* for the last one: its newline is
            # outside of the multiline string, so we consider it a
            # regular physical line, and will check it like any other
            # physical line.
            #
            # Subtleties:
            # - we don't *completely* ignore the last line; if it
            #   contains the magical "# noqa" comment, we disable all
            #   physical checks for the entire multiline string
            # - have to wind self.line_number back because initially it
            #   points to the last line of the string, and we want
            #   check_physical() to give accurate feedback
            if noqa(token.line):
                return
            if token.type == FSTRING_END:  # pragma: >=3.12 cover
                start = self.fstring_start
            else:
                start = token.start[0]
            end = token.end[0]

            self.multiline = True
            self.line_number = start
            for line_number in range(start, end):
                self.check_physical(self.lines[line_number - 1] + '\n')
                self.line_number += 1
            self.multiline = False

    def check_all(self, expected=None, line_offset=0):
        """Run all checks on the input file."""
        self.report.init_file(self.filename, self.lines, expected, line_offset)
        self.total_lines = len(self.lines)
        if self._ast_checks:
            self.check_ast()
        self.line_number = 0
        self.indent_char = None
        self.indent_level = self.previous_indent_level = 0
        self.previous_logical = ''
        self.previous_unindented_logical_line = ''
        self.tokens = []
        self.blank_lines = self.blank_before = 0
        parens = 0
        for token in self.generate_tokens():
            self.tokens.append(token)
            token_type, text = token[0:2]
            if self.verbose >= 3:
                if token[2][0] == token[3][0]:
                    pos = '[{}:{}]'.format(token[2][1] or '', token[3][1])
                else:
                    pos = 'l.%s' % token[3][0]
                print('l.%s\t%s\t%s\t%r' %
                      (token[2][0], pos, tokenize.tok_name[token[0]], text))
            if token_type == tokenize.OP:
                if text in '([{':
                    parens += 1
                elif text in '}])':
                    parens -= 1
            elif not parens:
                if token_type in NEWLINE:
                    if token_type == tokenize.NEWLINE:
                        self.check_logical()
                        self.blank_before = 0
                    elif len(self.tokens) == 1:
                        # The physical line contains only this token.
                        self.blank_lines += 1
                        del self.tokens[0]
                    else:
                        self.check_logical()
        if self.tokens:
            self.check_physical(self.lines[-1])
            self.check_logical()
        return self.report.get_file_results()


class BaseReport:
    """Collect the results of the checks."""

    print_filename = False

    def __init__(self, options):
        self._benchmark_keys = options.benchmark_keys
        self._ignore_code = options.ignore_code
        # Results
        self.elapsed = 0
        self.total_errors = 0
        self.counters = dict.fromkeys(self._benchmark_keys, 0)
        self.messages = {}

    def start(self):
        """Start the timer."""
        self._start_time = time.time()

    def stop(self):
        """Stop the timer."""
        self.elapsed = time.time() - self._start_time

    def init_file(self, filename, lines, expected, line_offset):
        """Signal a new file."""
        self.filename = filename
        self.lines = lines
        self.expected = expected or ()
        self.line_offset = line_offset
        self.file_errors = 0
        self.counters['files'] += 1
        self.counters['physical lines'] += len(lines)

    def increment_logical_line(self):
        """Signal a new logical line."""
        self.counters['logical lines'] += 1

    def error(self, line_number, offset, text, check):
        """Report an error, according to options."""
        code = text[:4]
        if self._ignore_code(code):
            return
        if code in self.counters:
            self.counters[code] += 1
        else:
            self.counters[code] = 1
            self.messages[code] = text[5:]
        # Don't care about expected errors or warnings
        if code in self.expected:
            return
        if self.print_filename and not self.file_errors:
            print(self.filename)
        self.file_errors += 1
        self.total_errors += 1
        return code

    def get_file_results(self):
        """Return the count of errors and warnings for this file."""
        return self.file_errors

    def get_count(self, prefix=''):
        """Return the total count of errors and warnings."""
        return sum(self.counters[key]
                   for key in self.messages if key.startswith(prefix))

    def get_statistics(self, prefix=''):
        """Get statistics for message codes that start with the prefix.

        prefix='' matches all errors and warnings
        prefix='E' matches all errors
        prefix='W' matches all warnings
        prefix='E4' matches all errors that have to do with imports
        """
        return ['%-7s %s %s' % (self.counters[key], key, self.messages[key])
                for key in sorted(self.messages) if key.startswith(prefix)]

    def print_statistics(self, prefix=''):
        """Print overall statistics (number of errors and warnings)."""
        for line in self.get_statistics(prefix):
            print(line)

    def print_benchmark(self):
        """Print benchmark numbers."""
        print('{:<7.2f} {}'.format(self.elapsed, 'seconds elapsed'))
        if self.elapsed:
            for key in self._benchmark_keys:
                print('%-7d %s per second (%d total)' %
                      (self.counters[key] / self.elapsed, key,
                       self.counters[key]))


class FileReport(BaseReport):
    """Collect the results of the checks and print the filenames."""

    print_filename = True


class StandardReport(BaseReport):
    """Collect and print the results of the checks."""

    def __init__(self, options):
        super().__init__(options)
        self._fmt = REPORT_FORMAT.get(options.format.lower(),
                                      options.format)
        self._repeat = options.repeat
        self._show_source = options.show_source
        self._show_pep8 = options.show_pep8

    def init_file(self, filename, lines, expected, line_offset):
        """Signal a new file."""
        self._deferred_print = []
        return super().init_file(
            filename, lines, expected, line_offset)

    def error(self, line_number, offset, text, check):
        """Report an error, according to options."""
        code = super().error(line_number, offset, text, check)
        if code and (self.counters[code] == 1 or self._repeat):
            self._deferred_print.append(
                (line_number, offset, code, text[5:], check.__doc__))
        return code

    def get_file_results(self):
        """Print results and return the overall count for this file."""
        self._deferred_print.sort()
        for line_number, offset, code, text, doc in self._deferred_print:
            print(self._fmt % {
                'path': self.filename,
                'row': self.line_offset + line_number, 'col': offset + 1,
                'code': code, 'text': text,
            })
            if self._show_source:
                if line_number > len(self.lines):
                    line = ''
                else:
                    line = self.lines[line_number - 1]
                print(line.rstrip())
                print(re.sub(r'\S', ' ', line[:offset]) + '^')
            if self._show_pep8 and doc:
                print('    ' + doc.strip())

            # stdout is block buffered when not stdout.isatty().
            # line can be broken where buffer boundary since other
            # processes write to same file.
            # flush() after print() to avoid buffer boundary.
            # Typical buffer size is 8192. line written safely when
            # len(line) < 8192.
            sys.stdout.flush()
        return self.file_errors


class DiffReport(StandardReport):
    """Collect and print the results for the changed lines only."""

    def __init__(self, options):
        super().__init__(options)
        self._selected = options.selected_lines

    def error(self, line_number, offset, text, check):
        if line_number not in self._selected[self.filename]:
            return
        return super().error(line_number, offset, text, check)


class StyleGuide:
    """Initialize a PEP-8 instance with few options."""

    def __init__(self, *args, **kwargs):
        # build options from the command line
        self.checker_class = kwargs.pop('checker_class', Checker)
        parse_argv = kwargs.pop('parse_argv', False)
        config_file = kwargs.pop('config_file', False)
        parser = kwargs.pop('parser', None)
        # build options from dict
        options_dict = dict(*args, **kwargs)
        arglist = None if parse_argv else options_dict.get('paths', None)
        verbose = options_dict.get('verbose', None)
        options, self.paths = process_options(
            arglist, parse_argv, config_file, parser, verbose)
        if options_dict:
            options.__dict__.update(options_dict)
            if 'paths' in options_dict:
                self.paths = options_dict['paths']

        self.runner = self.input_file
        self.options = options

        if not options.reporter:
            options.reporter = BaseReport if options.quiet else StandardReport

        options.select = tuple(options.select or ())
        if not (options.select or options.ignore) and DEFAULT_IGNORE:
            # The default choice: ignore controversial checks
            options.ignore = tuple(DEFAULT_IGNORE.split(','))
        else:
            # Ignore all checks which are not explicitly selected
            options.ignore = ('',) if options.select else tuple(options.ignore)
        options.benchmark_keys = BENCHMARK_KEYS[:]
        options.ignore_code = self.ignore_code
        options.physical_checks = self.get_checks('physical_line')
        options.logical_checks = self.get_checks('logical_line')
        options.ast_checks = self.get_checks('tree')
        self.init_report()

    def init_report(self, reporter=None):
        """Initialize the report instance."""
        self.options.report = (reporter or self.options.reporter)(self.options)
        return self.options.report

    def check_files(self, paths=None):
        """Run all checks on the paths."""
        if paths is None:
            paths = self.paths
        report = self.options.report
        runner = self.runner
        report.start()
        try:
            for path in paths:
                if os.path.isdir(path):
                    self.input_dir(path)
                elif not self.excluded(path):
                    runner(path)
        except KeyboardInterrupt:
            print('... stopped')
        report.stop()
        return report

    def input_file(self, filename, lines=None, expected=None, line_offset=0):
        """Run all checks on a Python source file."""
        if self.options.verbose:
            print('checking %s' % filename)
        fchecker = self.checker_class(
            filename, lines=lines, options=self.options)
        return fchecker.check_all(expected=expected, line_offset=line_offset)

    def input_dir(self, dirname):
        """Check all files in this directory and all subdirectories."""
        dirname = dirname.rstrip('/')
        if self.excluded(dirname):
            return 0
        counters = self.options.report.counters
        verbose = self.options.verbose
        filepatterns = self.options.filename
        runner = self.runner
        for root, dirs, files in os.walk(dirname):
            if verbose:
                print('directory ' + root)
            counters['directories'] += 1
            for subdir in sorted(dirs):
                if self.excluded(subdir, root):
                    dirs.remove(subdir)
            for filename in sorted(files):
                # contain a pattern that matches?
                if (
                    filename_match(filename, filepatterns) and
                    not self.excluded(filename, root)
                ):
                    runner(os.path.join(root, filename))

    def excluded(self, filename, parent=None):
        """Check if the file should be excluded.

        Check if 'options.exclude' contains a pattern matching filename.
        """
        if not self.options.exclude:
            return False
        basename = os.path.basename(filename)
        if filename_match(basename, self.options.exclude):
            return True
        if parent:
            filename = os.path.join(parent, filename)
        filename = os.path.abspath(filename)
        return filename_match(filename, self.options.exclude)

    def ignore_code(self, code):
        """Check if the error code should be ignored.

        If 'options.select' contains a prefix of the error code,
        return False.  Else, if 'options.ignore' contains a prefix of
        the error code, return True.
        """
        if len(code) < 4 and any(s.startswith(code)
                                 for s in self.options.select):
            return False
        return (code.startswith(self.options.ignore) and
                not code.startswith(self.options.select))

    def get_checks(self, argument_name):
        """Get all the checks for this category.

        Find all globally visible functions where the first argument
        name starts with argument_name and which contain selected tests.
        """
        checks = []
        for check, attrs in _checks[argument_name].items():
            (codes, args) = attrs
            if any(not (code and self.ignore_code(code)) for code in codes):
                checks.append((check.__name__, check, args))
        return sorted(checks)


def get_parser(prog='pycodestyle', version=__version__):
    """Create the parser for the program."""
    parser = OptionParser(prog=prog, version=version,
                          usage="%prog [options] input ...")
    parser.config_options = [
        'exclude', 'filename', 'select', 'ignore', 'max-line-length',
        'max-doc-length', 'indent-size', 'hang-closing', 'count', 'format',
        'quiet', 'show-pep8', 'show-source', 'statistics', 'verbose']
    parser.add_option('-v', '--verbose', default=0, action='count',
                      help="print status messages, or debug with -vv")
    parser.add_option('-q', '--quiet', default=0, action='count',
                      help="report only file names, or nothing with -qq")
    parser.add_option('-r', '--repeat', default=True, action='store_true',
                      help="(obsolete) show all occurrences of the same error")
    parser.add_option('--first', action='store_false', dest='repeat',
                      help="show first occurrence of each error")
    parser.add_option('--exclude', metavar='patterns', default=DEFAULT_EXCLUDE,
                      help="exclude files or directories which match these "
                           "comma separated patterns (default: %default)")
    parser.add_option('--filename', metavar='patterns', default='*.py',
                      help="when parsing directories, only check filenames "
                           "matching these comma separated patterns "
                           "(default: %default)")
    parser.add_option('--select', metavar='errors', default='',
                      help="select errors and warnings (e.g. E,W6)")
    parser.add_option('--ignore', metavar='errors', default='',
                      help="skip errors and warnings (e.g. E4,W) "
                           "(default: %s)" % DEFAULT_IGNORE)
    parser.add_option('--show-source', action='store_true',
                      help="show source code for each error")
    parser.add_option('--show-pep8', action='store_true',
                      help="show text of PEP 8 for each error "
                           "(implies --first)")
    parser.add_option('--statistics', action='store_true',
                      help="count errors and warnings")
    parser.add_option('--count', action='store_true',
                      help="print total number of errors and warnings "
                           "to standard error and set exit code to 1 if "
                           "total is not null")
    parser.add_option('--max-line-length', type='int', metavar='n',
                      default=MAX_LINE_LENGTH,
                      help="set maximum allowed line length "
                           "(default: %default)")
    parser.add_option('--max-doc-length', type='int', metavar='n',
                      default=None,
                      help="set maximum allowed doc line length and perform "
                           "these checks (unchecked if not set)")
    parser.add_option('--indent-size', type='int', metavar='n',
                      default=INDENT_SIZE,
                      help="set how many spaces make up an indent "
                           "(default: %default)")
    parser.add_option('--hang-closing', action='store_true',
                      help="hang closing bracket instead of matching "
                           "indentation of opening bracket's line")
    parser.add_option('--format', metavar='format', default='default',
                      help="set the error format [default|pylint|<custom>]")
    parser.add_option('--diff', action='store_true',
                      help="report changes only within line number ranges in "
                           "the unified diff received on STDIN")
    group = parser.add_option_group("Testing Options")
    group.add_option('--benchmark', action='store_true',
                     help="measure processing speed")
    return parser


def read_config(options, args, arglist, parser):
    """Read and parse configurations.

    If a config file is specified on the command line with the
    "--config" option, then only it is used for configuration.

    Otherwise, the user configuration (~/.config/pycodestyle) and any
    local configurations in the current directory or above will be
    merged together (in that order) using the read method of
    ConfigParser.
    """
    config = configparser.RawConfigParser()

    cli_conf = options.config

    local_dir = os.curdir

    if USER_CONFIG and os.path.isfile(USER_CONFIG):
        if options.verbose:
            print('user configuration: %s' % USER_CONFIG)
        config.read(USER_CONFIG)

    parent = tail = args and os.path.abspath(os.path.commonprefix(args))
    while tail:
        if config.read(os.path.join(parent, fn) for fn in PROJECT_CONFIG):
            local_dir = parent
            if options.verbose:
                print('local configuration: in %s' % parent)
            break
        (parent, tail) = os.path.split(parent)

    if cli_conf and os.path.isfile(cli_conf):
        if options.verbose:
            print('cli configuration: %s' % cli_conf)
        config.read(cli_conf)

    pycodestyle_section = None
    if config.has_section(parser.prog):
        pycodestyle_section = parser.prog
    elif config.has_section('pep8'):
        pycodestyle_section = 'pep8'  # Deprecated
        warnings.warn('[pep8] section is deprecated. Use [pycodestyle].')

    if pycodestyle_section:
        option_list = {o.dest: o.type or o.action for o in parser.option_list}

        # First, read the default values
        (new_options, __) = parser.parse_args([])

        # Second, parse the configuration
        for opt in config.options(pycodestyle_section):
            if opt.replace('_', '-') not in parser.config_options:
                print("  unknown option '%s' ignored" % opt)
                continue
            if options.verbose > 1:
                print("  {} = {}".format(opt,
                                         config.get(pycodestyle_section, opt)))
            normalized_opt = opt.replace('-', '_')
            opt_type = option_list[normalized_opt]
            if opt_type in ('int', 'count'):
                value = config.getint(pycodestyle_section, opt)
            elif opt_type in ('store_true', 'store_false'):
                value = config.getboolean(pycodestyle_section, opt)
            else:
                value = config.get(pycodestyle_section, opt)
                if normalized_opt == 'exclude':
                    value = normalize_paths(value, local_dir)
            setattr(new_options, normalized_opt, value)

        # Third, overwrite with the command-line options
        (options, __) = parser.parse_args(arglist, values=new_options)
    return options


def process_options(arglist=None, parse_argv=False, config_file=None,
                    parser=None, verbose=None):
    """Process options passed either via arglist or command line args.

    Passing in the ``config_file`` parameter allows other tools, such as
    flake8 to specify their own options to be processed in pycodestyle.
    """
    if not parser:
        parser = get_parser()
    if not parser.has_option('--config'):
        group = parser.add_option_group("Configuration", description=(
            "The project options are read from the [%s] section of the "
            "tox.ini file or the setup.cfg file located in any parent folder "
            "of the path(s) being processed.  Allowed options are: %s." %
            (parser.prog, ', '.join(parser.config_options))))
        group.add_option('--config', metavar='path', default=config_file,
                         help="user config file location")
    # Don't read the command line if the module is used as a library.
    if not arglist and not parse_argv:
        arglist = []
    # If parse_argv is True and arglist is None, arguments are
    # parsed from the command line (sys.argv)
    (options, args) = parser.parse_args(arglist)
    options.reporter = None

    # If explicitly specified verbosity, override any `-v` CLI flag
    if verbose is not None:
        options.verbose = verbose

    if parse_argv and not args:
        if options.diff or any(os.path.exists(name)
                               for name in PROJECT_CONFIG):
            args = ['.']
        else:
            parser.error('input not specified')
    options = read_config(options, args, arglist, parser)
    options.reporter = parse_argv and options.quiet == 1 and FileReport

    options.filename = _parse_multi_options(options.filename)
    options.exclude = normalize_paths(options.exclude)
    options.select = _parse_multi_options(options.select)
    options.ignore = _parse_multi_options(options.ignore)

    if options.diff:
        options.reporter = DiffReport
        stdin = stdin_get_value()
        options.selected_lines = parse_udiff(stdin, options.filename, args[0])
        args = sorted(options.selected_lines)

    return options, args


def _parse_multi_options(options, split_token=','):
    r"""Split and strip and discard empties.

    Turns the following:

    A,
    B,

    into ["A", "B"]
    """
    if options:
        return [o.strip() for o in options.split(split_token) if o.strip()]
    else:
        return options


def _main():
    """Parse options and run checks on Python source."""
    import signal

    # Handle "Broken pipe" gracefully
    try:
        signal.signal(signal.SIGPIPE, lambda signum, frame: sys.exit(1))
    except AttributeError:
        pass    # not supported on Windows

    style_guide = StyleGuide(parse_argv=True)
    options = style_guide.options

    report = style_guide.check_files()

    if options.statistics:
        report.print_statistics()

    if options.benchmark:
        report.print_benchmark()

    if report.total_errors:
        if options.count:
            sys.stderr.write(str(report.total_errors) + '\n')
        sys.exit(1)


if __name__ == '__main__':
    _main()
+ sed -i '1 i #!/usr/bin/env python3' /builddir/build/BUILDROOT/pycharm-community-2024.3.2-1.el9.x86_64/usr/share/java/pycharm-community/plugins/python-ce/helpers/pycodestyle.py
+ /usr/lib/rpm/check-buildroot
+ /usr/lib/rpm/redhat/brp-ldconfig
+ /usr/lib/rpm/brp-compress
+ /usr/lib/rpm/brp-strip /bin/true
+ /usr/lib/rpm/brp-strip-comment-note /bin/true /usr/bin/objdump
+ /usr/lib/rpm/redhat/brp-strip-lto /bin/true
+ /usr/lib/rpm/brp-strip-static-archive /bin/true
+ /usr/lib/rpm/brp-python-hardlink
+ /usr/lib/rpm/redhat/brp-mangle-shebangs
mangling shebang in /usr/share/java/pycharm-community/bin/pycharm.sh from /bin/sh to #!/usr/bin/sh
mangling shebang in /usr/share/java/pycharm-community/bin/format.sh from /bin/sh to #!/usr/bin/sh
mangling shebang in /usr/share/java/pycharm-community/bin/ltedit.sh from /bin/sh to #!/usr/bin/sh
mangling shebang in /usr/share/java/pycharm-community/bin/jetbrains_client.sh from /bin/sh to #!/usr/bin/sh
mangling shebang in /usr/share/java/pycharm-community/bin/inspect.sh from /bin/sh to #!/usr/bin/sh
mangling shebang in /usr/share/java/pycharm-community/plugins/python-ce/helpers/typeshed/scripts/sync_s2clientprotocol_protobuf_stubs.sh from /bin/bash to #!/usr/bin/bash
mangling shebang in /usr/share/java/pycharm-community/plugins/python-ce/helpers/typeshed/scripts/generate_proto_stubs.sh from /usr/bin/env bash to #!/usr/bin/bash
mangling shebang in /usr/share/java/pycharm-community/plugins/python-ce/helpers/typeshed/scripts/sync_tensorflow_protobuf_stubs.sh from /bin/bash to #!/usr/bin/bash
mangling shebang in /usr/share/java/pycharm-community/plugins/python-ce/helpers/pydev/pydevd_attach_to_process/linux_and_mac/compile_linux.sh from /bin/bash to #!/usr/bin/bash
mangling shebang in /usr/share/java/pycharm-community/plugins/python-ce/helpers/pydev/pydevd_attach_to_process/linux_and_mac/compile_mac.sh from /bin/bash to #!/usr/bin/bash
mangling shebang in /usr/share/java/pycharm-community/plugins/python-ce/helpers/pydev/pydevd_attach_to_process/linux_and_mac/compile_linux_aarch64.sh from /bin/bash to #!/usr/bin/bash
mangling shebang in /usr/share/java/pycharm-community/plugins/python-ce/helpers/pycodestyle-2.10.0.py from /usr/bin/env python3 to #!/usr/bin/python3
mangling shebang in /usr/share/java/pycharm-community/plugins/python-ce/helpers/py3only/docutils/utils/math/math2html.py from /usr/bin/env python3 to #!/usr/bin/python3
mangling shebang in /usr/share/java/pycharm-community/plugins/python-ce/helpers/py3only/docutils/writers/odf_odt/prepstyles.py from /usr/bin/env python3 to #!/usr/bin/python3
mangling shebang in /usr/share/java/pycharm-community/plugins/python-ce/helpers/pycodestyle.py from /usr/bin/env python3 to #!/usr/bin/python3
*** WARNING: ./usr/share/java/pycharm-community/plugins/python-ce/helpers/pockets/autolog.py is executable but has no shebang, removing executable bit
Executing(%check): /bin/sh -e /var/tmp/rpm-tmp.Gx8EDT
+ umask 022
+ cd /builddir/build/BUILD
+ cd pycharm-community-2024.3.2
+ appstream-util validate-relax --nonet /builddir/build/BUILDROOT/pycharm-community-2024.3.2-1.el9.x86_64/usr/share/metainfo/pycharm-community.metainfo.xml
/builddir/build/BUILDROOT/pycharm-community-2024.3.2-1.el9.x86_64/usr/share/metainfo/pycharm-community.metainfo.xml: OK
+ desktop-file-validate /builddir/build/BUILDROOT/pycharm-community-2024.3.2-1.el9.x86_64/usr/share/applications/pycharm-community.desktop
+ RPM_EC=0
++ jobs -p
+ exit 0
Processing files: pycharm-community-2024.3.2-1.el9.x86_64
Executing(%license): /bin/sh -e /var/tmp/rpm-tmp.0sPdV9
+ umask 022
+ cd /builddir/build/BUILD
+ cd pycharm-community-2024.3.2
+ LICENSEDIR=/builddir/build/BUILDROOT/pycharm-community-2024.3.2-1.el9.x86_64/usr/share/licenses/pycharm-community
+ export LC_ALL=C
+ LC_ALL=C
+ export LICENSEDIR
+ /usr/bin/mkdir -p /builddir/build/BUILDROOT/pycharm-community-2024.3.2-1.el9.x86_64/usr/share/licenses/pycharm-community
+ cp -pr license/LICENSE.txt license/NOTICE.txt license/javahelp_license.txt license/javolution_license.txt license/launcher-third-party-libraries.html license/saxon-conditions.html license/third-party-libraries.html license/third-party-libraries.json license/yourkit-license-redist.txt /builddir/build/BUILDROOT/pycharm-community-2024.3.2-1.el9.x86_64/usr/share/licenses/pycharm-community
+ RPM_EC=0
++ jobs -p
+ exit 0
warning: absolute symlink: /usr/bin/pycharm-community -> /usr/share/java/pycharm-community/bin/pycharm
Provides: application() application(pycharm-community.desktop) metainfo() metainfo(pycharm-community.metainfo.xml) mimehandler(application/x-python-code) mimehandler(application/xml) mimehandler(text/markdown) mimehandler(text/plain) mimehandler(text/x-python) pycharm-community = 2024.3.2-1.el9 pycharm-community(x86-64) = 2024.3.2-1.el9
Requires(rpmlib): rpmlib(CompressedFileNames) <= 3.0.4-1 rpmlib(FileDigests) <= 4.6.0-1 rpmlib(PayloadFilesHavePrefix) <= 4.0-1
Requires: /usr/bin/sh libc.so.6()(64bit) libc.so.6(GLIBC_2.14)(64bit) libc.so.6(GLIBC_2.15)(64bit) libc.so.6(GLIBC_2.2.5)(64bit) libc.so.6(GLIBC_2.3)(64bit) libc.so.6(GLIBC_2.3.4)(64bit) libc.so.6(GLIBC_2.4)(64bit) libc.so.6(GLIBC_2.9)(64bit) libdl.so.2()(64bit) libdl.so.2(GLIBC_2.2.5)(64bit) libgcc_s.so.1()(64bit) libgcc_s.so.1(GCC_3.0)(64bit) libgcc_s.so.1(GCC_3.3)(64bit) libgcc_s.so.1(GCC_4.2.0)(64bit) libpthread.so.0()(64bit) libpthread.so.0(GLIBC_2.12)(64bit) libpthread.so.0(GLIBC_2.2.5)(64bit) librt.so.1()(64bit) librt.so.1(GLIBC_2.2.5)(64bit) rtld(GNU_HASH)
Obsoletes: pycharm-community-jre < 2024.3.2-1.el9
Processing files: pycharm-community-doc-2024.3.2-1.el9.noarch
Executing(%doc): /bin/sh -e /var/tmp/rpm-tmp.7msXvY
+ umask 022
+ cd /builddir/build/BUILD
+ cd pycharm-community-2024.3.2
+ DOCDIR=/builddir/build/BUILDROOT/pycharm-community-2024.3.2-1.el9.x86_64/usr/share/doc/pycharm-community-doc
+ export LC_ALL=C
+ LC_ALL=C
+ export DOCDIR
+ /usr/bin/mkdir -p /builddir/build/BUILDROOT/pycharm-community-2024.3.2-1.el9.x86_64/usr/share/doc/pycharm-community-doc
+ cp -pr help/ /builddir/build/BUILDROOT/pycharm-community-2024.3.2-1.el9.x86_64/usr/share/doc/pycharm-community-doc
+ cp -pr Install-Linux-tar.txt /builddir/build/BUILDROOT/pycharm-community-2024.3.2-1.el9.x86_64/usr/share/doc/pycharm-community-doc
+ RPM_EC=0
++ jobs -p
+ exit 0
Provides: pycharm-community-doc = 2024.3.2-1.el9
Requires(rpmlib): rpmlib(CompressedFileNames) <= 3.0.4-1 rpmlib(FileDigests) <= 4.6.0-1 rpmlib(PayloadFilesHavePrefix) <= 4.0-1
Checking for unpackaged file(s): /usr/lib/rpm/check-files /builddir/build/BUILDROOT/pycharm-community-2024.3.2-1.el9.x86_64
Wrote: /builddir/build/RPMS/pycharm-community-doc-2024.3.2-1.el9.noarch.rpm
Wrote: /builddir/build/RPMS/pycharm-community-2024.3.2-1.el9.x86_64.rpm
Executing(%clean): /bin/sh -e /var/tmp/rpm-tmp.EsctYN
+ umask 022
+ cd /builddir/build/BUILD
+ cd pycharm-community-2024.3.2
+ /usr/bin/rm -rf /builddir/build/BUILDROOT/pycharm-community-2024.3.2-1.el9.x86_64
+ RPM_EC=0
++ jobs -p
+ exit 0
Finish: rpmbuild pycharm-community-2024.3.2-1.el9.src.rpm
Finish: build phase for pycharm-community-2024.3.2-1.el9.src.rpm
INFO: chroot_scan: 3 files copied to /var/lib/copr-rpmbuild/results/chroot_scan
INFO: /var/lib/mock/rhel+epel-9-x86_64-1738090619.985866/root/var/log/dnf.log
/var/lib/mock/rhel+epel-9-x86_64-1738090619.985866/root/var/log/dnf.librepo.log
/var/lib/mock/rhel+epel-9-x86_64-1738090619.985866/root/var/log/dnf.rpm.log
INFO: chroot_scan: creating tarball /var/lib/copr-rpmbuild/results/chroot_scan.tar.gz
/bin/tar: Removing leading `/' from member names
INFO: Done(/var/lib/copr-rpmbuild/results/pycharm-community-2024.3.2-1.el9.src.rpm) Config(child) 15 minutes 0 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
Finish: run
Running RPMResults tool
Package info:
{
    "packages": [
        {
            "name": "pycharm-community",
            "epoch": null,
            "version": "2024.3.2",
            "release": "1.el9",
            "arch": "src"
        },
        {
            "name": "pycharm-community",
            "epoch": null,
            "version": "2024.3.2",
            "release": "1.el9",
            "arch": "x86_64"
        },
        {
            "name": "pycharm-community-doc",
            "epoch": null,
            "version": "2024.3.2",
            "release": "1.el9",
            "arch": "noarch"
        }
    ]
}
RPMResults finished