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


Version: 1.2
PID: 8806
Logging PID: 8807
Task:
{'allow_user_ssh': False,
 'appstream': True,
 'background': False,
 'bootstrap': 'on',
 'build_id': 8582359,
 'buildroot_pkgs': [],
 'chroot': 'epel-8-x86_64',
 'enable_net': True,
 'fedora_review': False,
 'git_hash': 'a33946dd9dd2a461de49198b52f16507cf831cb4',
 '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-8-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-8-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-2ie63js5/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-2ie63js5/pycharm-community', '--depth', '500', '--no-single-branch', '--recursive']
cwd: .
rc: 0
stdout: 
stderr: Cloning into '/var/lib/copr-rpmbuild/workspace/workdir-2ie63js5/pycharm-community'...

Running: git checkout a33946dd9dd2a461de49198b52f16507cf831cb4 --

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

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 a33946d automatic import of pycharm-community

Running: dist-git-client sources

cmd: ['dist-git-client', 'sources']
cwd: /var/lib/copr-rpmbuild/workspace/workdir-2ie63js5/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
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
/usr/bin/tail: /var/lib/copr-rpmbuild/main.log: file truncated
100  751M  100  751M    0     0  15.7M      0  0:00:47  0:00:47 --:--:-- 32.4M
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-2ie63js5/pycharm-community/pycharm-community.spec --sources /var/lib/copr-rpmbuild/workspace/workdir-2ie63js5/pycharm-community --resultdir /var/lib/copr-rpmbuild/results --uniqueext 1738090622.174514 -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-2ie63js5/pycharm-community/pycharm-community.spec --sources /var/lib/copr-rpmbuild/workspace/workdir-2ie63js5/pycharm-community --resultdir /var/lib/copr-rpmbuild/results --uniqueext 1738090622.174514 -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-2ie63js5/pycharm-community/pycharm-community.spec)  Config(rhel+epel-8-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-8-x86_64-bootstrap-1738090622.174514/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                                  17 kB/s | 1.6 kB     00:00    
Red Hat Enterprise Linux - BaseOS                18 MB/s |  45 MB     00:02    
Red Hat Enterprise Linux - AppStream            8.8 MB/s |  17 MB     00:01    
Red Hat Enterprise Linux - CodeReady Linux Buil 3.4 MB/s | 2.8 MB     00:00    
Extra Packages for Enterprise Linux 8 - x86_64   16 MB/s | 3.5 MB     00:00    
Dependencies resolved.
=====================================================================================================
 Package                                    Arch    Version                        Repository    Size
=====================================================================================================
Installing:
 python3-dnf                                noarch  4.7.0-20.el8                   rhel-baseos  550 k
 python3-dnf-plugins-core                   noarch  4.0.21-25.el8                  rhel-baseos  263 k
 subscription-manager                       x86_64  1.28.42-1.el8                  rhel-baseos  1.2 M
Installing dependencies:
 acl                                        x86_64  2.2.53-3.el8                   rhel-baseos   81 k
 audit-libs                                 x86_64  3.1.2-1.el8                    rhel-baseos  125 k
 basesystem                                 noarch  11-5.el8                       rhel-baseos   11 k
 bash                                       x86_64  4.4.20-5.el8                   rhel-baseos  1.5 M
 brotli                                     x86_64  1.0.6-3.el8                    rhel-baseos  323 k
 bzip2-libs                                 x86_64  1.0.6-28.el8_10                rhel-baseos   48 k
 ca-certificates                            noarch  2024.2.69_v8.0.303-80.0.el8_10 rhel-baseos  983 k
 chkconfig                                  x86_64  1.19.2-1.el8                   rhel-baseos  199 k
 coreutils                                  x86_64  8.30-15.el8                    rhel-baseos  1.2 M
 coreutils-common                           x86_64  8.30-15.el8                    rhel-baseos  2.0 M
 cracklib                                   x86_64  2.9.6-15.el8                   rhel-baseos   93 k
 cracklib-dicts                             x86_64  2.9.6-15.el8                   rhel-baseos  4.0 M
 crypto-policies                            noarch  20230731-1.git3177e06.el8      rhel-baseos   64 k
 cryptsetup-libs                            x86_64  2.3.7-7.el8                    rhel-baseos  489 k
 curl                                       x86_64  7.61.1-34.el8_10.3             rhel-baseos  354 k
 cyrus-sasl-lib                             x86_64  2.1.27-6.el8_5                 rhel-baseos  123 k
 dbus                                       x86_64  1:1.12.8-26.el8                rhel-baseos   42 k
 dbus-common                                noarch  1:1.12.8-26.el8                rhel-baseos   47 k
 dbus-daemon                                x86_64  1:1.12.8-26.el8                rhel-baseos  241 k
 dbus-glib                                  x86_64  0.110-2.el8                    rhel-baseos  127 k
 dbus-libs                                  x86_64  1:1.12.8-26.el8                rhel-baseos  185 k
 dbus-tools                                 x86_64  1:1.12.8-26.el8                rhel-baseos   86 k
 device-mapper                              x86_64  8:1.02.181-14.el8              rhel-baseos  379 k
 device-mapper-libs                         x86_64  8:1.02.181-14.el8              rhel-baseos  411 k
 dmidecode                                  x86_64  1:3.5-1.el8                    rhel-baseos   99 k
 dnf                                        noarch  4.7.0-20.el8                   rhel-baseos  543 k
 dnf-data                                   noarch  4.7.0-20.el8                   rhel-baseos  157 k
 dnf-plugin-subscription-manager            x86_64  1.28.42-1.el8                  rhel-baseos  326 k
 elfutils-default-yama-scope                noarch  0.190-2.el8                    rhel-baseos   53 k
 elfutils-libelf                            x86_64  0.190-2.el8                    rhel-baseos  233 k
 elfutils-libs                              x86_64  0.190-2.el8                    rhel-baseos  305 k
 expat                                      x86_64  2.2.5-16.el8_10                rhel-baseos  115 k
 file-libs                                  x86_64  5.33-26.el8                    rhel-baseos  544 k
 filesystem                                 x86_64  3.8-6.el8                      rhel-baseos  1.1 M
 gawk                                       x86_64  4.2.1-4.el8                    rhel-baseos  1.1 M
 gdbm                                       x86_64  1:1.18-2.el8                   rhel-baseos  130 k
 gdbm-libs                                  x86_64  1:1.18-2.el8                   rhel-baseos   60 k
 glib2                                      x86_64  2.56.4-165.el8_10              rhel-baseos  2.5 M
 glibc                                      x86_64  2.28-251.el8_10.11             rhel-baseos  2.2 M
 glibc-all-langpacks                        x86_64  2.28-251.el8_10.11             rhel-baseos   26 M
 glibc-common                               x86_64  2.28-251.el8_10.11             rhel-baseos  1.0 M
 gmp                                        x86_64  1:6.1.2-11.el8                 rhel-baseos  318 k
 gnupg2                                     x86_64  2.2.20-3.el8_6                 rhel-baseos  2.4 M
 gnutls                                     x86_64  3.6.16-8.el8_9.3               rhel-baseos  1.0 M
 gobject-introspection                      x86_64  1.56.1-1.el8                   rhel-baseos  255 k
 gpgme                                      x86_64  1.13.1-12.el8                  rhel-baseos  336 k
 grep                                       x86_64  3.1-6.el8                      rhel-baseos  274 k
 gzip                                       x86_64  1.9-13.el8_5                   rhel-baseos  167 k
 ima-evm-utils                              x86_64  1.3.2-12.el8                   rhel-baseos   64 k
 info                                       x86_64  6.5-7.el8                      rhel-baseos  198 k
 json-c                                     x86_64  0.13.1-3.el8                   rhel-baseos   41 k
 json-glib                                  x86_64  1.4.4-1.el8                    rhel-baseos  144 k
 keyutils-libs                              x86_64  1.5.10-9.el8                   rhel-baseos   34 k
 kmod-libs                                  x86_64  25-20.el8                      rhel-baseos   69 k
 krb5-libs                                  x86_64  1.18.2-30.el8_10               rhel-baseos  845 k
 libacl                                     x86_64  2.2.53-3.el8                   rhel-baseos   35 k
 libarchive                                 x86_64  3.3.3-5.el8                    rhel-baseos  360 k
 libassuan                                  x86_64  2.5.1-3.el8                    rhel-baseos   83 k
 libattr                                    x86_64  2.4.48-3.el8                   rhel-baseos   27 k
 libblkid                                   x86_64  2.32.1-46.el8                  rhel-baseos  221 k
 libcap                                     x86_64  2.48-6.el8_9                   rhel-baseos   74 k
 libcap-ng                                  x86_64  0.7.11-1.el8                   rhel-baseos   33 k
 libcom_err                                 x86_64  1.45.6-5.el8                   rhel-baseos   49 k
 libcomps                                   x86_64  0.1.18-1.el8                   rhel-baseos   82 k
 libcurl                                    x86_64  7.61.1-34.el8_10.3             rhel-baseos  304 k
 libdb                                      x86_64  5.3.28-42.el8_4                rhel-baseos  751 k
 libdb-utils                                x86_64  5.3.28-42.el8_4                rhel-baseos  150 k
 libdnf                                     x86_64  0.63.0-21.el8_10               rhel-baseos  712 k
 libfdisk                                   x86_64  2.32.1-46.el8                  rhel-baseos  254 k
 libffi                                     x86_64  3.1-24.el8                     rhel-baseos   38 k
 libgcc                                     x86_64  8.5.0-22.el8_10                rhel-baseos   82 k
 libgcrypt                                  x86_64  1.8.5-7.el8_6                  rhel-baseos  463 k
 libgpg-error                               x86_64  1.31-1.el8                     rhel-baseos  242 k
 libidn2                                    x86_64  2.2.0-1.el8                    rhel-baseos   94 k
 libksba                                    x86_64  1.3.5-9.el8_7                  rhel-baseos  134 k
 libmodulemd                                x86_64  2.13.0-1.el8                   rhel-baseos  233 k
 libmount                                   x86_64  2.32.1-46.el8                  rhel-baseos  237 k
 libnghttp2                                 x86_64  1.33.0-6.el8_10.1              rhel-baseos   78 k
 libnl3                                     x86_64  3.7.0-1.el8                    rhel-baseos  337 k
 libnsl2                                    x86_64  1.2.0-2.20180605git4a062cf.el8 rhel-baseos   58 k
 libpsl                                     x86_64  0.20.2-6.el8                   rhel-baseos   61 k
 libpwquality                               x86_64  1.4.4-6.el8                    rhel-baseos  107 k
 librepo                                    x86_64  1.14.2-5.el8                   rhel-baseos   93 k
 libreport-filesystem                       x86_64  2.9.5-15.el8                   rhel-baseos   21 k
 librhsm                                    x86_64  0.0.3-5.el8                    rhel-baseos   35 k
 libseccomp                                 x86_64  2.5.2-1.el8                    rhel-baseos   71 k
 libselinux                                 x86_64  2.9-9.el8_10                   rhel-baseos  166 k
 libsemanage                                x86_64  2.9-10.el8_10                  rhel-baseos  169 k
 libsepol                                   x86_64  2.9-3.el8                      rhel-baseos  340 k
 libsigsegv                                 x86_64  2.11-5.el8                     rhel-baseos   30 k
 libsmartcols                               x86_64  2.32.1-46.el8                  rhel-baseos  180 k
 libsolv                                    x86_64  0.7.20-6.el8                   rhel-baseos  376 k
 libssh                                     x86_64  0.9.6-14.el8                   rhel-baseos  220 k
 libssh-config                              noarch  0.9.6-14.el8                   rhel-baseos   21 k
 libstdc++                                  x86_64  8.5.0-22.el8_10                rhel-baseos  455 k
 libtasn1                                   x86_64  4.13-4.el8_7                   rhel-baseos   76 k
 libtirpc                                   x86_64  1.1.4-12.el8_10                rhel-baseos  114 k
 libunistring                               x86_64  0.9.9-3.el8                    rhel-baseos  422 k
 libusbx                                    x86_64  1.0.23-4.el8                   rhel-baseos   74 k
 libuser                                    x86_64  0.62-26.el8_10                 rhel-baseos  414 k
 libutempter                                x86_64  1.1.6-14.el8                   rhel-baseos   32 k
 libuuid                                    x86_64  2.32.1-46.el8                  rhel-baseos   99 k
 libverto                                   x86_64  0.3.2-2.el8                    rhel-baseos   24 k
 libxcrypt                                  x86_64  4.1.1-6.el8                    rhel-baseos   73 k
 libxml2                                    x86_64  2.9.7-18.el8_10.1              rhel-baseos  697 k
 libyaml                                    x86_64  0.1.7-5.el8                    rhel-baseos   61 k
 libzstd                                    x86_64  1.4.4-1.el8                    rhel-baseos  266 k
 lua-libs                                   x86_64  5.3.4-12.el8                   rhel-baseos  118 k
 lz4-libs                                   x86_64  1.8.3-3.el8_4                  rhel-baseos   66 k
 mpfr                                       x86_64  3.1.6-1.el8                    rhel-baseos  221 k
 ncurses                                    x86_64  6.1-10.20180224.el8            rhel-baseos  387 k
 ncurses-base                               noarch  6.1-10.20180224.el8            rhel-baseos   81 k
 ncurses-libs                               x86_64  6.1-10.20180224.el8            rhel-baseos  334 k
 nettle                                     x86_64  3.4.1-7.el8                    rhel-baseos  301 k
 npth                                       x86_64  1.5-4.el8                      rhel-baseos   26 k
 openldap                                   x86_64  2.4.46-20.el8_10               rhel-baseos  354 k
 openssl-libs                               x86_64  1:1.1.1k-14.el8_6              rhel-baseos  1.5 M
 p11-kit                                    x86_64  0.23.22-2.el8                  rhel-baseos  327 k
 p11-kit-trust                              x86_64  0.23.22-2.el8                  rhel-baseos  138 k
 pam                                        x86_64  1.3.1-36.el8_10                rhel-baseos  748 k
 passwd                                     x86_64  0.80-4.el8                     rhel-baseos  115 k
 pcre                                       x86_64  8.42-6.el8                     rhel-baseos  211 k
 pcre2                                      x86_64  10.32-3.el8_6                  rhel-baseos  247 k
 platform-python                            x86_64  3.6.8-69.el8_10                rhel-baseos   88 k
 platform-python-setuptools                 noarch  39.2.0-8.el8_10                rhel-baseos  632 k
 popt                                       x86_64  1.18-1.el8                     rhel-baseos   61 k
 publicsuffix-list-dafsa                    noarch  20180723-1.el8                 rhel-baseos   56 k
 python3-chardet                            noarch  3.0.4-7.el8                    rhel-baseos  195 k
 python3-cloud-what                         x86_64  1.28.42-1.el8                  rhel-baseos  325 k
 python3-dateutil                           noarch  1:2.6.1-6.el8                  rhel-baseos  251 k
 python3-dbus                               x86_64  1.2.4-15.el8                   rhel-baseos  134 k
 python3-decorator                          noarch  4.2.1-2.el8                    rhel-baseos   27 k
 python3-ethtool                            x86_64  0.14-5.el8                     rhel-baseos   45 k
 python3-gobject-base                       x86_64  3.28.3-2.el8                   rhel-baseos  313 k
 python3-gpg                                x86_64  1.13.1-12.el8                  rhel-baseos  244 k
 python3-hawkey                             x86_64  0.63.0-21.el8_10               rhel-baseos  119 k
 python3-idna                               noarch  2.5-7.el8_10                   rhel-baseos  103 k
 python3-iniparse                           noarch  0.4-31.el8                     rhel-baseos   49 k
 python3-inotify                            noarch  0.9.6-13.el8                   rhel-baseos   57 k
 python3-libcomps                           x86_64  0.1.18-1.el8                   rhel-baseos   52 k
 python3-libdnf                             x86_64  0.63.0-21.el8_10               rhel-baseos  781 k
 python3-librepo                            x86_64  1.14.2-5.el8                   rhel-baseos   54 k
 python3-libs                               x86_64  3.6.8-69.el8_10                rhel-baseos  7.9 M
 python3-pip-wheel                          noarch  9.0.3-24.el8                   rhel-baseos  866 k
 python3-pysocks                            noarch  1.6.8-3.el8                    rhel-baseos   34 k
 python3-requests                           noarch  2.20.0-5.el8_10                rhel-baseos  126 k
 python3-rpm                                x86_64  4.14.3-32.el8_10               rhel-baseos  156 k
 python3-setuptools-wheel                   noarch  39.2.0-8.el8_10                rhel-baseos  289 k
 python3-six                                noarch  1.11.0-8.el8                   rhel-baseos   38 k
 python3-subscription-manager-rhsm          x86_64  1.28.42-1.el8                  rhel-baseos  404 k
 python3-syspurpose                         x86_64  1.28.42-1.el8                  rhel-baseos  342 k
 python3-systemd                            x86_64  234-8.el8                      rhel-baseos   81 k
 python3-urllib3                            noarch  1.24.2-8.el8_10                rhel-baseos  177 k
 readline                                   x86_64  7.0-10.el8                     rhel-baseos  199 k
 redhat-release                             x86_64  8.10-0.3.el8                   rhel-baseos   45 k
 rpm                                        x86_64  4.14.3-32.el8_10               rhel-baseos  545 k
 rpm-build-libs                             x86_64  4.14.3-32.el8_10               rhel-baseos  158 k
 rpm-libs                                   x86_64  4.14.3-32.el8_10               rhel-baseos  348 k
 sed                                        x86_64  4.5-5.el8                      rhel-baseos  298 k
 setup                                      noarch  2.12.2-9.el8                   rhel-baseos  181 k
 shadow-utils                               x86_64  2:4.6-22.el8                   rhel-baseos  1.2 M
 sqlite-libs                                x86_64  3.26.0-19.el8_9                rhel-baseos  581 k
 subscription-manager-rhsm-certificates     noarch  20220623-1.el8                 rhel-baseos   21 k
 systemd                                    x86_64  239-82.el8_10.3                rhel-baseos  3.6 M
 systemd-libs                               x86_64  239-82.el8_10.3                rhel-baseos  1.1 M
 systemd-pam                                x86_64  239-82.el8_10.3                rhel-baseos  514 k
 tpm2-tss                                   x86_64  2.3.2-6.el8                    rhel-baseos  275 k
 tzdata                                     noarch  2024b-4.el8                    rhel-baseos  475 k
 usermode                                   x86_64  1.113-2.el8                    rhel-baseos  202 k
 util-linux                                 x86_64  2.32.1-46.el8                  rhel-baseos  2.5 M
 virt-what                                  x86_64  1.25-4.el8                     rhel-baseos   38 k
 which                                      x86_64  2.21-20.el8                    rhel-baseos   50 k
 xz-libs                                    x86_64  5.2.4-4.el8_6                  rhel-baseos   94 k
 zlib                                       x86_64  1.2.11-25.el8                  rhel-baseos  103 k

Transaction Summary
=====================================================================================================
Install  177 Packages

Total download size: 98 M
Installed size: 651 M
Downloading Packages:
(1/177): cracklib-2.9.6-15.el8.x86_64.rpm       272 kB/s |  93 kB     00:00    
(2/177): grep-3.1-6.el8.x86_64.rpm              557 kB/s | 274 kB     00:00    
(3/177): libassuan-2.5.1-3.el8.x86_64.rpm       643 kB/s |  83 kB     00:00    
(4/177): cracklib-dicts-2.9.6-15.el8.x86_64.rpm 4.2 MB/s | 4.0 MB     00:00    
(5/177): json-glib-1.4.4-1.el8.x86_64.rpm       200 kB/s | 144 kB     00:00    
(6/177): libattr-2.4.48-3.el8.x86_64.rpm         46 kB/s |  27 kB     00:00    
(7/177): libutempter-1.1.6-14.el8.x86_64.rpm    186 kB/s |  32 kB     00:00    
(8/177): libsigsegv-2.11-5.el8.x86_64.rpm        52 kB/s |  30 kB     00:00    
(9/177): mpfr-3.1.6-1.el8.x86_64.rpm            2.3 MB/s | 221 kB     00:00    
(10/177): npth-1.5-4.el8.x86_64.rpm             173 kB/s |  26 kB     00:00    
(11/177): libunistring-0.9.9-3.el8.x86_64.rpm   562 kB/s | 422 kB     00:00    
(12/177): libyaml-0.1.7-5.el8.x86_64.rpm        114 kB/s |  61 kB     00:00    
(13/177): basesystem-11-5.el8.noarch.rpm         56 kB/s |  11 kB     00:00    
(14/177): dbus-glib-0.110-2.el8.x86_64.rpm      259 kB/s | 127 kB     00:00    
(15/177): readline-7.0-10.el8.x86_64.rpm        300 kB/s | 199 kB     00:00    
(16/177): libnsl2-1.2.0-2.20180605git4a062cf.el 451 kB/s |  58 kB     00:00    
(17/177): gobject-introspection-1.56.1-1.el8.x8 429 kB/s | 255 kB     00:00    
(18/177): publicsuffix-list-dafsa-20180723-1.el 370 kB/s |  56 kB     00:00    
(19/177): python3-chardet-3.0.4-7.el8.noarch.rp 1.7 MB/s | 195 kB     00:00    
(20/177): python3-decorator-4.2.1-2.el8.noarch. 249 kB/s |  27 kB     00:00    
(21/177): libgpg-error-1.31-1.el8.x86_64.rpm    474 kB/s | 242 kB     00:00    
(22/177): python3-dateutil-2.6.1-6.el8.noarch.r 999 kB/s | 251 kB     00:00    
(23/177): python3-iniparse-0.4-31.el8.noarch.rp 291 kB/s |  49 kB     00:00    
(24/177): python3-pysocks-1.6.8-3.el8.noarch.rp 193 kB/s |  34 kB     00:00    
(25/177): python3-inotify-0.9.6-13.el8.noarch.r 262 kB/s |  57 kB     00:00    
(26/177): python3-six-1.11.0-8.el8.noarch.rpm   237 kB/s |  38 kB     00:00    
(27/177): python3-dbus-1.2.4-15.el8.x86_64.rpm  1.1 MB/s | 134 kB     00:00    
(28/177): libreport-filesystem-2.9.5-15.el8.x86 168 kB/s |  21 kB     00:00    
(29/177): libzstd-1.4.4-1.el8.x86_64.rpm        2.1 MB/s | 266 kB     00:00    
(30/177): libusbx-1.0.23-4.el8.x86_64.rpm       272 kB/s |  74 kB     00:00    
(31/177): python3-gobject-base-3.28.3-2.el8.x86 1.4 MB/s | 313 kB     00:00    
(32/177): libpsl-0.20.2-6.el8.x86_64.rpm        611 kB/s |  61 kB     00:00    
(33/177): popt-1.18-1.el8.x86_64.rpm            251 kB/s |  61 kB     00:00    
(34/177): brotli-1.0.6-3.el8.x86_64.rpm         1.3 MB/s | 323 kB     00:00    
(35/177): lz4-libs-1.8.3-3.el8_4.x86_64.rpm     582 kB/s |  66 kB     00:00    
(36/177): ima-evm-utils-1.3.2-12.el8.x86_64.rpm 461 kB/s |  64 kB     00:00    
(37/177): libidn2-2.2.0-1.el8.x86_64.rpm        105 kB/s |  94 kB     00:00    
(38/177): libcap-ng-0.7.11-1.el8.x86_64.rpm     279 kB/s |  33 kB     00:00    
(39/177): libdb-5.3.28-42.el8_4.x86_64.rpm      4.1 MB/s | 751 kB     00:00    
(40/177): filesystem-3.8-6.el8.x86_64.rpm       3.8 MB/s | 1.1 MB     00:00    
(41/177): libmodulemd-2.13.0-1.el8.x86_64.rpm   695 kB/s | 233 kB     00:00    
(42/177): libdb-utils-5.3.28-42.el8_4.x86_64.rp 231 kB/s | 150 kB     00:00    
(43/177): nettle-3.4.1-7.el8.x86_64.rpm         1.2 MB/s | 301 kB     00:00    
(44/177): libxcrypt-4.1.1-6.el8.x86_64.rpm       92 kB/s |  73 kB     00:00    
(45/177): pcre-8.42-6.el8.x86_64.rpm            366 kB/s | 211 kB     00:00    
(46/177): usermode-1.113-2.el8.x86_64.rpm       343 kB/s | 202 kB     00:00    
(47/177): gzip-1.9-13.el8_5.x86_64.rpm          1.6 MB/s | 167 kB     00:00    
(48/177): keyutils-libs-1.5.10-9.el8.x86_64.rpm 322 kB/s |  34 kB     00:00    
(49/177): lua-libs-5.3.4-12.el8.x86_64.rpm      923 kB/s | 118 kB     00:00    
(50/177): cyrus-sasl-lib-2.1.27-6.el8_5.x86_64. 175 kB/s | 123 kB     00:00    
(51/177): passwd-0.80-4.el8.x86_64.rpm          548 kB/s | 115 kB     00:00    
(52/177): libsepol-2.9-3.el8.x86_64.rpm         603 kB/s | 340 kB     00:00    
(53/177): json-c-0.13.1-3.el8.x86_64.rpm        346 kB/s |  41 kB     00:00    
(54/177): libcomps-0.1.18-1.el8.x86_64.rpm      472 kB/s |  82 kB     00:00    
(55/177): libseccomp-2.5.2-1.el8.x86_64.rpm     456 kB/s |  71 kB     00:00    
(56/177): info-6.5-7.el8.x86_64.rpm             299 kB/s | 198 kB     00:00    
(57/177): python3-ethtool-0.14-5.el8.x86_64.rpm 456 kB/s |  45 kB     00:00    
(58/177): python3-libcomps-0.1.18-1.el8.x86_64. 369 kB/s |  52 kB     00:00    
(59/177): python3-systemd-234-8.el8.x86_64.rpm  669 kB/s |  81 kB     00:00    
(60/177): sed-4.5-5.el8.x86_64.rpm              2.8 MB/s | 298 kB     00:00    
(61/177): gawk-4.2.1-4.el8.x86_64.rpm           1.1 MB/s | 1.1 MB     00:00    
(62/177): xz-libs-5.2.4-4.el8_6.x86_64.rpm      529 kB/s |  94 kB     00:00    
(63/177): gdbm-libs-1.18-2.el8.x86_64.rpm       368 kB/s |  60 kB     00:00    
(64/177): gnupg2-2.2.20-3.el8_6.x86_64.rpm       17 MB/s | 2.4 MB     00:00    
(65/177): libgcrypt-1.8.5-7.el8_6.x86_64.rpm    3.2 MB/s | 463 kB     00:00    
(66/177): libcom_err-1.45.6-5.el8.x86_64.rpm    227 kB/s |  49 kB     00:00    
(67/177): libverto-0.3.2-2.el8.x86_64.rpm        95 kB/s |  24 kB     00:00    
(68/177): pcre2-10.32-3.el8_6.x86_64.rpm        1.5 MB/s | 247 kB     00:00    
(69/177): libksba-1.3.5-9.el8_7.x86_64.rpm      1.3 MB/s | 134 kB     00:00    
(70/177): gdbm-1.18-2.el8.x86_64.rpm            622 kB/s | 130 kB     00:00    
(71/177): libnl3-3.7.0-1.el8.x86_64.rpm         2.1 MB/s | 337 kB     00:00    
(72/177): coreutils-common-8.30-15.el8.x86_64.r  15 MB/s | 2.0 MB     00:00    
(73/177): libtasn1-4.13-4.el8_7.x86_64.rpm      302 kB/s |  76 kB     00:00    
(74/177): coreutils-8.30-15.el8.x86_64.rpm      4.1 MB/s | 1.2 MB     00:00    
(75/177): libffi-3.1-24.el8.x86_64.rpm          370 kB/s |  38 kB     00:00    
(76/177): libarchive-3.3.3-5.el8.x86_64.rpm     1.9 MB/s | 360 kB     00:00    
(77/177): librhsm-0.0.3-5.el8.x86_64.rpm        340 kB/s |  35 kB     00:00    
(78/177): chkconfig-1.19.2-1.el8.x86_64.rpm     1.9 MB/s | 199 kB     00:00    
(79/177): setup-2.12.2-9.el8.noarch.rpm         765 kB/s | 181 kB     00:00    
(80/177): crypto-policies-20230731-1.git3177e06 687 kB/s |  64 kB     00:00    
(81/177): dbus-1.12.8-26.el8.x86_64.rpm         440 kB/s |  42 kB     00:00    
(82/177): libpwquality-1.4.4-6.el8.x86_64.rpm   251 kB/s | 107 kB     00:00    
(83/177): cryptsetup-libs-2.3.7-7.el8.x86_64.rp 3.7 MB/s | 489 kB     00:00    
(84/177): ncurses-libs-6.1-10.20180224.el8.x86_ 3.0 MB/s | 334 kB     00:00    
(85/177): dbus-daemon-1.12.8-26.el8.x86_64.rpm  1.1 MB/s | 241 kB     00:00    
(86/177): subscription-manager-rhsm-certificate 154 kB/s |  21 kB     00:00    
(87/177): virt-what-1.25-4.el8.x86_64.rpm       397 kB/s |  38 kB     00:00    
(88/177): dbus-libs-1.12.8-26.el8.x86_64.rpm    553 kB/s | 185 kB     00:00    
(89/177): which-2.21-20.el8.x86_64.rpm          521 kB/s |  50 kB     00:00    
(90/177): dbus-common-1.12.8-26.el8.noarch.rpm  392 kB/s |  47 kB     00:00    
(91/177): dbus-tools-1.12.8-26.el8.x86_64.rpm   647 kB/s |  86 kB     00:00    
(92/177): gnutls-3.6.16-8.el8_9.3.x86_64.rpm    5.4 MB/s | 1.0 MB     00:00    
(93/177): libcap-2.48-6.el8_9.x86_64.rpm        433 kB/s |  74 kB     00:00    
(94/177): libsolv-0.7.20-6.el8.x86_64.rpm       2.5 MB/s | 376 kB     00:00    
(95/177): ncurses-6.1-10.20180224.el8.x86_64.rp 2.4 MB/s | 387 kB     00:00    
(96/177): sqlite-libs-3.26.0-19.el8_9.x86_64.rp 3.8 MB/s | 581 kB     00:00    
(97/177): ncurses-base-6.1-10.20180224.el8.noar 418 kB/s |  81 kB     00:00    
(98/177): zlib-1.2.11-25.el8.x86_64.rpm         762 kB/s | 103 kB     00:00    
(99/177): audit-libs-3.1.2-1.el8.x86_64.rpm     735 kB/s | 125 kB     00:00    
(100/177): device-mapper-1.02.181-14.el8.x86_64 2.7 MB/s | 379 kB     00:00    
(101/177): bash-4.4.20-5.el8.x86_64.rpm         5.7 MB/s | 1.5 MB     00:00    
(102/177): device-mapper-libs-1.02.181-14.el8.x 4.4 MB/s | 411 kB     00:00    
(103/177): acl-2.2.53-3.el8.x86_64.rpm          188 kB/s |  81 kB     00:00    
(104/177): dnf-4.7.0-20.el8.noarch.rpm          4.1 MB/s | 543 kB     00:00    
(105/177): dmidecode-3.5-1.el8.x86_64.rpm       452 kB/s |  99 kB     00:00    
(106/177): dnf-data-4.7.0-20.el8.noarch.rpm     1.0 MB/s | 157 kB     00:00    
(107/177): dnf-plugin-subscription-manager-1.28 2.3 MB/s | 326 kB     00:00    
(108/177): elfutils-default-yama-scope-0.190-2. 377 kB/s |  53 kB     00:00    
(109/177): elfutils-libelf-0.190-2.el8.x86_64.r 1.8 MB/s | 233 kB     00:00    
(110/177): file-libs-5.33-26.el8.x86_64.rpm     5.3 MB/s | 544 kB     00:00    
(111/177): gmp-6.1.2-11.el8.x86_64.rpm          2.3 MB/s | 318 kB     00:00    
(112/177): elfutils-libs-0.190-2.el8.x86_64.rpm 1.5 MB/s | 305 kB     00:00    
(113/177): gpgme-1.13.1-12.el8.x86_64.rpm       3.0 MB/s | 336 kB     00:00    
(114/177): libacl-2.2.53-3.el8.x86_64.rpm       316 kB/s |  35 kB     00:00    
(115/177): kmod-libs-25-20.el8.x86_64.rpm       424 kB/s |  69 kB     00:00    
(116/177): libblkid-2.32.1-46.el8.x86_64.rpm    2.0 MB/s | 221 kB     00:00    
(117/177): libmount-2.32.1-46.el8.x86_64.rpm    2.5 MB/s | 237 kB     00:00    
(118/177): libfdisk-2.32.1-46.el8.x86_64.rpm    1.6 MB/s | 254 kB     00:00    
(119/177): libsmartcols-2.32.1-46.el8.x86_64.rp 1.3 MB/s | 180 kB     00:00    
(120/177): libssh-0.9.6-14.el8.x86_64.rpm       1.3 MB/s | 220 kB     00:00    
(121/177): libssh-config-0.9.6-14.el8.noarch.rp 155 kB/s |  21 kB     00:00    
(122/177): libuuid-2.32.1-46.el8.x86_64.rpm     560 kB/s |  99 kB     00:00    
(123/177): p11-kit-0.23.22-2.el8.x86_64.rpm     1.9 MB/s | 327 kB     00:00    
(124/177): p11-kit-trust-0.23.22-2.el8.x86_64.r 1.1 MB/s | 138 kB     00:00    
(125/177): librepo-1.14.2-5.el8.x86_64.rpm      155 kB/s |  93 kB     00:00    
(126/177): python3-cloud-what-1.28.42-1.el8.x86 2.1 MB/s | 325 kB     00:00    
(127/177): python3-dnf-plugins-core-4.0.21-25.e 2.3 MB/s | 263 kB     00:00    
(128/177): python3-gpg-1.13.1-12.el8.x86_64.rpm 1.6 MB/s | 244 kB     00:00    
(129/177): python3-librepo-1.14.2-5.el8.x86_64. 516 kB/s |  54 kB     00:00    
(130/177): python3-subscription-manager-rhsm-1. 3.6 MB/s | 404 kB     00:00    
(131/177): python3-pip-wheel-9.0.3-24.el8.noarc 6.7 MB/s | 866 kB     00:00    
(132/177): shadow-utils-4.6-22.el8.x86_64.rpm   6.7 MB/s | 1.2 MB     00:00    
(133/177): python3-syspurpose-1.28.42-1.el8.x86 1.8 MB/s | 342 kB     00:00    
(134/177): python3-dnf-4.7.0-20.el8.noarch.rpm  933 kB/s | 550 kB     00:00    
(135/177): tpm2-tss-2.3.2-6.el8.x86_64.rpm      1.7 MB/s | 275 kB     00:00    
(136/177): ca-certificates-2024.2.69_v8.0.303-8 7.4 MB/s | 983 kB     00:00    
(137/177): libgcc-8.5.0-22.el8_10.x86_64.rpm    867 kB/s |  82 kB     00:00    
(138/177): libnghttp2-1.33.0-6.el8_10.1.x86_64. 485 kB/s |  78 kB     00:00    
(139/177): util-linux-2.32.1-46.el8.x86_64.rpm  3.9 MB/s | 2.5 MB     00:00    
(140/177): subscription-manager-1.28.42-1.el8.x 1.6 MB/s | 1.2 MB     00:00    
(141/177): libuser-0.62-26.el8_10.x86_64.rpm    3.0 MB/s | 414 kB     00:00    
(142/177): libxml2-2.9.7-18.el8_10.1.x86_64.rpm 5.1 MB/s | 697 kB     00:00    
(143/177): libstdc++-8.5.0-22.el8_10.x86_64.rpm 745 kB/s | 455 kB     00:00    
(144/177): libtirpc-1.1.4-12.el8_10.x86_64.rpm  219 kB/s | 114 kB     00:00    
(145/177): python3-idna-2.5-7.el8_10.noarch.rpm 884 kB/s | 103 kB     00:00    
(146/177): platform-python-setuptools-39.2.0-8. 2.1 MB/s | 632 kB     00:00    
(147/177): python3-setuptools-wheel-39.2.0-8.el 2.3 MB/s | 289 kB     00:00    
(148/177): redhat-release-8.10-0.3.el8.x86_64.r 504 kB/s |  45 kB     00:00    
(149/177): python3-urllib3-1.24.2-8.el8_10.noar 870 kB/s | 177 kB     00:00    
(150/177): expat-2.2.5-16.el8_10.x86_64.rpm     681 kB/s | 115 kB     00:00    
(151/177): glib2-2.56.4-165.el8_10.x86_64.rpm    16 MB/s | 2.5 MB     00:00    
(152/177): krb5-libs-1.18.2-30.el8_10.x86_64.rp 6.7 MB/s | 845 kB     00:00    
(153/177): openldap-2.4.46-20.el8_10.x86_64.rpm 3.8 MB/s | 354 kB     00:00    
(154/177): tzdata-2024b-4.el8.noarch.rpm        4.2 MB/s | 475 kB     00:00    
(155/177): pam-1.3.1-36.el8_10.x86_64.rpm       4.1 MB/s | 748 kB     00:00    
(156/177): platform-python-3.6.8-69.el8_10.x86_ 824 kB/s |  88 kB     00:00    
(157/177): openssl-libs-1.1.1k-14.el8_6.x86_64. 4.5 MB/s | 1.5 MB     00:00    
(158/177): libselinux-2.9-9.el8_10.x86_64.rpm   1.2 MB/s | 166 kB     00:00    
(159/177): systemd-libs-239-82.el8_10.3.x86_64. 4.9 MB/s | 1.1 MB     00:00    
(160/177): python3-libs-3.6.8-69.el8_10.x86_64.  18 MB/s | 7.9 MB     00:00    
(161/177): systemd-239-82.el8_10.3.x86_64.rpm   9.8 MB/s | 3.6 MB     00:00    
(162/177): systemd-pam-239-82.el8_10.3.x86_64.r 3.8 MB/s | 514 kB     00:00    
(163/177): rpm-4.14.3-32.el8_10.x86_64.rpm      3.7 MB/s | 545 kB     00:00    
(164/177): libsemanage-2.9-10.el8_10.x86_64.rpm 673 kB/s | 169 kB     00:00    
(165/177): rpm-build-libs-4.14.3-32.el8_10.x86_ 1.5 MB/s | 158 kB     00:00    
(166/177): python3-requests-2.20.0-5.el8_10.noa 1.3 MB/s | 126 kB     00:00    
(167/177): python3-rpm-4.14.3-32.el8_10.x86_64. 368 kB/s | 156 kB     00:00    
(168/177): bzip2-libs-1.0.6-28.el8_10.x86_64.rp 438 kB/s |  48 kB     00:00    
(169/177): rpm-libs-4.14.3-32.el8_10.x86_64.rpm 1.0 MB/s | 348 kB     00:00    
(170/177): libdnf-0.63.0-21.el8_10.x86_64.rpm   5.8 MB/s | 712 kB     00:00    
(171/177): libcurl-7.61.1-34.el8_10.3.x86_64.rp 1.7 MB/s | 304 kB     00:00    
(172/177): curl-7.61.1-34.el8_10.3.x86_64.rpm   666 kB/s | 354 kB     00:00    
(173/177): python3-libdnf-0.63.0-21.el8_10.x86_ 2.8 MB/s | 781 kB     00:00    
(174/177): python3-hawkey-0.63.0-21.el8_10.x86_ 436 kB/s | 119 kB     00:00    
(175/177): glibc-common-2.28-251.el8_10.11.x86_ 6.3 MB/s | 1.0 MB     00:00    
(176/177): glibc-2.28-251.el8_10.11.x86_64.rpm  9.9 MB/s | 2.2 MB     00:00    
(177/177): glibc-all-langpacks-2.28-251.el8_10.  21 MB/s |  26 MB     00:01    
--------------------------------------------------------------------------------
Total                                           6.4 MB/s |  98 MB     00:15     
Red Hat Enterprise Linux - BaseOS               3.1 MB/s | 3.1 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-redhat8-release
Key imported successfully
Importing GPG key 0x2FA658E0:
 Userid     : "Red Hat, Inc. (auxiliary key) <security@redhat.com>"
 Fingerprint: 43A6 E49C 4A38 F4BE 9ABF 2A53 4568 9C88 2FA6 58E0
 From       : /usr/share/distribution-gpg-keys/redhat/RPM-GPG-KEY-redhat8-release
Key imported successfully
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
  Running scriptlet: filesystem-3.8-6.el8.x86_64                            1/1 
  Preparing        :                                                        1/1 
  Installing       : libgcc-8.5.0-22.el8_10.x86_64                        1/177 
  Running scriptlet: libgcc-8.5.0-22.el8_10.x86_64                        1/177 
  Installing       : crypto-policies-20230731-1.git3177e06.el8.noarch     2/177 
  Running scriptlet: crypto-policies-20230731-1.git3177e06.el8.noarch     2/177 
  Installing       : tzdata-2024b-4.el8.noarch                            3/177 
  Installing       : python3-setuptools-wheel-39.2.0-8.el8_10.noarch      4/177 
  Installing       : python3-pip-wheel-9.0.3-24.el8.noarch                5/177 
  Installing       : redhat-release-8.10-0.3.el8.x86_64                   6/177 
  Installing       : setup-2.12.2-9.el8.noarch                            7/177 
warning: /etc/hosts created as /etc/hosts.rpmnew

  Running scriptlet: setup-2.12.2-9.el8.noarch                            7/177 
  Installing       : filesystem-3.8-6.el8.x86_64                          8/177 
  Installing       : basesystem-11-5.el8.noarch                           9/177 
  Installing       : libssh-config-0.9.6-14.el8.noarch                   10/177 
  Installing       : ncurses-base-6.1-10.20180224.el8.noarch             11/177 
  Installing       : pcre2-10.32-3.el8_6.x86_64                          12/177 
  Installing       : libselinux-2.9-9.el8_10.x86_64                      13/177 
  Installing       : ncurses-libs-6.1-10.20180224.el8.x86_64             14/177 
  Installing       : glibc-all-langpacks-2.28-251.el8_10.11.x86_64       15/177 
  Installing       : glibc-common-2.28-251.el8_10.11.x86_64              16/177 
  Running scriptlet: glibc-2.28-251.el8_10.11.x86_64                     17/177 
  Installing       : glibc-2.28-251.el8_10.11.x86_64                     17/177 
  Running scriptlet: glibc-2.28-251.el8_10.11.x86_64                     17/177 
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       : bash-4.4.20-5.el8.x86_64                            18/177 
  Running scriptlet: bash-4.4.20-5.el8.x86_64                            18/177 
  Installing       : libsepol-2.9-3.el8.x86_64                           19/177 
  Running scriptlet: libsepol-2.9-3.el8.x86_64                           19/177 
  Installing       : zlib-1.2.11-25.el8.x86_64                           20/177 
  Installing       : xz-libs-5.2.4-4.el8_6.x86_64                        21/177 
  Installing       : bzip2-libs-1.0.6-28.el8_10.x86_64                   22/177 
  Installing       : libgpg-error-1.31-1.el8.x86_64                      23/177 
  Installing       : sqlite-libs-3.26.0-19.el8_9.x86_64                  24/177 
  Installing       : libzstd-1.4.4-1.el8.x86_64                          25/177 
  Installing       : libcap-2.48-6.el8_9.x86_64                          26/177 
  Installing       : info-6.5-7.el8.x86_64                               27/177 
  Installing       : popt-1.18-1.el8.x86_64                              28/177 
  Installing       : libxcrypt-4.1.1-6.el8.x86_64                        29/177 
  Installing       : elfutils-libelf-0.190-2.el8.x86_64                  30/177 
  Installing       : libxml2-2.9.7-18.el8_10.1.x86_64                    31/177 
  Installing       : json-c-0.13.1-3.el8.x86_64                          32/177 
  Installing       : libcom_err-1.45.6-5.el8.x86_64                      33/177 
  Running scriptlet: libcom_err-1.45.6-5.el8.x86_64                      33/177 
  Installing       : libffi-3.1-24.el8.x86_64                            34/177 
  Installing       : gmp-1:6.1.2-11.el8.x86_64                           35/177 
  Running scriptlet: gmp-1:6.1.2-11.el8.x86_64                           35/177 
  Installing       : libuuid-2.32.1-46.el8.x86_64                        36/177 
  Running scriptlet: libuuid-2.32.1-46.el8.x86_64                        36/177 
  Installing       : expat-2.2.5-16.el8_10.x86_64                        37/177 
  Installing       : readline-7.0-10.el8.x86_64                          38/177 
  Running scriptlet: readline-7.0-10.el8.x86_64                          38/177 
  Installing       : libattr-2.4.48-3.el8.x86_64                         39/177 
  Installing       : libacl-2.2.53-3.el8.x86_64                          40/177 
  Installing       : sed-4.5-5.el8.x86_64                                41/177 
  Running scriptlet: sed-4.5-5.el8.x86_64                                41/177 
  Installing       : lua-libs-5.3.4-12.el8.x86_64                        42/177 
  Installing       : libsmartcols-2.32.1-46.el8.x86_64                   43/177 
  Running scriptlet: libsmartcols-2.32.1-46.el8.x86_64                   43/177 
  Installing       : p11-kit-0.23.22-2.el8.x86_64                        44/177 
  Installing       : chkconfig-1.19.2-1.el8.x86_64                       45/177 
  Installing       : libunistring-0.9.9-3.el8.x86_64                     46/177 
  Installing       : libidn2-2.2.0-1.el8.x86_64                          47/177 
  Installing       : libgcrypt-1.8.5-7.el8_6.x86_64                      48/177 
  Running scriptlet: libgcrypt-1.8.5-7.el8_6.x86_64                      48/177 
  Installing       : file-libs-5.33-26.el8.x86_64                        49/177 
  Installing       : lz4-libs-1.8.3-3.el8_4.x86_64                       50/177 
  Installing       : libcap-ng-0.7.11-1.el8.x86_64                       51/177 
  Installing       : audit-libs-3.1.2-1.el8.x86_64                       52/177 
  Installing       : dmidecode-1:3.5-1.el8.x86_64                        53/177 
  Installing       : libstdc++-8.5.0-22.el8_10.x86_64                    54/177 
  Running scriptlet: libstdc++-8.5.0-22.el8_10.x86_64                    54/177 
  Installing       : libassuan-2.5.1-3.el8.x86_64                        55/177 
  Installing       : pcre-8.42-6.el8.x86_64                              56/177 
  Installing       : grep-3.1-6.el8.x86_64                               57/177 
  Running scriptlet: grep-3.1-6.el8.x86_64                               57/177 
  Installing       : keyutils-libs-1.5.10-9.el8.x86_64                   58/177 
  Installing       : gdbm-libs-1:1.18-2.el8.x86_64                       59/177 
  Installing       : libtasn1-4.13-4.el8_7.x86_64                        60/177 
  Running scriptlet: libtasn1-4.13-4.el8_7.x86_64                        60/177 
  Installing       : p11-kit-trust-0.23.22-2.el8.x86_64                  61/177 
  Running scriptlet: p11-kit-trust-0.23.22-2.el8.x86_64                  61/177 
  Installing       : gdbm-1:1.18-2.el8.x86_64                            62/177 
  Installing       : libsemanage-2.9-10.el8_10.x86_64                    63/177 
  Installing       : acl-2.2.53-3.el8.x86_64                             64/177 
  Installing       : libcomps-0.1.18-1.el8.x86_64                        65/177 
  Installing       : mpfr-3.1.6-1.el8.x86_64                             66/177 
  Running scriptlet: mpfr-3.1.6-1.el8.x86_64                             66/177 
  Installing       : nettle-3.4.1-7.el8.x86_64                           67/177 
  Running scriptlet: nettle-3.4.1-7.el8.x86_64                           67/177 
  Installing       : gnutls-3.6.16-8.el8_9.3.x86_64                      68/177 
  Installing       : coreutils-common-8.30-15.el8.x86_64                 69/177 
  Running scriptlet: coreutils-common-8.30-15.el8.x86_64                 69/177 
  Installing       : libksba-1.3.5-9.el8_7.x86_64                        70/177 
  Installing       : elfutils-default-yama-scope-0.190-2.el8.noarch      71/177 
  Running scriptlet: elfutils-default-yama-scope-0.190-2.el8.noarch      71/177 
  Installing       : elfutils-libs-0.190-2.el8.x86_64                    72/177 
  Installing       : libsigsegv-2.11-5.el8.x86_64                        73/177 
  Installing       : gawk-4.2.1-4.el8.x86_64                             74/177 
  Installing       : libyaml-0.1.7-5.el8.x86_64                          75/177 
  Installing       : npth-1.5-4.el8.x86_64                               76/177 
  Installing       : brotli-1.0.6-3.el8.x86_64                           77/177 
  Installing       : libseccomp-2.5.2-1.el8.x86_64                       78/177 
  Running scriptlet: libseccomp-2.5.2-1.el8.x86_64                       78/177 
  Installing       : libverto-0.3.2-2.el8.x86_64                         79/177 
  Installing       : libnl3-3.7.0-1.el8.x86_64                           80/177 
  Running scriptlet: libnl3-3.7.0-1.el8.x86_64                           80/177 
  Installing       : ncurses-6.1-10.20180224.el8.x86_64                  81/177 
  Installing       : openssl-libs-1:1.1.1k-14.el8_6.x86_64               82/177 
  Running scriptlet: openssl-libs-1:1.1.1k-14.el8_6.x86_64               82/177 
  Installing       : coreutils-8.30-15.el8.x86_64                        83/177 
  Running scriptlet: ca-certificates-2024.2.69_v8.0.303-80.0.el8_10.n    84/177 
  Installing       : ca-certificates-2024.2.69_v8.0.303-80.0.el8_10.n    84/177 
  Running scriptlet: ca-certificates-2024.2.69_v8.0.303-80.0.el8_10.n    84/177 
  Installing       : libdb-5.3.28-42.el8_4.x86_64                        85/177 
  Running scriptlet: libdb-5.3.28-42.el8_4.x86_64                        85/177 
  Installing       : libblkid-2.32.1-46.el8.x86_64                       86/177 
  Running scriptlet: libblkid-2.32.1-46.el8.x86_64                       86/177 
  Installing       : libmount-2.32.1-46.el8.x86_64                       87/177 
  Running scriptlet: libmount-2.32.1-46.el8.x86_64                       87/177 
  Installing       : glib2-2.56.4-165.el8_10.x86_64                      88/177 
  Installing       : systemd-libs-239-82.el8_10.3.x86_64                 89/177 
  Running scriptlet: systemd-libs-239-82.el8_10.3.x86_64                 89/177 
  Installing       : dbus-libs-1:1.12.8-26.el8.x86_64                    90/177 
  Running scriptlet: dbus-libs-1:1.12.8-26.el8.x86_64                    90/177 
  Installing       : json-glib-1.4.4-1.el8.x86_64                        91/177 
  Installing       : shadow-utils-2:4.6-22.el8.x86_64                    92/177 
  Installing       : krb5-libs-1.18.2-30.el8_10.x86_64                   93/177 
  Installing       : libtirpc-1.1.4-12.el8_10.x86_64                     94/177 
  Running scriptlet: libtirpc-1.1.4-12.el8_10.x86_64                     94/177 
  Installing       : librhsm-0.0.3-5.el8.x86_64                          95/177 
  Installing       : libnsl2-1.2.0-2.20180605git4a062cf.el8.x86_64       96/177 
  Running scriptlet: libnsl2-1.2.0-2.20180605git4a062cf.el8.x86_64       96/177 
  Installing       : platform-python-setuptools-39.2.0-8.el8_10.noarc    97/177 
  Installing       : platform-python-3.6.8-69.el8_10.x86_64              98/177 
  Running scriptlet: platform-python-3.6.8-69.el8_10.x86_64              98/177 
  Installing       : python3-libs-3.6.8-69.el8_10.x86_64                 99/177 
  Installing       : python3-six-1.11.0-8.el8.noarch                    100/177 
  Installing       : python3-dateutil-1:2.6.1-6.el8.noarch              101/177 
  Installing       : python3-iniparse-0.4-31.el8.noarch                 102/177 
  Installing       : python3-ethtool-0.14-5.el8.x86_64                  103/177 
  Installing       : python3-libcomps-0.1.18-1.el8.x86_64               104/177 
  Installing       : python3-systemd-234-8.el8.x86_64                   105/177 
  Installing       : python3-chardet-3.0.4-7.el8.noarch                 106/177 
  Installing       : python3-decorator-4.2.1-2.el8.noarch               107/177 
  Installing       : python3-inotify-0.9.6-13.el8.noarch                108/177 
  Installing       : python3-pysocks-1.6.8-3.el8.noarch                 109/177 
  Installing       : python3-urllib3-1.24.2-8.el8_10.noarch             110/177 
  Installing       : python3-syspurpose-1.28.42-1.el8.x86_64            111/177 
  Installing       : python3-idna-2.5-7.el8_10.noarch                   112/177 
  Installing       : python3-requests-2.20.0-5.el8_10.noarch            113/177 
  Installing       : python3-cloud-what-1.28.42-1.el8.x86_64            114/177 
  Installing       : cyrus-sasl-lib-2.1.27-6.el8_5.x86_64               115/177 
  Running scriptlet: cyrus-sasl-lib-2.1.27-6.el8_5.x86_64               115/177 
  Installing       : openldap-2.4.46-20.el8_10.x86_64                   116/177 
  Installing       : libssh-0.9.6-14.el8.x86_64                         117/177 
  Running scriptlet: libutempter-1.1.6-14.el8.x86_64                    118/177 
  Installing       : libutempter-1.1.6-14.el8.x86_64                    118/177 
  Running scriptlet: tpm2-tss-2.3.2-6.el8.x86_64                        119/177 
  Installing       : tpm2-tss-2.3.2-6.el8.x86_64                        119/177 
  Running scriptlet: tpm2-tss-2.3.2-6.el8.x86_64                        119/177 
  Installing       : ima-evm-utils-1.3.2-12.el8.x86_64                  120/177 
  Installing       : dbus-glib-0.110-2.el8.x86_64                       121/177 
  Running scriptlet: dbus-glib-0.110-2.el8.x86_64                       121/177 
  Installing       : python3-dbus-1.2.4-15.el8.x86_64                   122/177 
  Installing       : dbus-tools-1:1.12.8-26.el8.x86_64                  123/177 
  Installing       : libusbx-1.0.23-4.el8.x86_64                        124/177 
  Installing       : gnupg2-2.2.20-3.el8_6.x86_64                       125/177 
  Installing       : gpgme-1.13.1-12.el8.x86_64                         126/177 
  Installing       : python3-gpg-1.13.1-12.el8.x86_64                   127/177 
  Installing       : gobject-introspection-1.56.1-1.el8.x86_64          128/177 
  Installing       : python3-gobject-base-3.28.3-2.el8.x86_64           129/177 
  Installing       : libfdisk-2.32.1-46.el8.x86_64                      130/177 
  Running scriptlet: libfdisk-2.32.1-46.el8.x86_64                      130/177 
  Installing       : libdb-utils-5.3.28-42.el8_4.x86_64                 131/177 
  Installing       : gzip-1.9-13.el8_5.x86_64                           132/177 
  Running scriptlet: gzip-1.9-13.el8_5.x86_64                           132/177 
  Installing       : cracklib-2.9.6-15.el8.x86_64                       133/177 
  Installing       : cracklib-dicts-2.9.6-15.el8.x86_64                 134/177 
  Installing       : libpwquality-1.4.4-6.el8.x86_64                    135/177 
  Installing       : pam-1.3.1-36.el8_10.x86_64                         136/177 
  Running scriptlet: pam-1.3.1-36.el8_10.x86_64                         136/177 
  Installing       : util-linux-2.32.1-46.el8.x86_64                    137/177 
  Running scriptlet: util-linux-2.32.1-46.el8.x86_64                    137/177 
  Installing       : libuser-0.62-26.el8_10.x86_64                      138/177 
  Running scriptlet: libuser-0.62-26.el8_10.x86_64                      138/177 
  Installing       : passwd-0.80-4.el8.x86_64                           139/177 
  Installing       : usermode-1.113-2.el8.x86_64                        140/177 
  Installing       : which-2.21-20.el8.x86_64                           141/177 
  Installing       : virt-what-1.25-4.el8.x86_64                        142/177 
  Installing       : libarchive-3.3.3-5.el8.x86_64                      143/177 
  Installing       : kmod-libs-25-20.el8.x86_64                         144/177 
  Running scriptlet: kmod-libs-25-20.el8.x86_64                         144/177 
  Installing       : device-mapper-8:1.02.181-14.el8.x86_64             145/177 
  Installing       : device-mapper-libs-8:1.02.181-14.el8.x86_64        146/177 
  Installing       : cryptsetup-libs-2.3.7-7.el8.x86_64                 147/177 
  Running scriptlet: cryptsetup-libs-2.3.7-7.el8.x86_64                 147/177 
  Installing       : dbus-common-1:1.12.8-26.el8.noarch                 148/177 
  Running scriptlet: dbus-daemon-1:1.12.8-26.el8.x86_64                 149/177 
  Installing       : dbus-daemon-1:1.12.8-26.el8.x86_64                 149/177 
  Running scriptlet: dbus-daemon-1:1.12.8-26.el8.x86_64                 149/177 
  Installing       : systemd-pam-239-82.el8_10.3.x86_64                 150/177 
  Running scriptlet: systemd-239-82.el8_10.3.x86_64                     151/177 
  Installing       : systemd-239-82.el8_10.3.x86_64                     151/177 
  Running scriptlet: systemd-239-82.el8_10.3.x86_64                     151/177 
  Installing       : dbus-1:1.12.8-26.el8.x86_64                        152/177 
  Installing       : libnghttp2-1.33.0-6.el8_10.1.x86_64                153/177 
  Installing       : subscription-manager-rhsm-certificates-20220623-   154/177 
  Installing       : libreport-filesystem-2.9.5-15.el8.x86_64           155/177 
  Installing       : dnf-data-4.7.0-20.el8.noarch                       156/177 
warning: /etc/dnf/dnf.conf created as /etc/dnf/dnf.conf.rpmnew

  Installing       : publicsuffix-list-dafsa-20180723-1.el8.noarch      157/177 
  Installing       : libpsl-0.20.2-6.el8.x86_64                         158/177 
  Installing       : libcurl-7.61.1-34.el8_10.3.x86_64                  159/177 
  Installing       : librepo-1.14.2-5.el8.x86_64                        160/177 
  Installing       : python3-librepo-1.14.2-5.el8.x86_64                161/177 
  Installing       : curl-7.61.1-34.el8_10.3.x86_64                     162/177 
  Installing       : rpm-libs-4.14.3-32.el8_10.x86_64                   163/177 
  Running scriptlet: rpm-libs-4.14.3-32.el8_10.x86_64                   163/177 
  Installing       : rpm-4.14.3-32.el8_10.x86_64                        164/177 
  Installing       : libmodulemd-2.13.0-1.el8.x86_64                    165/177 
  Installing       : libsolv-0.7.20-6.el8.x86_64                        166/177 
  Installing       : libdnf-0.63.0-21.el8_10.x86_64                     167/177 
  Installing       : python3-libdnf-0.63.0-21.el8_10.x86_64             168/177 
  Installing       : python3-hawkey-0.63.0-21.el8_10.x86_64             169/177 
  Installing       : rpm-build-libs-4.14.3-32.el8_10.x86_64             170/177 
  Running scriptlet: rpm-build-libs-4.14.3-32.el8_10.x86_64             170/177 
  Installing       : python3-rpm-4.14.3-32.el8_10.x86_64                171/177 
  Installing       : python3-dnf-4.7.0-20.el8.noarch                    172/177 
  Installing       : dnf-4.7.0-20.el8.noarch                            173/177 
  Running scriptlet: dnf-4.7.0-20.el8.noarch                            173/177 
  Installing       : python3-dnf-plugins-core-4.0.21-25.el8.noarch      174/177 
  Installing       : dnf-plugin-subscription-manager-1.28.42-1.el8.x8   175/177 
  Installing       : python3-subscription-manager-rhsm-1.28.42-1.el8.   176/177 
  Running scriptlet: subscription-manager-1.28.42-1.el8.x86_64          177/177 
  Installing       : subscription-manager-1.28.42-1.el8.x86_64          177/177 
  Running scriptlet: subscription-manager-1.28.42-1.el8.x86_64          177/177 
/var/tmp/rpm-tmp.ZMCyJr: line 16: find: command not found
/var/tmp/rpm-tmp.ZMCyJr: line 16: xargs: command not found

  Running scriptlet: filesystem-3.8-6.el8.x86_64                        177/177 
  Running scriptlet: glibc-all-langpacks-2.28-251.el8_10.11.x86_64      177/177 
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
  Running scriptlet: ca-certificates-2024.2.69_v8.0.303-80.0.el8_10.n   177/177 
  Running scriptlet: subscription-manager-1.28.42-1.el8.x86_64          177/177 
Installed products updated.

Installed:
  acl-2.2.53-3.el8.x86_64                                                       
  audit-libs-3.1.2-1.el8.x86_64                                                 
  basesystem-11-5.el8.noarch                                                    
  bash-4.4.20-5.el8.x86_64                                                      
  brotli-1.0.6-3.el8.x86_64                                                     
  bzip2-libs-1.0.6-28.el8_10.x86_64                                             
  ca-certificates-2024.2.69_v8.0.303-80.0.el8_10.noarch                         
  chkconfig-1.19.2-1.el8.x86_64                                                 
  coreutils-8.30-15.el8.x86_64                                                  
  coreutils-common-8.30-15.el8.x86_64                                           
  cracklib-2.9.6-15.el8.x86_64                                                  
  cracklib-dicts-2.9.6-15.el8.x86_64                                            
  crypto-policies-20230731-1.git3177e06.el8.noarch                              
  cryptsetup-libs-2.3.7-7.el8.x86_64                                            
  curl-7.61.1-34.el8_10.3.x86_64                                                
  cyrus-sasl-lib-2.1.27-6.el8_5.x86_64                                          
  dbus-1:1.12.8-26.el8.x86_64                                                   
  dbus-common-1:1.12.8-26.el8.noarch                                            
  dbus-daemon-1:1.12.8-26.el8.x86_64                                            
  dbus-glib-0.110-2.el8.x86_64                                                  
  dbus-libs-1:1.12.8-26.el8.x86_64                                              
  dbus-tools-1:1.12.8-26.el8.x86_64                                             
  device-mapper-8:1.02.181-14.el8.x86_64                                        
  device-mapper-libs-8:1.02.181-14.el8.x86_64                                   
  dmidecode-1:3.5-1.el8.x86_64                                                  
  dnf-4.7.0-20.el8.noarch                                                       
  dnf-data-4.7.0-20.el8.noarch                                                  
  dnf-plugin-subscription-manager-1.28.42-1.el8.x86_64                          
  elfutils-default-yama-scope-0.190-2.el8.noarch                                
  elfutils-libelf-0.190-2.el8.x86_64                                            
  elfutils-libs-0.190-2.el8.x86_64                                              
  expat-2.2.5-16.el8_10.x86_64                                                  
  file-libs-5.33-26.el8.x86_64                                                  
  filesystem-3.8-6.el8.x86_64                                                   
  gawk-4.2.1-4.el8.x86_64                                                       
  gdbm-1:1.18-2.el8.x86_64                                                      
  gdbm-libs-1:1.18-2.el8.x86_64                                                 
  glib2-2.56.4-165.el8_10.x86_64                                                
  glibc-2.28-251.el8_10.11.x86_64                                               
  glibc-all-langpacks-2.28-251.el8_10.11.x86_64                                 
  glibc-common-2.28-251.el8_10.11.x86_64                                        
  gmp-1:6.1.2-11.el8.x86_64                                                     
  gnupg2-2.2.20-3.el8_6.x86_64                                                  
  gnutls-3.6.16-8.el8_9.3.x86_64                                                
  gobject-introspection-1.56.1-1.el8.x86_64                                     
  gpgme-1.13.1-12.el8.x86_64                                                    
  grep-3.1-6.el8.x86_64                                                         
  gzip-1.9-13.el8_5.x86_64                                                      
  ima-evm-utils-1.3.2-12.el8.x86_64                                             
  info-6.5-7.el8.x86_64                                                         
  json-c-0.13.1-3.el8.x86_64                                                    
  json-glib-1.4.4-1.el8.x86_64                                                  
  keyutils-libs-1.5.10-9.el8.x86_64                                             
  kmod-libs-25-20.el8.x86_64                                                    
  krb5-libs-1.18.2-30.el8_10.x86_64                                             
  libacl-2.2.53-3.el8.x86_64                                                    
  libarchive-3.3.3-5.el8.x86_64                                                 
  libassuan-2.5.1-3.el8.x86_64                                                  
  libattr-2.4.48-3.el8.x86_64                                                   
  libblkid-2.32.1-46.el8.x86_64                                                 
  libcap-2.48-6.el8_9.x86_64                                                    
  libcap-ng-0.7.11-1.el8.x86_64                                                 
  libcom_err-1.45.6-5.el8.x86_64                                                
  libcomps-0.1.18-1.el8.x86_64                                                  
  libcurl-7.61.1-34.el8_10.3.x86_64                                             
  libdb-5.3.28-42.el8_4.x86_64                                                  
  libdb-utils-5.3.28-42.el8_4.x86_64                                            
  libdnf-0.63.0-21.el8_10.x86_64                                                
  libfdisk-2.32.1-46.el8.x86_64                                                 
  libffi-3.1-24.el8.x86_64                                                      
  libgcc-8.5.0-22.el8_10.x86_64                                                 
  libgcrypt-1.8.5-7.el8_6.x86_64                                                
  libgpg-error-1.31-1.el8.x86_64                                                
  libidn2-2.2.0-1.el8.x86_64                                                    
  libksba-1.3.5-9.el8_7.x86_64                                                  
  libmodulemd-2.13.0-1.el8.x86_64                                               
  libmount-2.32.1-46.el8.x86_64                                                 
  libnghttp2-1.33.0-6.el8_10.1.x86_64                                           
  libnl3-3.7.0-1.el8.x86_64                                                     
  libnsl2-1.2.0-2.20180605git4a062cf.el8.x86_64                                 
  libpsl-0.20.2-6.el8.x86_64                                                    
  libpwquality-1.4.4-6.el8.x86_64                                               
  librepo-1.14.2-5.el8.x86_64                                                   
  libreport-filesystem-2.9.5-15.el8.x86_64                                      
  librhsm-0.0.3-5.el8.x86_64                                                    
  libseccomp-2.5.2-1.el8.x86_64                                                 
  libselinux-2.9-9.el8_10.x86_64                                                
  libsemanage-2.9-10.el8_10.x86_64                                              
  libsepol-2.9-3.el8.x86_64                                                     
  libsigsegv-2.11-5.el8.x86_64                                                  
  libsmartcols-2.32.1-46.el8.x86_64                                             
  libsolv-0.7.20-6.el8.x86_64                                                   
  libssh-0.9.6-14.el8.x86_64                                                    
  libssh-config-0.9.6-14.el8.noarch                                             
  libstdc++-8.5.0-22.el8_10.x86_64                                              
  libtasn1-4.13-4.el8_7.x86_64                                                  
  libtirpc-1.1.4-12.el8_10.x86_64                                               
  libunistring-0.9.9-3.el8.x86_64                                               
  libusbx-1.0.23-4.el8.x86_64                                                   
  libuser-0.62-26.el8_10.x86_64                                                 
  libutempter-1.1.6-14.el8.x86_64                                               
  libuuid-2.32.1-46.el8.x86_64                                                  
  libverto-0.3.2-2.el8.x86_64                                                   
  libxcrypt-4.1.1-6.el8.x86_64                                                  
  libxml2-2.9.7-18.el8_10.1.x86_64                                              
  libyaml-0.1.7-5.el8.x86_64                                                    
  libzstd-1.4.4-1.el8.x86_64                                                    
  lua-libs-5.3.4-12.el8.x86_64                                                  
  lz4-libs-1.8.3-3.el8_4.x86_64                                                 
  mpfr-3.1.6-1.el8.x86_64                                                       
  ncurses-6.1-10.20180224.el8.x86_64                                            
  ncurses-base-6.1-10.20180224.el8.noarch                                       
  ncurses-libs-6.1-10.20180224.el8.x86_64                                       
  nettle-3.4.1-7.el8.x86_64                                                     
  npth-1.5-4.el8.x86_64                                                         
  openldap-2.4.46-20.el8_10.x86_64                                              
  openssl-libs-1:1.1.1k-14.el8_6.x86_64                                         
  p11-kit-0.23.22-2.el8.x86_64                                                  
  p11-kit-trust-0.23.22-2.el8.x86_64                                            
  pam-1.3.1-36.el8_10.x86_64                                                    
  passwd-0.80-4.el8.x86_64                                                      
  pcre-8.42-6.el8.x86_64                                                        
  pcre2-10.32-3.el8_6.x86_64                                                    
  platform-python-3.6.8-69.el8_10.x86_64                                        
  platform-python-setuptools-39.2.0-8.el8_10.noarch                             
  popt-1.18-1.el8.x86_64                                                        
  publicsuffix-list-dafsa-20180723-1.el8.noarch                                 
  python3-chardet-3.0.4-7.el8.noarch                                            
  python3-cloud-what-1.28.42-1.el8.x86_64                                       
  python3-dateutil-1:2.6.1-6.el8.noarch                                         
  python3-dbus-1.2.4-15.el8.x86_64                                              
  python3-decorator-4.2.1-2.el8.noarch                                          
  python3-dnf-4.7.0-20.el8.noarch                                               
  python3-dnf-plugins-core-4.0.21-25.el8.noarch                                 
  python3-ethtool-0.14-5.el8.x86_64                                             
  python3-gobject-base-3.28.3-2.el8.x86_64                                      
  python3-gpg-1.13.1-12.el8.x86_64                                              
  python3-hawkey-0.63.0-21.el8_10.x86_64                                        
  python3-idna-2.5-7.el8_10.noarch                                              
  python3-iniparse-0.4-31.el8.noarch                                            
  python3-inotify-0.9.6-13.el8.noarch                                           
  python3-libcomps-0.1.18-1.el8.x86_64                                          
  python3-libdnf-0.63.0-21.el8_10.x86_64                                        
  python3-librepo-1.14.2-5.el8.x86_64                                           
  python3-libs-3.6.8-69.el8_10.x86_64                                           
  python3-pip-wheel-9.0.3-24.el8.noarch                                         
  python3-pysocks-1.6.8-3.el8.noarch                                            
  python3-requests-2.20.0-5.el8_10.noarch                                       
  python3-rpm-4.14.3-32.el8_10.x86_64                                           
  python3-setuptools-wheel-39.2.0-8.el8_10.noarch                               
  python3-six-1.11.0-8.el8.noarch                                               
  python3-subscription-manager-rhsm-1.28.42-1.el8.x86_64                        
  python3-syspurpose-1.28.42-1.el8.x86_64                                       
  python3-systemd-234-8.el8.x86_64                                              
  python3-urllib3-1.24.2-8.el8_10.noarch                                        
  readline-7.0-10.el8.x86_64                                                    
  redhat-release-8.10-0.3.el8.x86_64                                            
  rpm-4.14.3-32.el8_10.x86_64                                                   
  rpm-build-libs-4.14.3-32.el8_10.x86_64                                        
  rpm-libs-4.14.3-32.el8_10.x86_64                                              
  sed-4.5-5.el8.x86_64                                                          
  setup-2.12.2-9.el8.noarch                                                     
  shadow-utils-2:4.6-22.el8.x86_64                                              
  sqlite-libs-3.26.0-19.el8_9.x86_64                                            
  subscription-manager-1.28.42-1.el8.x86_64                                     
  subscription-manager-rhsm-certificates-20220623-1.el8.noarch                  
  systemd-239-82.el8_10.3.x86_64                                                
  systemd-libs-239-82.el8_10.3.x86_64                                           
  systemd-pam-239-82.el8_10.3.x86_64                                            
  tpm2-tss-2.3.2-6.el8.x86_64                                                   
  tzdata-2024b-4.el8.noarch                                                     
  usermode-1.113-2.el8.x86_64                                                   
  util-linux-2.32.1-46.el8.x86_64                                               
  virt-what-1.25-4.el8.x86_64                                                   
  which-2.21-20.el8.x86_64                                                      
  xz-libs-5.2.4-4.el8_6.x86_64                                                  
  zlib-1.2.11-25.el8.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-8-x86_64-1738090622.174514/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.14.3-32.el8_10.x86_64
  python3-dnf-4.7.0-20.el8.noarch
  python3-dnf-plugins-core-4.0.21-25.el8.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                                 469 kB/s |  61 kB     00:00    
Red Hat Enterprise Linux - BaseOS                39 MB/s |  80 MB     00:02    
Red Hat Enterprise Linux - AppStream             32 MB/s |  70 MB     00:02    
Red Hat Enterprise Linux - CodeReady Linux Buil 9.4 MB/s |  11 MB     00:01    
Extra Packages for Enterprise Linux 8 - x86_64   12 MB/s |  14 MB     00:01    
Dependencies resolved.
===========================================================================================
 Package                       Arch    Version                        Repository       Size
===========================================================================================
Installing:
 bash                          x86_64  4.4.20-5.el8                   rhel-baseos     1.5 M
 bzip2                         x86_64  1.0.6-28.el8_10                rhel-baseos      60 k
 coreutils                     x86_64  8.30-15.el8                    rhel-baseos     1.2 M
 cpio                          x86_64  2.12-11.el8                    rhel-baseos     266 k
 diffutils                     x86_64  3.6-6.el8                      rhel-baseos     359 k
 epel-rpm-macros               noarch  8-41                           epel             27 k
 findutils                     x86_64  1:4.6.0-23.el8_10              rhel-baseos     528 k
 gawk                          x86_64  4.2.1-4.el8                    rhel-baseos     1.1 M
 gcc                           x86_64  8.5.0-22.el8_10                rhel-appstream   23 M
 gcc-c++                       x86_64  8.5.0-22.el8_10                rhel-appstream   12 M
 grep                          x86_64  3.1-6.el8                      rhel-baseos     274 k
 gzip                          x86_64  1.9-13.el8_5                   rhel-baseos     167 k
 info                          x86_64  6.5-7.el8                      rhel-baseos     198 k
 make                          x86_64  1:4.2.1-11.el8                 rhel-baseos     498 k
 patch                         x86_64  2.7.6-11.el8                   rhel-baseos     138 k
 redhat-release                x86_64  8.10-0.3.el8                   rhel-baseos      45 k
 redhat-rpm-config             noarch  131-1.el8                      rhel-appstream   91 k
 rpm-build                     x86_64  4.14.3-32.el8_10               rhel-appstream  175 k
 sed                           x86_64  4.5-5.el8                      rhel-baseos     298 k
 tar                           x86_64  2:1.30-9.el8                   rhel-baseos     839 k
 unzip                         x86_64  6.0-47.el8_10                  rhel-baseos     196 k
 util-linux                    x86_64  2.32.1-46.el8                  rhel-baseos     2.5 M
 which                         x86_64  2.21-20.el8                    rhel-baseos      50 k
 xz                            x86_64  5.2.4-4.el8_6                  rhel-baseos     153 k
Installing dependencies:
 annobin                       x86_64  11.13-2.el8                    rhel-appstream  972 k
 ansible-srpm-macros           noarch  1-12.el8                       epel             21 k
 audit-libs                    x86_64  3.1.2-1.el8                    rhel-baseos     125 k
 basesystem                    noarch  11-5.el8                       rhel-baseos      11 k
 binutils                      x86_64  2.30-125.el8_10                rhel-baseos     5.8 M
 brotli                        x86_64  1.0.6-3.el8                    rhel-baseos     323 k
 bzip2-libs                    x86_64  1.0.6-28.el8_10                rhel-baseos      48 k
 ca-certificates               noarch  2024.2.69_v8.0.303-80.0.el8_10 rhel-baseos     983 k
 chkconfig                     x86_64  1.19.2-1.el8                   rhel-baseos     199 k
 coreutils-common              x86_64  8.30-15.el8                    rhel-baseos     2.0 M
 cpp                           x86_64  8.5.0-22.el8_10                rhel-appstream   10 M
 cracklib                      x86_64  2.9.6-15.el8                   rhel-baseos      93 k
 cracklib-dicts                x86_64  2.9.6-15.el8                   rhel-baseos     4.0 M
 crypto-policies               noarch  20230731-1.git3177e06.el8      rhel-baseos      64 k
 curl                          x86_64  7.61.1-34.el8_10.3             rhel-baseos     354 k
 cyrus-sasl-lib                x86_64  2.1.27-6.el8_5                 rhel-baseos     123 k
 dwz                           x86_64  0.12-10.el8                    rhel-appstream  109 k
 efi-srpm-macros               noarch  3-3.el8                        rhel-appstream   22 k
 elfutils                      x86_64  0.190-2.el8                    rhel-baseos     571 k
 elfutils-default-yama-scope   noarch  0.190-2.el8                    rhel-baseos      53 k
 elfutils-libelf               x86_64  0.190-2.el8                    rhel-baseos     233 k
 elfutils-libs                 x86_64  0.190-2.el8                    rhel-baseos     305 k
 expat                         x86_64  2.2.5-16.el8_10                rhel-baseos     115 k
 file                          x86_64  5.33-26.el8                    rhel-baseos      77 k
 file-libs                     x86_64  5.33-26.el8                    rhel-baseos     544 k
 filesystem                    x86_64  3.8-6.el8                      rhel-baseos     1.1 M
 fpc-srpm-macros               noarch  1.3-1.el8                      epel            8.2 k
 gc                            x86_64  7.6.4-3.el8                    rhel-appstream  109 k
 gcc-plugin-annobin            x86_64  8.5.0-22.el8_10                rhel-appstream   36 k
 gdb-headless                  x86_64  8.2-20.el8                     rhel-appstream  3.7 M
 gdbm                          x86_64  1:1.18-2.el8                   rhel-baseos     130 k
 gdbm-libs                     x86_64  1:1.18-2.el8                   rhel-baseos      60 k
 ghc-srpm-macros               noarch  1.4.2-7.el8                    rhel-appstream  9.4 k
 glib2                         x86_64  2.56.4-165.el8_10              rhel-baseos     2.5 M
 glibc                         x86_64  2.28-251.el8_10.11             rhel-baseos     2.2 M
 glibc-all-langpacks           x86_64  2.28-251.el8_10.11             rhel-baseos      26 M
 glibc-common                  x86_64  2.28-251.el8_10.11             rhel-baseos     1.0 M
 glibc-devel                   x86_64  2.28-251.el8_10.11             rhel-baseos      88 k
 glibc-gconv-extra             x86_64  2.28-251.el8_10.11             rhel-baseos     1.6 M
 glibc-headers                 x86_64  2.28-251.el8_10.11             rhel-baseos     493 k
 gmp                           x86_64  1:6.1.2-11.el8                 rhel-baseos     318 k
 gnupg2                        x86_64  2.2.20-3.el8_6                 rhel-baseos     2.4 M
 gnutls                        x86_64  3.6.16-8.el8_9.3               rhel-baseos     1.0 M
 go-srpm-macros                noarch  2-17.el8                       rhel-appstream   13 k
 guile                         x86_64  5:2.0.14-7.el8                 rhel-appstream  3.5 M
 ima-evm-utils                 x86_64  1.3.2-12.el8                   rhel-baseos      64 k
 isl                           x86_64  0.16.1-6.el8                   rhel-appstream  841 k
 kernel-headers                x86_64  4.18.0-553.36.1.el8_10         rhel-baseos      12 M
 keyutils-libs                 x86_64  1.5.10-9.el8                   rhel-baseos      34 k
 krb5-libs                     x86_64  1.18.2-30.el8_10               rhel-baseos     845 k
 libacl                        x86_64  2.2.53-3.el8                   rhel-baseos      35 k
 libarchive                    x86_64  3.3.3-5.el8                    rhel-baseos     360 k
 libassuan                     x86_64  2.5.1-3.el8                    rhel-baseos      83 k
 libatomic_ops                 x86_64  7.6.2-3.el8                    rhel-appstream   38 k
 libattr                       x86_64  2.4.48-3.el8                   rhel-baseos      27 k
 libbabeltrace                 x86_64  1.5.4-4.el8                    rhel-baseos     200 k
 libblkid                      x86_64  2.32.1-46.el8                  rhel-baseos     221 k
 libcap                        x86_64  2.48-6.el8_9                   rhel-baseos      74 k
 libcap-ng                     x86_64  0.7.11-1.el8                   rhel-baseos      33 k
 libcom_err                    x86_64  1.45.6-5.el8                   rhel-baseos      49 k
 libcurl                       x86_64  7.61.1-34.el8_10.3             rhel-baseos     304 k
 libdb                         x86_64  5.3.28-42.el8_4                rhel-baseos     751 k
 libdb-utils                   x86_64  5.3.28-42.el8_4                rhel-baseos     150 k
 libfdisk                      x86_64  2.32.1-46.el8                  rhel-baseos     254 k
 libffi                        x86_64  3.1-24.el8                     rhel-baseos      38 k
 libgcc                        x86_64  8.5.0-22.el8_10                rhel-baseos      82 k
 libgcrypt                     x86_64  1.8.5-7.el8_6                  rhel-baseos     463 k
 libgomp                       x86_64  8.5.0-22.el8_10                rhel-baseos     208 k
 libgpg-error                  x86_64  1.31-1.el8                     rhel-baseos     242 k
 libidn2                       x86_64  2.2.0-1.el8                    rhel-baseos      94 k
 libipt                        x86_64  1.6.1-8.el8                    rhel-appstream   50 k
 libksba                       x86_64  1.3.5-9.el8_7                  rhel-baseos     134 k
 libmount                      x86_64  2.32.1-46.el8                  rhel-baseos     237 k
 libmpc                        x86_64  1.1.0-9.1.el8                  rhel-appstream   61 k
 libnghttp2                    x86_64  1.33.0-6.el8_10.1              rhel-baseos      78 k
 libnsl2                       x86_64  1.2.0-2.20180605git4a062cf.el8 rhel-baseos      58 k
 libpkgconf                    x86_64  1.4.2-1.el8                    rhel-baseos      35 k
 libpsl                        x86_64  0.20.2-6.el8                   rhel-baseos      61 k
 libpwquality                  x86_64  1.4.4-6.el8                    rhel-baseos     107 k
 libselinux                    x86_64  2.9-9.el8_10                   rhel-baseos     166 k
 libsemanage                   x86_64  2.9-10.el8_10                  rhel-baseos     169 k
 libsepol                      x86_64  2.9-3.el8                      rhel-baseos     340 k
 libsigsegv                    x86_64  2.11-5.el8                     rhel-baseos      30 k
 libsmartcols                  x86_64  2.32.1-46.el8                  rhel-baseos     180 k
 libssh                        x86_64  0.9.6-14.el8                   rhel-baseos     220 k
 libssh-config                 noarch  0.9.6-14.el8                   rhel-baseos      21 k
 libstdc++                     x86_64  8.5.0-22.el8_10                rhel-baseos     455 k
 libstdc++-devel               x86_64  8.5.0-22.el8_10                rhel-appstream  2.1 M
 libtasn1                      x86_64  4.13-4.el8_7                   rhel-baseos      76 k
 libtirpc                      x86_64  1.1.4-12.el8_10                rhel-baseos     114 k
 libtool-ltdl                  x86_64  2.4.6-25.el8                   rhel-baseos      58 k
 libunistring                  x86_64  0.9.9-3.el8                    rhel-baseos     422 k
 libusbx                       x86_64  1.0.23-4.el8                   rhel-baseos      74 k
 libutempter                   x86_64  1.1.6-14.el8                   rhel-baseos      32 k
 libuuid                       x86_64  2.32.1-46.el8                  rhel-baseos      99 k
 libverto                      x86_64  0.3.2-2.el8                    rhel-baseos      24 k
 libxcrypt                     x86_64  4.1.1-6.el8                    rhel-baseos      73 k
 libxcrypt-devel               x86_64  4.1.1-6.el8                    rhel-baseos      25 k
 libxml2                       x86_64  2.9.7-18.el8_10.1              rhel-baseos     697 k
 libzstd                       x86_64  1.4.4-1.el8                    rhel-baseos     266 k
 lua-libs                      x86_64  5.3.4-12.el8                   rhel-baseos     118 k
 lua-srpm-macros               noarch  1-13.el8                       epel            9.2 k
 lz4-libs                      x86_64  1.8.3-3.el8_4                  rhel-baseos      66 k
 mpfr                          x86_64  3.1.6-1.el8                    rhel-baseos     221 k
 ncurses                       x86_64  6.1-10.20180224.el8            rhel-baseos     387 k
 ncurses-base                  noarch  6.1-10.20180224.el8            rhel-baseos      81 k
 ncurses-libs                  x86_64  6.1-10.20180224.el8            rhel-baseos     334 k
 nettle                        x86_64  3.4.1-7.el8                    rhel-baseos     301 k
 npth                          x86_64  1.5-4.el8                      rhel-baseos      26 k
 ocaml-srpm-macros             noarch  5-4.el8                        rhel-appstream  9.5 k
 openblas-srpm-macros          noarch  2-2.el8                        rhel-appstream  8.0 k
 openldap                      x86_64  2.4.46-20.el8_10               rhel-baseos     354 k
 openssl-libs                  x86_64  1:1.1.1k-14.el8_6              rhel-baseos     1.5 M
 p11-kit                       x86_64  0.23.22-2.el8                  rhel-baseos     327 k
 p11-kit-trust                 x86_64  0.23.22-2.el8                  rhel-baseos     138 k
 pam                           x86_64  1.3.1-36.el8_10                rhel-baseos     748 k
 pcre                          x86_64  8.42-6.el8                     rhel-baseos     211 k
 pcre2                         x86_64  10.32-3.el8_6                  rhel-baseos     247 k
 perl-srpm-macros              noarch  1-25.el8                       rhel-appstream   11 k
 pkgconf                       x86_64  1.4.2-1.el8                    rhel-baseos      38 k
 pkgconf-m4                    noarch  1.4.2-1.el8                    rhel-baseos      17 k
 pkgconf-pkg-config            x86_64  1.4.2-1.el8                    rhel-baseos      15 k
 platform-python               x86_64  3.6.8-69.el8_10                rhel-baseos      88 k
 platform-python-setuptools    noarch  39.2.0-8.el8_10                rhel-baseos     632 k
 popt                          x86_64  1.18-1.el8                     rhel-baseos      61 k
 publicsuffix-list-dafsa       noarch  20180723-1.el8                 rhel-baseos      56 k
 python-rpm-macros             noarch  3-45.el8                       rhel-appstream   16 k
 python-srpm-macros            noarch  3-45.el8                       rhel-appstream   16 k
 python3-libs                  x86_64  3.6.8-69.el8_10                rhel-baseos     7.9 M
 python3-pip-wheel             noarch  9.0.3-24.el8                   rhel-baseos     866 k
 python3-rpm-macros            noarch  3-45.el8                       rhel-appstream   15 k
 python3-setuptools-wheel      noarch  39.2.0-8.el8_10                rhel-baseos     289 k
 qt5-srpm-macros               noarch  5.15.3-1.el8                   rhel-appstream   11 k
 readline                      x86_64  7.0-10.el8                     rhel-baseos     199 k
 rpm                           x86_64  4.14.3-32.el8_10               rhel-baseos     545 k
 rpm-build-libs                x86_64  4.14.3-32.el8_10               rhel-baseos     158 k
 rpm-libs                      x86_64  4.14.3-32.el8_10               rhel-baseos     348 k
 rust-srpm-macros              noarch  5-2.el8                        rhel-appstream  9.3 k
 setup                         noarch  2.12.2-9.el8                   rhel-baseos     181 k
 shadow-utils                  x86_64  2:4.6-22.el8                   rhel-baseos     1.2 M
 sqlite-libs                   x86_64  3.26.0-19.el8_9                rhel-baseos     581 k
 systemd-libs                  x86_64  239-82.el8_10.3                rhel-baseos     1.1 M
 tpm2-tss                      x86_64  2.3.2-6.el8                    rhel-baseos     275 k
 tzdata                        noarch  2024b-4.el8                    rhel-baseos     475 k
 xz-libs                       x86_64  5.2.4-4.el8_6                  rhel-baseos      94 k
 zip                           x86_64  3.0-23.el8                     rhel-baseos     270 k
 zlib                          x86_64  1.2.11-25.el8                  rhel-baseos     103 k
 zstd                          x86_64  1.4.4-1.el8                    rhel-appstream  393 k

Transaction Summary
===========================================================================================
Install  172 Packages

Total download size: 164 M
Installed size: 813 M
Downloading Packages:
(1/172): cracklib-2.9.6-15.el8.x86_64.rpm       202 kB/s |  93 kB     00:00    
(2/172): libassuan-2.5.1-3.el8.x86_64.rpm       552 kB/s |  83 kB     00:00    
(3/172): grep-3.1-6.el8.x86_64.rpm              418 kB/s | 274 kB     00:00    
(4/172): cracklib-dicts-2.9.6-15.el8.x86_64.rpm 6.0 MB/s | 4.0 MB     00:00    
(5/172): libattr-2.4.48-3.el8.x86_64.rpm        156 kB/s |  27 kB     00:00    
(6/172): libsigsegv-2.11-5.el8.x86_64.rpm       225 kB/s |  30 kB     00:00    
(7/172): libunistring-0.9.9-3.el8.x86_64.rpm    2.7 MB/s | 422 kB     00:00    
(8/172): libutempter-1.1.6-14.el8.x86_64.rpm    306 kB/s |  32 kB     00:00    
(9/172): mpfr-3.1.6-1.el8.x86_64.rpm            1.3 MB/s | 221 kB     00:00    
(10/172): pkgconf-1.4.2-1.el8.x86_64.rpm        354 kB/s |  38 kB     00:00    
(11/172): npth-1.5-4.el8.x86_64.rpm             107 kB/s |  26 kB     00:00    
(12/172): pkgconf-pkg-config-1.4.2-1.el8.x86_64  78 kB/s |  15 kB     00:00    
(13/172): zip-3.0-23.el8.x86_64.rpm             1.6 MB/s | 270 kB     00:00    
(14/172): readline-7.0-10.el8.x86_64.rpm        744 kB/s | 199 kB     00:00    
(15/172): libgpg-error-1.31-1.el8.x86_64.rpm    2.2 MB/s | 242 kB     00:00    
(16/172): basesystem-11-5.el8.noarch.rpm         51 kB/s |  11 kB     00:00    
(17/172): libnsl2-1.2.0-2.20180605git4a062cf.el 497 kB/s |  58 kB     00:00    
(18/172): pkgconf-m4-1.4.2-1.el8.noarch.rpm     190 kB/s |  17 kB     00:00    
(19/172): libtool-ltdl-2.4.6-25.el8.x86_64.rpm  341 kB/s |  58 kB     00:00    
(20/172): libpkgconf-1.4.2-1.el8.x86_64.rpm     168 kB/s |  35 kB     00:00    
(21/172): publicsuffix-list-dafsa-20180723-1.el 557 kB/s |  56 kB     00:00    
(22/172): libidn2-2.2.0-1.el8.x86_64.rpm        777 kB/s |  94 kB     00:00    
(23/172): patch-2.7.6-11.el8.x86_64.rpm         968 kB/s | 138 kB     00:00    
(24/172): diffutils-3.6-6.el8.x86_64.rpm        1.9 MB/s | 359 kB     00:00    
(25/172): libusbx-1.0.23-4.el8.x86_64.rpm       831 kB/s |  74 kB     00:00    
(26/172): libzstd-1.4.4-1.el8.x86_64.rpm        1.7 MB/s | 266 kB     00:00    
(27/172): popt-1.18-1.el8.x86_64.rpm            517 kB/s |  61 kB     00:00    
(28/172): ima-evm-utils-1.3.2-12.el8.x86_64.rpm 645 kB/s |  64 kB     00:00    
(29/172): libpsl-0.20.2-6.el8.x86_64.rpm        243 kB/s |  61 kB     00:00    
(30/172): lz4-libs-1.8.3-3.el8_4.x86_64.rpm     705 kB/s |  66 kB     00:00    
(31/172): brotli-1.0.6-3.el8.x86_64.rpm         1.4 MB/s | 323 kB     00:00    
(32/172): filesystem-3.8-6.el8.x86_64.rpm       6.0 MB/s | 1.1 MB     00:00    
(33/172): libcap-ng-0.7.11-1.el8.x86_64.rpm     316 kB/s |  33 kB     00:00    
(34/172): libdb-5.3.28-42.el8_4.x86_64.rpm      5.0 MB/s | 751 kB     00:00    
(35/172): libxcrypt-4.1.1-6.el8.x86_64.rpm      550 kB/s |  73 kB     00:00    
(36/172): libdb-utils-5.3.28-42.el8_4.x86_64.rp 948 kB/s | 150 kB     00:00    
(37/172): libxcrypt-devel-4.1.1-6.el8.x86_64.rp 259 kB/s |  25 kB     00:00    
(38/172): cyrus-sasl-lib-2.1.27-6.el8_5.x86_64. 1.1 MB/s | 123 kB     00:00    
(39/172): nettle-3.4.1-7.el8.x86_64.rpm         1.8 MB/s | 301 kB     00:00    
(40/172): pcre-8.42-6.el8.x86_64.rpm            1.2 MB/s | 211 kB     00:00    
(41/172): gzip-1.9-13.el8_5.x86_64.rpm          1.3 MB/s | 167 kB     00:00    
(42/172): keyutils-libs-1.5.10-9.el8.x86_64.rpm 330 kB/s |  34 kB     00:00    
(43/172): libsepol-2.9-3.el8.x86_64.rpm         3.0 MB/s | 340 kB     00:00    
(44/172): cpio-2.12-11.el8.x86_64.rpm           2.8 MB/s | 266 kB     00:00    
(45/172): lua-libs-5.3.4-12.el8.x86_64.rpm      705 kB/s | 118 kB     00:00    
(46/172): gawk-4.2.1-4.el8.x86_64.rpm           7.5 MB/s | 1.1 MB     00:00    
(47/172): info-6.5-7.el8.x86_64.rpm             1.6 MB/s | 198 kB     00:00    
(48/172): make-4.2.1-11.el8.x86_64.rpm          4.6 MB/s | 498 kB     00:00    
(49/172): sed-4.5-5.el8.x86_64.rpm              2.9 MB/s | 298 kB     00:00    
(50/172): xz-5.2.4-4.el8_6.x86_64.rpm           1.3 MB/s | 153 kB     00:00    
(51/172): xz-libs-5.2.4-4.el8_6.x86_64.rpm      995 kB/s |  94 kB     00:00    
(52/172): gnupg2-2.2.20-3.el8_6.x86_64.rpm       21 MB/s | 2.4 MB     00:00    
(53/172): gdbm-libs-1.18-2.el8.x86_64.rpm       336 kB/s |  60 kB     00:00    
(54/172): libcom_err-1.45.6-5.el8.x86_64.rpm    485 kB/s |  49 kB     00:00    
(55/172): libgcrypt-1.8.5-7.el8_6.x86_64.rpm    4.1 MB/s | 463 kB     00:00    
(56/172): libbabeltrace-1.5.4-4.el8.x86_64.rpm  986 kB/s | 200 kB     00:00    
(57/172): pcre2-10.32-3.el8_6.x86_64.rpm        2.5 MB/s | 247 kB     00:00    
(58/172): libverto-0.3.2-2.el8.x86_64.rpm       180 kB/s |  24 kB     00:00    
(59/172): gdbm-1.18-2.el8.x86_64.rpm            1.1 MB/s | 130 kB     00:00    
(60/172): libtasn1-4.13-4.el8_7.x86_64.rpm      669 kB/s |  76 kB     00:00    
(61/172): libksba-1.3.5-9.el8_7.x86_64.rpm      1.0 MB/s | 134 kB     00:00    
(62/172): coreutils-8.30-15.el8.x86_64.rpm      8.0 MB/s | 1.2 MB     00:00    
(63/172): coreutils-common-8.30-15.el8.x86_64.r  16 MB/s | 2.0 MB     00:00    
(64/172): libarchive-3.3.3-5.el8.x86_64.rpm     2.7 MB/s | 360 kB     00:00    
(65/172): libpwquality-1.4.4-6.el8.x86_64.rpm   1.0 MB/s | 107 kB     00:00    
(66/172): libffi-3.1-24.el8.x86_64.rpm          209 kB/s |  38 kB     00:00    
(67/172): setup-2.12.2-9.el8.noarch.rpm         1.0 MB/s | 181 kB     00:00    
(68/172): tar-1.30-9.el8.x86_64.rpm             8.0 MB/s | 839 kB     00:00    
(69/172): chkconfig-1.19.2-1.el8.x86_64.rpm     1.5 MB/s | 199 kB     00:00    
(70/172): crypto-policies-20230731-1.git3177e06 515 kB/s |  64 kB     00:00    
(71/172): ncurses-libs-6.1-10.20180224.el8.x86_ 2.9 MB/s | 334 kB     00:00    
(72/172): which-2.21-20.el8.x86_64.rpm          521 kB/s |  50 kB     00:00    
(73/172): libcap-2.48-6.el8_9.x86_64.rpm        821 kB/s |  74 kB     00:00    
(74/172): ncurses-6.1-10.20180224.el8.x86_64.rp 4.0 MB/s | 387 kB     00:00    
(75/172): gnutls-3.6.16-8.el8_9.3.x86_64.rpm    6.8 MB/s | 1.0 MB     00:00    
(76/172): sqlite-libs-3.26.0-19.el8_9.x86_64.rp 4.4 MB/s | 581 kB     00:00    
(77/172): ncurses-base-6.1-10.20180224.el8.noar 554 kB/s |  81 kB     00:00    
(78/172): zlib-1.2.11-25.el8.x86_64.rpm         942 kB/s | 103 kB     00:00    
(79/172): bash-4.4.20-5.el8.x86_64.rpm           13 MB/s | 1.5 MB     00:00    
(80/172): audit-libs-3.1.2-1.el8.x86_64.rpm     1.0 MB/s | 125 kB     00:00    
(81/172): elfutils-0.190-2.el8.x86_64.rpm       3.6 MB/s | 571 kB     00:00    
(82/172): elfutils-default-yama-scope-0.190-2.e 457 kB/s |  53 kB     00:00    
(83/172): elfutils-libelf-0.190-2.el8.x86_64.rp 1.9 MB/s | 233 kB     00:00    
(84/172): elfutils-libs-0.190-2.el8.x86_64.rpm  1.9 MB/s | 305 kB     00:00    
(85/172): file-5.33-26.el8.x86_64.rpm           702 kB/s |  77 kB     00:00    
(86/172): file-libs-5.33-26.el8.x86_64.rpm      4.0 MB/s | 544 kB     00:00    
(87/172): libacl-2.2.53-3.el8.x86_64.rpm        345 kB/s |  35 kB     00:00    
(88/172): libblkid-2.32.1-46.el8.x86_64.rpm     2.1 MB/s | 221 kB     00:00    
(89/172): libfdisk-2.32.1-46.el8.x86_64.rpm     1.5 MB/s | 254 kB     00:00    
(90/172): libmount-2.32.1-46.el8.x86_64.rpm     1.5 MB/s | 237 kB     00:00    
(91/172): gmp-6.1.2-11.el8.x86_64.rpm           1.0 MB/s | 318 kB     00:00    
(92/172): libsmartcols-2.32.1-46.el8.x86_64.rpm 1.7 MB/s | 180 kB     00:00    
(93/172): libssh-config-0.9.6-14.el8.noarch.rpm 165 kB/s |  21 kB     00:00    
(94/172): libssh-0.9.6-14.el8.x86_64.rpm        1.6 MB/s | 220 kB     00:00    
(95/172): libuuid-2.32.1-46.el8.x86_64.rpm      1.1 MB/s |  99 kB     00:00    
(96/172): p11-kit-trust-0.23.22-2.el8.x86_64.rp 1.2 MB/s | 138 kB     00:00    
(97/172): p11-kit-0.23.22-2.el8.x86_64.rpm      2.7 MB/s | 327 kB     00:00    
(98/172): python3-pip-wheel-9.0.3-24.el8.noarch 5.7 MB/s | 866 kB     00:00    
(99/172): tpm2-tss-2.3.2-6.el8.x86_64.rpm       2.2 MB/s | 275 kB     00:00    
(100/172): ca-certificates-2024.2.69_v8.0.303-8 6.2 MB/s | 983 kB     00:00    
(101/172): shadow-utils-4.6-22.el8.x86_64.rpm   3.5 MB/s | 1.2 MB     00:00    
(102/172): findutils-4.6.0-23.el8_10.x86_64.rpm 4.7 MB/s | 528 kB     00:00    
(103/172): libgcc-8.5.0-22.el8_10.x86_64.rpm    829 kB/s |  82 kB     00:00    
(104/172): util-linux-2.32.1-46.el8.x86_64.rpm  5.2 MB/s | 2.5 MB     00:00    
(105/172): libnghttp2-1.33.0-6.el8_10.1.x86_64. 824 kB/s |  78 kB     00:00    
(106/172): libgomp-8.5.0-22.el8_10.x86_64.rpm   1.0 MB/s | 208 kB     00:00    
(107/172): libstdc++-8.5.0-22.el8_10.x86_64.rpm 3.6 MB/s | 455 kB     00:00    
(108/172): libtirpc-1.1.4-12.el8_10.x86_64.rpm  846 kB/s | 114 kB     00:00    
(109/172): libxml2-2.9.7-18.el8_10.1.x86_64.rpm 3.9 MB/s | 697 kB     00:00    
(110/172): redhat-release-8.10-0.3.el8.x86_64.r 303 kB/s |  45 kB     00:00    
(111/172): python3-setuptools-wheel-39.2.0-8.el 1.1 MB/s | 289 kB     00:00    
(112/172): platform-python-setuptools-39.2.0-8. 2.1 MB/s | 632 kB     00:00    
(113/172): binutils-2.30-125.el8_10.x86_64.rpm   30 MB/s | 5.8 MB     00:00    
(114/172): expat-2.2.5-16.el8_10.x86_64.rpm     664 kB/s | 115 kB     00:00    
(115/172): glib2-2.56.4-165.el8_10.x86_64.rpm    14 MB/s | 2.5 MB     00:00    
(116/172): openldap-2.4.46-20.el8_10.x86_64.rpm 2.7 MB/s | 354 kB     00:00    
(117/172): krb5-libs-1.18.2-30.el8_10.x86_64.rp 5.6 MB/s | 845 kB     00:00    
(118/172): openssl-libs-1.1.1k-14.el8_6.x86_64. 9.9 MB/s | 1.5 MB     00:00    
(119/172): tzdata-2024b-4.el8.noarch.rpm        4.7 MB/s | 475 kB     00:00    
(120/172): platform-python-3.6.8-69.el8_10.x86_ 964 kB/s |  88 kB     00:00    
(121/172): pam-1.3.1-36.el8_10.x86_64.rpm       5.8 MB/s | 748 kB     00:00    
(122/172): libselinux-2.9-9.el8_10.x86_64.rpm   1.4 MB/s | 166 kB     00:00    
(123/172): python3-libs-3.6.8-69.el8_10.x86_64.  28 MB/s | 7.9 MB     00:00    
(124/172): unzip-6.0-47.el8_10.x86_64.rpm       1.6 MB/s | 196 kB     00:00    
(125/172): systemd-libs-239-82.el8_10.3.x86_64. 4.6 MB/s | 1.1 MB     00:00    
(126/172): rpm-4.14.3-32.el8_10.x86_64.rpm      5.5 MB/s | 545 kB     00:00    
(127/172): libsemanage-2.9-10.el8_10.x86_64.rpm 1.3 MB/s | 169 kB     00:00    
(128/172): rpm-build-libs-4.14.3-32.el8_10.x86_ 1.2 MB/s | 158 kB     00:00    
(129/172): rpm-libs-4.14.3-32.el8_10.x86_64.rpm 2.8 MB/s | 348 kB     00:00    
(130/172): bzip2-1.0.6-28.el8_10.x86_64.rpm     551 kB/s |  60 kB     00:00    
(131/172): bzip2-libs-1.0.6-28.el8_10.x86_64.rp 466 kB/s |  48 kB     00:00    
(132/172): curl-7.61.1-34.el8_10.3.x86_64.rpm   3.0 MB/s | 354 kB     00:00    
(133/172): libcurl-7.61.1-34.el8_10.3.x86_64.rp 2.9 MB/s | 304 kB     00:00    
(134/172): kernel-headers-4.18.0-553.36.1.el8_1  28 MB/s |  12 MB     00:00    
(135/172): glibc-2.28-251.el8_10.11.x86_64.rpm  5.8 MB/s | 2.2 MB     00:00    
(136/172): glibc-devel-2.28-251.el8_10.11.x86_6 873 kB/s |  88 kB     00:00    
(137/172): glibc-gconv-extra-2.28-251.el8_10.11 6.8 MB/s | 1.6 MB     00:00    
(138/172): glibc-common-2.28-251.el8_10.11.x86_ 1.6 MB/s | 1.0 MB     00:00    
(139/172): glibc-all-langpacks-2.28-251.el8_10.  32 MB/s |  26 MB     00:00    
(140/172): glibc-headers-2.28-251.el8_10.11.x86 3.2 MB/s | 493 kB     00:00    
(141/172): ghc-srpm-macros-1.4.2-7.el8.noarch.r  76 kB/s | 9.4 kB     00:00    
(142/172): openblas-srpm-macros-2-2.el8.noarch.  85 kB/s | 8.0 kB     00:00    
(143/172): ocaml-srpm-macros-5-4.el8.noarch.rpm  65 kB/s | 9.5 kB     00:00    
(144/172): rust-srpm-macros-5-2.el8.noarch.rpm   96 kB/s | 9.3 kB     00:00    
(145/172): perl-srpm-macros-1-25.el8.noarch.rpm  83 kB/s |  11 kB     00:00    
(146/172): gc-7.6.4-3.el8.x86_64.rpm            842 kB/s | 109 kB     00:00    
(147/172): libatomic_ops-7.6.2-3.el8.x86_64.rpm 165 kB/s |  38 kB     00:00    
(148/172): guile-2.0.14-7.el8.x86_64.rpm         15 MB/s | 3.5 MB     00:00    
(149/172): isl-0.16.1-6.el8.x86_64.rpm          5.4 MB/s | 841 kB     00:00    
(150/172): libipt-1.6.1-8.el8.x86_64.rpm        275 kB/s |  50 kB     00:00    
(151/172): libmpc-1.1.0-9.1.el8.x86_64.rpm      552 kB/s |  61 kB     00:00    
(152/172): zstd-1.4.4-1.el8.x86_64.rpm          2.6 MB/s | 393 kB     00:00    
(153/172): efi-srpm-macros-3-3.el8.noarch.rpm   229 kB/s |  22 kB     00:00    
(154/172): go-srpm-macros-2-17.el8.noarch.rpm   118 kB/s |  13 kB     00:00    
(155/172): dwz-0.12-10.el8.x86_64.rpm           656 kB/s | 109 kB     00:00    
(156/172): qt5-srpm-macros-5.15.3-1.el8.noarch.  75 kB/s |  11 kB     00:00    
(157/172): python-rpm-macros-3-45.el8.noarch.rp 144 kB/s |  16 kB     00:00    
(158/172): redhat-rpm-config-131-1.el8.noarch.r 852 kB/s |  91 kB     00:00    
(159/172): python3-rpm-macros-3-45.el8.noarch.r  69 kB/s |  15 kB     00:00    
(160/172): python-srpm-macros-3-45.el8.noarch.r  86 kB/s |  16 kB     00:00    
(161/172): annobin-11.13-2.el8.x86_64.rpm       6.4 MB/s | 972 kB     00:00    
(162/172): cpp-8.5.0-22.el8_10.x86_64.rpm        19 MB/s |  10 MB     00:00    
(163/172): gdb-headless-8.2-20.el8.x86_64.rpm   3.5 MB/s | 3.7 MB     00:01    
(164/172): gcc-plugin-annobin-8.5.0-22.el8_10.x 250 kB/s |  36 kB     00:00    
(165/172): gcc-8.5.0-22.el8_10.x86_64.rpm        19 MB/s |  23 MB     00:01    
(166/172): libstdc++-devel-8.5.0-22.el8_10.x86_ 9.5 MB/s | 2.1 MB     00:00    
(167/172): rpm-build-4.14.3-32.el8_10.x86_64.rp 1.8 MB/s | 175 kB     00:00    
(168/172): gcc-c++-8.5.0-22.el8_10.x86_64.rpm    12 MB/s |  12 MB     00:00    
(169/172): fpc-srpm-macros-1.3-1.el8.noarch.rpm  16 kB/s | 8.2 kB     00:00    
(170/172): ansible-srpm-macros-1-12.el8.noarch.  27 kB/s |  21 kB     00:00    
(171/172): epel-rpm-macros-8-41.noarch.rpm       35 kB/s |  27 kB     00:00    
(172/172): lua-srpm-macros-1-13.el8.noarch.rpm   23 kB/s | 9.2 kB     00:00    
--------------------------------------------------------------------------------
Total                                            15 MB/s | 164 MB     00:11     
Red Hat Enterprise Linux - BaseOS               3.1 MB/s | 3.1 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-redhat8-release
Key imported successfully
Importing GPG key 0x2FA658E0:
 Userid     : "Red Hat, Inc. (auxiliary key) <security@redhat.com>"
 Fingerprint: 43A6 E49C 4A38 F4BE 9ABF 2A53 4568 9C88 2FA6 58E0
 From       : /usr/share/distribution-gpg-keys/redhat/RPM-GPG-KEY-redhat8-release
Key imported successfully
Extra Packages for Enterprise Linux 8 - x86_64  1.6 MB/s | 1.6 kB     00:00    
Importing GPG key 0x2F86D6A1:
 Userid     : "Fedora EPEL (8) <epel@fedoraproject.org>"
 Fingerprint: 94E2 79EB 8D8F 25B2 1810 ADF1 21EA 45AB 2F86 D6A1
 From       : /usr/share/distribution-gpg-keys/epel/RPM-GPG-KEY-EPEL-8
Key imported successfully
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
  Running scriptlet: filesystem-3.8-6.el8.x86_64                            1/1 
  Preparing        :                                                        1/1 
  Installing       : libgcc-8.5.0-22.el8_10.x86_64                        1/172 
  Running scriptlet: libgcc-8.5.0-22.el8_10.x86_64                        1/172 
  Installing       : python-srpm-macros-3-45.el8.noarch                   2/172 
  Installing       : crypto-policies-20230731-1.git3177e06.el8.noarch     3/172 
  Running scriptlet: crypto-policies-20230731-1.git3177e06.el8.noarch     3/172 
  Installing       : python-rpm-macros-3-45.el8.noarch                    4/172 
  Installing       : redhat-release-8.10-0.3.el8.x86_64                   5/172 
  Installing       : setup-2.12.2-9.el8.noarch                            6/172 
warning: /etc/hosts created as /etc/hosts.rpmnew

  Running scriptlet: setup-2.12.2-9.el8.noarch                            6/172 
  Installing       : filesystem-3.8-6.el8.x86_64                          7/172 
  Installing       : python3-setuptools-wheel-39.2.0-8.el8_10.noarch      8/172 
  Installing       : python3-pip-wheel-9.0.3-24.el8.noarch                9/172 
  Installing       : basesystem-11-5.el8.noarch                          10/172 
  Installing       : python3-rpm-macros-3-45.el8.noarch                  11/172 
  Installing       : fpc-srpm-macros-1.3-1.el8.noarch                    12/172 
  Installing       : ansible-srpm-macros-1-12.el8.noarch                 13/172 
  Installing       : qt5-srpm-macros-5.15.3-1.el8.noarch                 14/172 
  Installing       : go-srpm-macros-2-17.el8.noarch                      15/172 
  Installing       : rust-srpm-macros-5-2.el8.noarch                     16/172 
  Installing       : perl-srpm-macros-1-25.el8.noarch                    17/172 
  Installing       : openblas-srpm-macros-2-2.el8.noarch                 18/172 
  Installing       : ocaml-srpm-macros-5-4.el8.noarch                    19/172 
  Installing       : ghc-srpm-macros-1.4.2-7.el8.noarch                  20/172 
  Installing       : kernel-headers-4.18.0-553.36.1.el8_10.x86_64        21/172 
  Installing       : tzdata-2024b-4.el8.noarch                           22/172 
  Installing       : libssh-config-0.9.6-14.el8.noarch                   23/172 
  Installing       : ncurses-base-6.1-10.20180224.el8.noarch             24/172 
  Installing       : pcre2-10.32-3.el8_6.x86_64                          25/172 
  Installing       : libselinux-2.9-9.el8_10.x86_64                      26/172 
  Installing       : ncurses-libs-6.1-10.20180224.el8.x86_64             27/172 
  Installing       : glibc-all-langpacks-2.28-251.el8_10.11.x86_64       28/172 
  Installing       : glibc-common-2.28-251.el8_10.11.x86_64              29/172 
  Installing       : glibc-gconv-extra-2.28-251.el8_10.11.x86_64         30/172 
  Running scriptlet: glibc-gconv-extra-2.28-251.el8_10.11.x86_64         30/172 
  Running scriptlet: glibc-2.28-251.el8_10.11.x86_64                     31/172 
  Installing       : glibc-2.28-251.el8_10.11.x86_64                     31/172 
  Running scriptlet: glibc-2.28-251.el8_10.11.x86_64                     31/172 
  Installing       : bash-4.4.20-5.el8.x86_64                            32/172 
  Running scriptlet: bash-4.4.20-5.el8.x86_64                            32/172 
  Installing       : libsepol-2.9-3.el8.x86_64                           33/172 
  Running scriptlet: libsepol-2.9-3.el8.x86_64                           33/172 
  Installing       : zlib-1.2.11-25.el8.x86_64                           34/172 
  Installing       : info-6.5-7.el8.x86_64                               35/172 
  Installing       : bzip2-libs-1.0.6-28.el8_10.x86_64                   36/172 
  Installing       : xz-libs-5.2.4-4.el8_6.x86_64                        37/172 
  Installing       : gmp-1:6.1.2-11.el8.x86_64                           38/172 
  Running scriptlet: gmp-1:6.1.2-11.el8.x86_64                           38/172 
  Installing       : libstdc++-8.5.0-22.el8_10.x86_64                    39/172 
  Running scriptlet: libstdc++-8.5.0-22.el8_10.x86_64                    39/172 
  Installing       : libzstd-1.4.4-1.el8.x86_64                          40/172 
  Installing       : elfutils-libelf-0.190-2.el8.x86_64                  41/172 
  Installing       : libxcrypt-4.1.1-6.el8.x86_64                        42/172 
  Installing       : mpfr-3.1.6-1.el8.x86_64                             43/172 
  Running scriptlet: mpfr-3.1.6-1.el8.x86_64                             43/172 
  Installing       : readline-7.0-10.el8.x86_64                          44/172 
  Running scriptlet: readline-7.0-10.el8.x86_64                          44/172 
  Installing       : sqlite-libs-3.26.0-19.el8_9.x86_64                  45/172 
  Installing       : popt-1.18-1.el8.x86_64                              46/172 
  Installing       : libcap-2.48-6.el8_9.x86_64                          47/172 
  Installing       : libcom_err-1.45.6-5.el8.x86_64                      48/172 
  Running scriptlet: libcom_err-1.45.6-5.el8.x86_64                      48/172 
  Installing       : libuuid-2.32.1-46.el8.x86_64                        49/172 
  Running scriptlet: libuuid-2.32.1-46.el8.x86_64                        49/172 
  Installing       : chkconfig-1.19.2-1.el8.x86_64                       50/172 
  Installing       : libunistring-0.9.9-3.el8.x86_64                     51/172 
  Installing       : libattr-2.4.48-3.el8.x86_64                         52/172 
  Installing       : libacl-2.2.53-3.el8.x86_64                          53/172 
  Installing       : sed-4.5-5.el8.x86_64                                54/172 
  Running scriptlet: sed-4.5-5.el8.x86_64                                54/172 
  Installing       : libgpg-error-1.31-1.el8.x86_64                      55/172 
  Installing       : lua-libs-5.3.4-12.el8.x86_64                        56/172 
  Installing       : libffi-3.1-24.el8.x86_64                            57/172 
  Installing       : p11-kit-0.23.22-2.el8.x86_64                        58/172 
  Installing       : libidn2-2.2.0-1.el8.x86_64                          59/172 
  Installing       : libmpc-1.1.0-9.1.el8.x86_64                         60/172 
  Installing       : file-libs-5.33-26.el8.x86_64                        61/172 
  Installing       : file-5.33-26.el8.x86_64                             62/172 
  Installing       : libgcrypt-1.8.5-7.el8_6.x86_64                      63/172 
  Running scriptlet: libgcrypt-1.8.5-7.el8_6.x86_64                      63/172 
  Installing       : unzip-6.0-47.el8_10.x86_64                          64/172 
  Installing       : findutils-1:4.6.0-23.el8_10.x86_64                  65/172 
  Running scriptlet: findutils-1:4.6.0-23.el8_10.x86_64                  65/172 
  Installing       : elfutils-default-yama-scope-0.190-2.el8.noarch      66/172 
  Running scriptlet: elfutils-default-yama-scope-0.190-2.el8.noarch      66/172 
  Installing       : elfutils-libs-0.190-2.el8.x86_64                    67/172 
  Running scriptlet: glibc-headers-2.28-251.el8_10.11.x86_64             68/172 
  Installing       : glibc-headers-2.28-251.el8_10.11.x86_64             68/172 
  Installing       : lz4-libs-1.8.3-3.el8_4.x86_64                       69/172 
  Installing       : libcap-ng-0.7.11-1.el8.x86_64                       70/172 
  Installing       : audit-libs-3.1.2-1.el8.x86_64                       71/172 
  Installing       : pcre-8.42-6.el8.x86_64                              72/172 
  Installing       : grep-3.1-6.el8.x86_64                               73/172 
  Running scriptlet: grep-3.1-6.el8.x86_64                               73/172 
  Installing       : keyutils-libs-1.5.10-9.el8.x86_64                   74/172 
  Installing       : gdbm-libs-1:1.18-2.el8.x86_64                       75/172 
  Installing       : libtasn1-4.13-4.el8_7.x86_64                        76/172 
  Running scriptlet: libtasn1-4.13-4.el8_7.x86_64                        76/172 
  Installing       : p11-kit-trust-0.23.22-2.el8.x86_64                  77/172 
  Running scriptlet: p11-kit-trust-0.23.22-2.el8.x86_64                  77/172 
  Installing       : expat-2.2.5-16.el8_10.x86_64                        78/172 
  Installing       : gdbm-1:1.18-2.el8.x86_64                            79/172 
  Installing       : xz-5.2.4-4.el8_6.x86_64                             80/172 
  Installing       : libsemanage-2.9-10.el8_10.x86_64                    81/172 
  Installing       : elfutils-0.190-2.el8.x86_64                         82/172 
  Installing       : zip-3.0-23.el8.x86_64                               83/172 
  Installing       : cpp-8.5.0-22.el8_10.x86_64                          84/172 
  Running scriptlet: cpp-8.5.0-22.el8_10.x86_64                          84/172 
  Installing       : libassuan-2.5.1-3.el8.x86_64                        85/172 
  Installing       : libksba-1.3.5-9.el8_7.x86_64                        86/172 
  Installing       : tar-2:1.30-9.el8.x86_64                             87/172 
  Running scriptlet: tar-2:1.30-9.el8.x86_64                             87/172 
  Installing       : patch-2.7.6-11.el8.x86_64                           88/172 
  Installing       : dwz-0.12-10.el8.x86_64                              89/172 
  Installing       : zstd-1.4.4-1.el8.x86_64                             90/172 
  Installing       : libstdc++-devel-8.5.0-22.el8_10.x86_64              91/172 
  Installing       : nettle-3.4.1-7.el8.x86_64                           92/172 
  Running scriptlet: nettle-3.4.1-7.el8.x86_64                           92/172 
  Installing       : gnutls-3.6.16-8.el8_9.3.x86_64                      93/172 
  Installing       : isl-0.16.1-6.el8.x86_64                             94/172 
  Running scriptlet: isl-0.16.1-6.el8.x86_64                             94/172 
  Installing       : libxml2-2.9.7-18.el8_10.1.x86_64                    95/172 
  Installing       : bzip2-1.0.6-28.el8_10.x86_64                        96/172 
  Installing       : diffutils-3.6-6.el8.x86_64                          97/172 
  Running scriptlet: diffutils-3.6-6.el8.x86_64                          97/172 
  Installing       : coreutils-common-8.30-15.el8.x86_64                 98/172 
  Running scriptlet: coreutils-common-8.30-15.el8.x86_64                 98/172 
  Installing       : libgomp-8.5.0-22.el8_10.x86_64                      99/172 
  Running scriptlet: libgomp-8.5.0-22.el8_10.x86_64                      99/172 
  Installing       : libsigsegv-2.11-5.el8.x86_64                       100/172 
  Installing       : gawk-4.2.1-4.el8.x86_64                            101/172 
  Installing       : npth-1.5-4.el8.x86_64                              102/172 
  Installing       : libpkgconf-1.4.2-1.el8.x86_64                      103/172 
  Installing       : pkgconf-1.4.2-1.el8.x86_64                         104/172 
  Installing       : libtool-ltdl-2.4.6-25.el8.x86_64                   105/172 
  Running scriptlet: libtool-ltdl-2.4.6-25.el8.x86_64                   105/172 
  Installing       : brotli-1.0.6-3.el8.x86_64                          106/172 
  Installing       : cpio-2.12-11.el8.x86_64                            107/172 
  Installing       : libverto-0.3.2-2.el8.x86_64                        108/172 
  Installing       : ncurses-6.1-10.20180224.el8.x86_64                 109/172 
  Installing       : openssl-libs-1:1.1.1k-14.el8_6.x86_64              110/172 
  Running scriptlet: openssl-libs-1:1.1.1k-14.el8_6.x86_64              110/172 
  Installing       : coreutils-8.30-15.el8.x86_64                       111/172 
  Running scriptlet: ca-certificates-2024.2.69_v8.0.303-80.0.el8_10.n   112/172 
  Installing       : ca-certificates-2024.2.69_v8.0.303-80.0.el8_10.n   112/172 
  Running scriptlet: ca-certificates-2024.2.69_v8.0.303-80.0.el8_10.n   112/172 
  Installing       : libdb-5.3.28-42.el8_4.x86_64                       113/172 
  Running scriptlet: libdb-5.3.28-42.el8_4.x86_64                       113/172 
  Installing       : krb5-libs-1.18.2-30.el8_10.x86_64                  114/172 
  Installing       : libtirpc-1.1.4-12.el8_10.x86_64                    115/172 
  Running scriptlet: libtirpc-1.1.4-12.el8_10.x86_64                    115/172 
  Installing       : libblkid-2.32.1-46.el8.x86_64                      116/172 
  Running scriptlet: libblkid-2.32.1-46.el8.x86_64                      116/172 
  Installing       : libmount-2.32.1-46.el8.x86_64                      117/172 
  Running scriptlet: libmount-2.32.1-46.el8.x86_64                      117/172 
  Installing       : systemd-libs-239-82.el8_10.3.x86_64                118/172 
  Running scriptlet: systemd-libs-239-82.el8_10.3.x86_64                118/172 
  Installing       : libnsl2-1.2.0-2.20180605git4a062cf.el8.x86_64      119/172 
  Running scriptlet: libnsl2-1.2.0-2.20180605git4a062cf.el8.x86_64      119/172 
  Installing       : platform-python-setuptools-39.2.0-8.el8_10.noarc   120/172 
  Installing       : platform-python-3.6.8-69.el8_10.x86_64             121/172 
  Running scriptlet: platform-python-3.6.8-69.el8_10.x86_64             121/172 
  Installing       : python3-libs-3.6.8-69.el8_10.x86_64                122/172 
  Installing       : gzip-1.9-13.el8_5.x86_64                           123/172 
  Running scriptlet: gzip-1.9-13.el8_5.x86_64                           123/172 
  Installing       : cracklib-2.9.6-15.el8.x86_64                       124/172 
  Installing       : cracklib-dicts-2.9.6-15.el8.x86_64                 125/172 
  Installing       : shadow-utils-2:4.6-22.el8.x86_64                   126/172 
  Installing       : binutils-2.30-125.el8_10.x86_64                    127/172 
  Running scriptlet: binutils-2.30-125.el8_10.x86_64                    127/172 
  Running scriptlet: libutempter-1.1.6-14.el8.x86_64                    128/172 
  Installing       : libutempter-1.1.6-14.el8.x86_64                    128/172 
  Running scriptlet: tpm2-tss-2.3.2-6.el8.x86_64                        129/172 
  Installing       : tpm2-tss-2.3.2-6.el8.x86_64                        129/172 
  Running scriptlet: tpm2-tss-2.3.2-6.el8.x86_64                        129/172 
  Installing       : ima-evm-utils-1.3.2-12.el8.x86_64                  130/172 
  Installing       : libpwquality-1.4.4-6.el8.x86_64                    131/172 
  Installing       : pam-1.3.1-36.el8_10.x86_64                         132/172 
  Running scriptlet: pam-1.3.1-36.el8_10.x86_64                         132/172 
  Installing       : libusbx-1.0.23-4.el8.x86_64                        133/172 
  Installing       : glib2-2.56.4-165.el8_10.x86_64                     134/172 
  Installing       : libbabeltrace-1.5.4-4.el8.x86_64                   135/172 
  Running scriptlet: libbabeltrace-1.5.4-4.el8.x86_64                   135/172 
  Installing       : libfdisk-2.32.1-46.el8.x86_64                      136/172 
  Running scriptlet: libfdisk-2.32.1-46.el8.x86_64                      136/172 
  Installing       : cyrus-sasl-lib-2.1.27-6.el8_5.x86_64               137/172 
  Running scriptlet: cyrus-sasl-lib-2.1.27-6.el8_5.x86_64               137/172 
  Installing       : openldap-2.4.46-20.el8_10.x86_64                   138/172 
  Installing       : gnupg2-2.2.20-3.el8_6.x86_64                       139/172 
  Installing       : libssh-0.9.6-14.el8.x86_64                         140/172 
  Installing       : libdb-utils-5.3.28-42.el8_4.x86_64                 141/172 
  Installing       : libarchive-3.3.3-5.el8.x86_64                      142/172 
  Installing       : libsmartcols-2.32.1-46.el8.x86_64                  143/172 
  Running scriptlet: libsmartcols-2.32.1-46.el8.x86_64                  143/172 
  Installing       : libnghttp2-1.33.0-6.el8_10.1.x86_64                144/172 
  Installing       : libatomic_ops-7.6.2-3.el8.x86_64                   145/172 
  Installing       : gc-7.6.4-3.el8.x86_64                              146/172 
  Installing       : guile-5:2.0.14-7.el8.x86_64                        147/172 
  Running scriptlet: guile-5:2.0.14-7.el8.x86_64                        147/172 
  Installing       : libipt-1.6.1-8.el8.x86_64                          148/172 
  Installing       : publicsuffix-list-dafsa-20180723-1.el8.noarch      149/172 
  Installing       : libpsl-0.20.2-6.el8.x86_64                         150/172 
  Installing       : libcurl-7.61.1-34.el8_10.3.x86_64                  151/172 
  Installing       : curl-7.61.1-34.el8_10.3.x86_64                     152/172 
  Installing       : rpm-libs-4.14.3-32.el8_10.x86_64                   153/172 
  Running scriptlet: rpm-libs-4.14.3-32.el8_10.x86_64                   153/172 
  Installing       : rpm-4.14.3-32.el8_10.x86_64                        154/172 
  Installing       : efi-srpm-macros-3-3.el8.noarch                     155/172 
  Installing       : lua-srpm-macros-1-13.el8.noarch                    156/172 
  Installing       : rpm-build-libs-4.14.3-32.el8_10.x86_64             157/172 
  Running scriptlet: rpm-build-libs-4.14.3-32.el8_10.x86_64             157/172 
  Installing       : gdb-headless-8.2-20.el8.x86_64                     158/172 
  Installing       : pkgconf-m4-1.4.2-1.el8.noarch                      159/172 
  Installing       : pkgconf-pkg-config-1.4.2-1.el8.x86_64              160/172 
  Installing       : glibc-devel-2.28-251.el8_10.11.x86_64              161/172 
  Running scriptlet: glibc-devel-2.28-251.el8_10.11.x86_64              161/172 
  Installing       : libxcrypt-devel-4.1.1-6.el8.x86_64                 162/172 
  Installing       : gcc-8.5.0-22.el8_10.x86_64                         163/172 
  Running scriptlet: gcc-8.5.0-22.el8_10.x86_64                         163/172 
  Installing       : annobin-11.13-2.el8.x86_64                         164/172 
  Installing       : gcc-plugin-annobin-8.5.0-22.el8_10.x86_64          165/172 
  Installing       : redhat-rpm-config-131-1.el8.noarch                 166/172 
  Running scriptlet: redhat-rpm-config-131-1.el8.noarch                 166/172 
  Installing       : rpm-build-4.14.3-32.el8_10.x86_64                  167/172 
  Installing       : gcc-c++-8.5.0-22.el8_10.x86_64                     168/172 
  Installing       : epel-rpm-macros-8-41.noarch                        169/172 
  Installing       : util-linux-2.32.1-46.el8.x86_64                    170/172 
  Running scriptlet: util-linux-2.32.1-46.el8.x86_64                    170/172 
  Installing       : which-2.21-20.el8.x86_64                           171/172 
  Installing       : make-1:4.2.1-11.el8.x86_64                         172/172 
  Running scriptlet: make-1:4.2.1-11.el8.x86_64                         172/172 
  Running scriptlet: filesystem-3.8-6.el8.x86_64                        172/172 
  Running scriptlet: glibc-all-langpacks-2.28-251.el8_10.11.x86_64      172/172 
  Running scriptlet: ca-certificates-2024.2.69_v8.0.303-80.0.el8_10.n   172/172 
  Running scriptlet: guile-5:2.0.14-7.el8.x86_64                        172/172 
  Running scriptlet: glibc-common-2.28-251.el8_10.11.x86_64             172/172 
  Running scriptlet: info-6.5-7.el8.x86_64                              172/172 
  Running scriptlet: glib2-2.56.4-165.el8_10.x86_64                     172/172 
  Verifying        : cracklib-2.9.6-15.el8.x86_64                         1/172 
  Verifying        : cracklib-dicts-2.9.6-15.el8.x86_64                   2/172 
  Verifying        : grep-3.1-6.el8.x86_64                                3/172 
  Verifying        : libassuan-2.5.1-3.el8.x86_64                         4/172 
  Verifying        : libattr-2.4.48-3.el8.x86_64                          5/172 
  Verifying        : libsigsegv-2.11-5.el8.x86_64                         6/172 
  Verifying        : libunistring-0.9.9-3.el8.x86_64                      7/172 
  Verifying        : libutempter-1.1.6-14.el8.x86_64                      8/172 
  Verifying        : mpfr-3.1.6-1.el8.x86_64                              9/172 
  Verifying        : npth-1.5-4.el8.x86_64                               10/172 
  Verifying        : pkgconf-1.4.2-1.el8.x86_64                          11/172 
  Verifying        : pkgconf-pkg-config-1.4.2-1.el8.x86_64               12/172 
  Verifying        : readline-7.0-10.el8.x86_64                          13/172 
  Verifying        : zip-3.0-23.el8.x86_64                               14/172 
  Verifying        : basesystem-11-5.el8.noarch                          15/172 
  Verifying        : libgpg-error-1.31-1.el8.x86_64                      16/172 
  Verifying        : libnsl2-1.2.0-2.20180605git4a062cf.el8.x86_64       17/172 
  Verifying        : libpkgconf-1.4.2-1.el8.x86_64                       18/172 
  Verifying        : libtool-ltdl-2.4.6-25.el8.x86_64                    19/172 
  Verifying        : pkgconf-m4-1.4.2-1.el8.noarch                       20/172 
  Verifying        : publicsuffix-list-dafsa-20180723-1.el8.noarch       21/172 
  Verifying        : diffutils-3.6-6.el8.x86_64                          22/172 
  Verifying        : libidn2-2.2.0-1.el8.x86_64                          23/172 
  Verifying        : patch-2.7.6-11.el8.x86_64                           24/172 
  Verifying        : libusbx-1.0.23-4.el8.x86_64                         25/172 
  Verifying        : libzstd-1.4.4-1.el8.x86_64                          26/172 
  Verifying        : libpsl-0.20.2-6.el8.x86_64                          27/172 
  Verifying        : popt-1.18-1.el8.x86_64                              28/172 
  Verifying        : brotli-1.0.6-3.el8.x86_64                           29/172 
  Verifying        : ima-evm-utils-1.3.2-12.el8.x86_64                   30/172 
  Verifying        : lz4-libs-1.8.3-3.el8_4.x86_64                       31/172 
  Verifying        : filesystem-3.8-6.el8.x86_64                         32/172 
  Verifying        : libcap-ng-0.7.11-1.el8.x86_64                       33/172 
  Verifying        : libdb-5.3.28-42.el8_4.x86_64                        34/172 
  Verifying        : libdb-utils-5.3.28-42.el8_4.x86_64                  35/172 
  Verifying        : libxcrypt-4.1.1-6.el8.x86_64                        36/172 
  Verifying        : libxcrypt-devel-4.1.1-6.el8.x86_64                  37/172 
  Verifying        : nettle-3.4.1-7.el8.x86_64                           38/172 
  Verifying        : pcre-8.42-6.el8.x86_64                              39/172 
  Verifying        : cyrus-sasl-lib-2.1.27-6.el8_5.x86_64                40/172 
  Verifying        : gzip-1.9-13.el8_5.x86_64                            41/172 
  Verifying        : keyutils-libs-1.5.10-9.el8.x86_64                   42/172 
  Verifying        : libsepol-2.9-3.el8.x86_64                           43/172 
  Verifying        : lua-libs-5.3.4-12.el8.x86_64                        44/172 
  Verifying        : cpio-2.12-11.el8.x86_64                             45/172 
  Verifying        : gawk-4.2.1-4.el8.x86_64                             46/172 
  Verifying        : info-6.5-7.el8.x86_64                               47/172 
  Verifying        : make-1:4.2.1-11.el8.x86_64                          48/172 
  Verifying        : sed-4.5-5.el8.x86_64                                49/172 
  Verifying        : xz-5.2.4-4.el8_6.x86_64                             50/172 
  Verifying        : xz-libs-5.2.4-4.el8_6.x86_64                        51/172 
  Verifying        : gdbm-libs-1:1.18-2.el8.x86_64                       52/172 
  Verifying        : gnupg2-2.2.20-3.el8_6.x86_64                        53/172 
  Verifying        : libbabeltrace-1.5.4-4.el8.x86_64                    54/172 
  Verifying        : libcom_err-1.45.6-5.el8.x86_64                      55/172 
  Verifying        : libgcrypt-1.8.5-7.el8_6.x86_64                      56/172 
  Verifying        : libverto-0.3.2-2.el8.x86_64                         57/172 
  Verifying        : pcre2-10.32-3.el8_6.x86_64                          58/172 
  Verifying        : gdbm-1:1.18-2.el8.x86_64                            59/172 
  Verifying        : libksba-1.3.5-9.el8_7.x86_64                        60/172 
  Verifying        : libtasn1-4.13-4.el8_7.x86_64                        61/172 
  Verifying        : coreutils-8.30-15.el8.x86_64                        62/172 
  Verifying        : coreutils-common-8.30-15.el8.x86_64                 63/172 
  Verifying        : libarchive-3.3.3-5.el8.x86_64                       64/172 
  Verifying        : libffi-3.1-24.el8.x86_64                            65/172 
  Verifying        : libpwquality-1.4.4-6.el8.x86_64                     66/172 
  Verifying        : setup-2.12.2-9.el8.noarch                           67/172 
  Verifying        : tar-2:1.30-9.el8.x86_64                             68/172 
  Verifying        : chkconfig-1.19.2-1.el8.x86_64                       69/172 
  Verifying        : crypto-policies-20230731-1.git3177e06.el8.noarch    70/172 
  Verifying        : ncurses-libs-6.1-10.20180224.el8.x86_64             71/172 
  Verifying        : which-2.21-20.el8.x86_64                            72/172 
  Verifying        : gnutls-3.6.16-8.el8_9.3.x86_64                      73/172 
  Verifying        : libcap-2.48-6.el8_9.x86_64                          74/172 
  Verifying        : ncurses-6.1-10.20180224.el8.x86_64                  75/172 
  Verifying        : ncurses-base-6.1-10.20180224.el8.noarch             76/172 
  Verifying        : sqlite-libs-3.26.0-19.el8_9.x86_64                  77/172 
  Verifying        : zlib-1.2.11-25.el8.x86_64                           78/172 
  Verifying        : audit-libs-3.1.2-1.el8.x86_64                       79/172 
  Verifying        : bash-4.4.20-5.el8.x86_64                            80/172 
  Verifying        : elfutils-0.190-2.el8.x86_64                         81/172 
  Verifying        : elfutils-default-yama-scope-0.190-2.el8.noarch      82/172 
  Verifying        : elfutils-libelf-0.190-2.el8.x86_64                  83/172 
  Verifying        : elfutils-libs-0.190-2.el8.x86_64                    84/172 
  Verifying        : file-5.33-26.el8.x86_64                             85/172 
  Verifying        : file-libs-5.33-26.el8.x86_64                        86/172 
  Verifying        : gmp-1:6.1.2-11.el8.x86_64                           87/172 
  Verifying        : libacl-2.2.53-3.el8.x86_64                          88/172 
  Verifying        : libblkid-2.32.1-46.el8.x86_64                       89/172 
  Verifying        : libfdisk-2.32.1-46.el8.x86_64                       90/172 
  Verifying        : libmount-2.32.1-46.el8.x86_64                       91/172 
  Verifying        : libsmartcols-2.32.1-46.el8.x86_64                   92/172 
  Verifying        : libssh-0.9.6-14.el8.x86_64                          93/172 
  Verifying        : libssh-config-0.9.6-14.el8.noarch                   94/172 
  Verifying        : libuuid-2.32.1-46.el8.x86_64                        95/172 
  Verifying        : p11-kit-0.23.22-2.el8.x86_64                        96/172 
  Verifying        : p11-kit-trust-0.23.22-2.el8.x86_64                  97/172 
  Verifying        : python3-pip-wheel-9.0.3-24.el8.noarch               98/172 
  Verifying        : shadow-utils-2:4.6-22.el8.x86_64                    99/172 
  Verifying        : tpm2-tss-2.3.2-6.el8.x86_64                        100/172 
  Verifying        : util-linux-2.32.1-46.el8.x86_64                    101/172 
  Verifying        : ca-certificates-2024.2.69_v8.0.303-80.0.el8_10.n   102/172 
  Verifying        : findutils-1:4.6.0-23.el8_10.x86_64                 103/172 
  Verifying        : libgcc-8.5.0-22.el8_10.x86_64                      104/172 
  Verifying        : libgomp-8.5.0-22.el8_10.x86_64                     105/172 
  Verifying        : libnghttp2-1.33.0-6.el8_10.1.x86_64                106/172 
  Verifying        : libstdc++-8.5.0-22.el8_10.x86_64                   107/172 
  Verifying        : libtirpc-1.1.4-12.el8_10.x86_64                    108/172 
  Verifying        : libxml2-2.9.7-18.el8_10.1.x86_64                   109/172 
  Verifying        : platform-python-setuptools-39.2.0-8.el8_10.noarc   110/172 
  Verifying        : python3-setuptools-wheel-39.2.0-8.el8_10.noarch    111/172 
  Verifying        : redhat-release-8.10-0.3.el8.x86_64                 112/172 
  Verifying        : binutils-2.30-125.el8_10.x86_64                    113/172 
  Verifying        : expat-2.2.5-16.el8_10.x86_64                       114/172 
  Verifying        : glib2-2.56.4-165.el8_10.x86_64                     115/172 
  Verifying        : krb5-libs-1.18.2-30.el8_10.x86_64                  116/172 
  Verifying        : openldap-2.4.46-20.el8_10.x86_64                   117/172 
  Verifying        : openssl-libs-1:1.1.1k-14.el8_6.x86_64              118/172 
  Verifying        : tzdata-2024b-4.el8.noarch                          119/172 
  Verifying        : pam-1.3.1-36.el8_10.x86_64                         120/172 
  Verifying        : platform-python-3.6.8-69.el8_10.x86_64             121/172 
  Verifying        : python3-libs-3.6.8-69.el8_10.x86_64                122/172 
  Verifying        : libselinux-2.9-9.el8_10.x86_64                     123/172 
  Verifying        : systemd-libs-239-82.el8_10.3.x86_64                124/172 
  Verifying        : unzip-6.0-47.el8_10.x86_64                         125/172 
  Verifying        : libsemanage-2.9-10.el8_10.x86_64                   126/172 
  Verifying        : rpm-4.14.3-32.el8_10.x86_64                        127/172 
  Verifying        : rpm-build-libs-4.14.3-32.el8_10.x86_64             128/172 
  Verifying        : rpm-libs-4.14.3-32.el8_10.x86_64                   129/172 
  Verifying        : kernel-headers-4.18.0-553.36.1.el8_10.x86_64       130/172 
  Verifying        : bzip2-1.0.6-28.el8_10.x86_64                       131/172 
  Verifying        : bzip2-libs-1.0.6-28.el8_10.x86_64                  132/172 
  Verifying        : curl-7.61.1-34.el8_10.3.x86_64                     133/172 
  Verifying        : libcurl-7.61.1-34.el8_10.3.x86_64                  134/172 
  Verifying        : glibc-2.28-251.el8_10.11.x86_64                    135/172 
  Verifying        : glibc-all-langpacks-2.28-251.el8_10.11.x86_64      136/172 
  Verifying        : glibc-common-2.28-251.el8_10.11.x86_64             137/172 
  Verifying        : glibc-devel-2.28-251.el8_10.11.x86_64              138/172 
  Verifying        : glibc-gconv-extra-2.28-251.el8_10.11.x86_64        139/172 
  Verifying        : glibc-headers-2.28-251.el8_10.11.x86_64            140/172 
  Verifying        : ghc-srpm-macros-1.4.2-7.el8.noarch                 141/172 
  Verifying        : ocaml-srpm-macros-5-4.el8.noarch                   142/172 
  Verifying        : openblas-srpm-macros-2-2.el8.noarch                143/172 
  Verifying        : perl-srpm-macros-1-25.el8.noarch                   144/172 
  Verifying        : rust-srpm-macros-5-2.el8.noarch                    145/172 
  Verifying        : libatomic_ops-7.6.2-3.el8.x86_64                   146/172 
  Verifying        : gc-7.6.4-3.el8.x86_64                              147/172 
  Verifying        : guile-5:2.0.14-7.el8.x86_64                        148/172 
  Verifying        : isl-0.16.1-6.el8.x86_64                            149/172 
  Verifying        : libipt-1.6.1-8.el8.x86_64                          150/172 
  Verifying        : zstd-1.4.4-1.el8.x86_64                            151/172 
  Verifying        : libmpc-1.1.0-9.1.el8.x86_64                        152/172 
  Verifying        : efi-srpm-macros-3-3.el8.noarch                     153/172 
  Verifying        : go-srpm-macros-2-17.el8.noarch                     154/172 
  Verifying        : dwz-0.12-10.el8.x86_64                             155/172 
  Verifying        : qt5-srpm-macros-5.15.3-1.el8.noarch                156/172 
  Verifying        : python-rpm-macros-3-45.el8.noarch                  157/172 
  Verifying        : python3-rpm-macros-3-45.el8.noarch                 158/172 
  Verifying        : redhat-rpm-config-131-1.el8.noarch                 159/172 
  Verifying        : python-srpm-macros-3-45.el8.noarch                 160/172 
  Verifying        : annobin-11.13-2.el8.x86_64                         161/172 
  Verifying        : gdb-headless-8.2-20.el8.x86_64                     162/172 
  Verifying        : cpp-8.5.0-22.el8_10.x86_64                         163/172 
  Verifying        : gcc-8.5.0-22.el8_10.x86_64                         164/172 
  Verifying        : gcc-c++-8.5.0-22.el8_10.x86_64                     165/172 
  Verifying        : gcc-plugin-annobin-8.5.0-22.el8_10.x86_64          166/172 
  Verifying        : libstdc++-devel-8.5.0-22.el8_10.x86_64             167/172 
  Verifying        : rpm-build-4.14.3-32.el8_10.x86_64                  168/172 
  Verifying        : ansible-srpm-macros-1-12.el8.noarch                169/172 
  Verifying        : epel-rpm-macros-8-41.noarch                        170/172 
  Verifying        : fpc-srpm-macros-1.3-1.el8.noarch                   171/172 
  Verifying        : lua-srpm-macros-1-13.el8.noarch                    172/172 
Installed products updated.

Installed:
  annobin-11.13-2.el8.x86_64                                                    
  ansible-srpm-macros-1-12.el8.noarch                                           
  audit-libs-3.1.2-1.el8.x86_64                                                 
  basesystem-11-5.el8.noarch                                                    
  bash-4.4.20-5.el8.x86_64                                                      
  binutils-2.30-125.el8_10.x86_64                                               
  brotli-1.0.6-3.el8.x86_64                                                     
  bzip2-1.0.6-28.el8_10.x86_64                                                  
  bzip2-libs-1.0.6-28.el8_10.x86_64                                             
  ca-certificates-2024.2.69_v8.0.303-80.0.el8_10.noarch                         
  chkconfig-1.19.2-1.el8.x86_64                                                 
  coreutils-8.30-15.el8.x86_64                                                  
  coreutils-common-8.30-15.el8.x86_64                                           
  cpio-2.12-11.el8.x86_64                                                       
  cpp-8.5.0-22.el8_10.x86_64                                                    
  cracklib-2.9.6-15.el8.x86_64                                                  
  cracklib-dicts-2.9.6-15.el8.x86_64                                            
  crypto-policies-20230731-1.git3177e06.el8.noarch                              
  curl-7.61.1-34.el8_10.3.x86_64                                                
  cyrus-sasl-lib-2.1.27-6.el8_5.x86_64                                          
  diffutils-3.6-6.el8.x86_64                                                    
  dwz-0.12-10.el8.x86_64                                                        
  efi-srpm-macros-3-3.el8.noarch                                                
  elfutils-0.190-2.el8.x86_64                                                   
  elfutils-default-yama-scope-0.190-2.el8.noarch                                
  elfutils-libelf-0.190-2.el8.x86_64                                            
  elfutils-libs-0.190-2.el8.x86_64                                              
  epel-rpm-macros-8-41.noarch                                                   
  expat-2.2.5-16.el8_10.x86_64                                                  
  file-5.33-26.el8.x86_64                                                       
  file-libs-5.33-26.el8.x86_64                                                  
  filesystem-3.8-6.el8.x86_64                                                   
  findutils-1:4.6.0-23.el8_10.x86_64                                            
  fpc-srpm-macros-1.3-1.el8.noarch                                              
  gawk-4.2.1-4.el8.x86_64                                                       
  gc-7.6.4-3.el8.x86_64                                                         
  gcc-8.5.0-22.el8_10.x86_64                                                    
  gcc-c++-8.5.0-22.el8_10.x86_64                                                
  gcc-plugin-annobin-8.5.0-22.el8_10.x86_64                                     
  gdb-headless-8.2-20.el8.x86_64                                                
  gdbm-1:1.18-2.el8.x86_64                                                      
  gdbm-libs-1:1.18-2.el8.x86_64                                                 
  ghc-srpm-macros-1.4.2-7.el8.noarch                                            
  glib2-2.56.4-165.el8_10.x86_64                                                
  glibc-2.28-251.el8_10.11.x86_64                                               
  glibc-all-langpacks-2.28-251.el8_10.11.x86_64                                 
  glibc-common-2.28-251.el8_10.11.x86_64                                        
  glibc-devel-2.28-251.el8_10.11.x86_64                                         
  glibc-gconv-extra-2.28-251.el8_10.11.x86_64                                   
  glibc-headers-2.28-251.el8_10.11.x86_64                                       
  gmp-1:6.1.2-11.el8.x86_64                                                     
  gnupg2-2.2.20-3.el8_6.x86_64                                                  
  gnutls-3.6.16-8.el8_9.3.x86_64                                                
  go-srpm-macros-2-17.el8.noarch                                                
  grep-3.1-6.el8.x86_64                                                         
  guile-5:2.0.14-7.el8.x86_64                                                   
  gzip-1.9-13.el8_5.x86_64                                                      
  ima-evm-utils-1.3.2-12.el8.x86_64                                             
  info-6.5-7.el8.x86_64                                                         
  isl-0.16.1-6.el8.x86_64                                                       
  kernel-headers-4.18.0-553.36.1.el8_10.x86_64                                  
  keyutils-libs-1.5.10-9.el8.x86_64                                             
  krb5-libs-1.18.2-30.el8_10.x86_64                                             
  libacl-2.2.53-3.el8.x86_64                                                    
  libarchive-3.3.3-5.el8.x86_64                                                 
  libassuan-2.5.1-3.el8.x86_64                                                  
  libatomic_ops-7.6.2-3.el8.x86_64                                              
  libattr-2.4.48-3.el8.x86_64                                                   
  libbabeltrace-1.5.4-4.el8.x86_64                                              
  libblkid-2.32.1-46.el8.x86_64                                                 
  libcap-2.48-6.el8_9.x86_64                                                    
  libcap-ng-0.7.11-1.el8.x86_64                                                 
  libcom_err-1.45.6-5.el8.x86_64                                                
  libcurl-7.61.1-34.el8_10.3.x86_64                                             
  libdb-5.3.28-42.el8_4.x86_64                                                  
  libdb-utils-5.3.28-42.el8_4.x86_64                                            
  libfdisk-2.32.1-46.el8.x86_64                                                 
  libffi-3.1-24.el8.x86_64                                                      
  libgcc-8.5.0-22.el8_10.x86_64                                                 
  libgcrypt-1.8.5-7.el8_6.x86_64                                                
  libgomp-8.5.0-22.el8_10.x86_64                                                
  libgpg-error-1.31-1.el8.x86_64                                                
  libidn2-2.2.0-1.el8.x86_64                                                    
  libipt-1.6.1-8.el8.x86_64                                                     
  libksba-1.3.5-9.el8_7.x86_64                                                  
  libmount-2.32.1-46.el8.x86_64                                                 
  libmpc-1.1.0-9.1.el8.x86_64                                                   
  libnghttp2-1.33.0-6.el8_10.1.x86_64                                           
  libnsl2-1.2.0-2.20180605git4a062cf.el8.x86_64                                 
  libpkgconf-1.4.2-1.el8.x86_64                                                 
  libpsl-0.20.2-6.el8.x86_64                                                    
  libpwquality-1.4.4-6.el8.x86_64                                               
  libselinux-2.9-9.el8_10.x86_64                                                
  libsemanage-2.9-10.el8_10.x86_64                                              
  libsepol-2.9-3.el8.x86_64                                                     
  libsigsegv-2.11-5.el8.x86_64                                                  
  libsmartcols-2.32.1-46.el8.x86_64                                             
  libssh-0.9.6-14.el8.x86_64                                                    
  libssh-config-0.9.6-14.el8.noarch                                             
  libstdc++-8.5.0-22.el8_10.x86_64                                              
  libstdc++-devel-8.5.0-22.el8_10.x86_64                                        
  libtasn1-4.13-4.el8_7.x86_64                                                  
  libtirpc-1.1.4-12.el8_10.x86_64                                               
  libtool-ltdl-2.4.6-25.el8.x86_64                                              
  libunistring-0.9.9-3.el8.x86_64                                               
  libusbx-1.0.23-4.el8.x86_64                                                   
  libutempter-1.1.6-14.el8.x86_64                                               
  libuuid-2.32.1-46.el8.x86_64                                                  
  libverto-0.3.2-2.el8.x86_64                                                   
  libxcrypt-4.1.1-6.el8.x86_64                                                  
  libxcrypt-devel-4.1.1-6.el8.x86_64                                            
  libxml2-2.9.7-18.el8_10.1.x86_64                                              
  libzstd-1.4.4-1.el8.x86_64                                                    
  lua-libs-5.3.4-12.el8.x86_64                                                  
  lua-srpm-macros-1-13.el8.noarch                                               
  lz4-libs-1.8.3-3.el8_4.x86_64                                                 
  make-1:4.2.1-11.el8.x86_64                                                    
  mpfr-3.1.6-1.el8.x86_64                                                       
  ncurses-6.1-10.20180224.el8.x86_64                                            
  ncurses-base-6.1-10.20180224.el8.noarch                                       
  ncurses-libs-6.1-10.20180224.el8.x86_64                                       
  nettle-3.4.1-7.el8.x86_64                                                     
  npth-1.5-4.el8.x86_64                                                         
  ocaml-srpm-macros-5-4.el8.noarch                                              
  openblas-srpm-macros-2-2.el8.noarch                                           
  openldap-2.4.46-20.el8_10.x86_64                                              
  openssl-libs-1:1.1.1k-14.el8_6.x86_64                                         
  p11-kit-0.23.22-2.el8.x86_64                                                  
  p11-kit-trust-0.23.22-2.el8.x86_64                                            
  pam-1.3.1-36.el8_10.x86_64                                                    
  patch-2.7.6-11.el8.x86_64                                                     
  pcre-8.42-6.el8.x86_64                                                        
  pcre2-10.32-3.el8_6.x86_64                                                    
  perl-srpm-macros-1-25.el8.noarch                                              
  pkgconf-1.4.2-1.el8.x86_64                                                    
  pkgconf-m4-1.4.2-1.el8.noarch                                                 
  pkgconf-pkg-config-1.4.2-1.el8.x86_64                                         
  platform-python-3.6.8-69.el8_10.x86_64                                        
  platform-python-setuptools-39.2.0-8.el8_10.noarch                             
  popt-1.18-1.el8.x86_64                                                        
  publicsuffix-list-dafsa-20180723-1.el8.noarch                                 
  python-rpm-macros-3-45.el8.noarch                                             
  python-srpm-macros-3-45.el8.noarch                                            
  python3-libs-3.6.8-69.el8_10.x86_64                                           
  python3-pip-wheel-9.0.3-24.el8.noarch                                         
  python3-rpm-macros-3-45.el8.noarch                                            
  python3-setuptools-wheel-39.2.0-8.el8_10.noarch                               
  qt5-srpm-macros-5.15.3-1.el8.noarch                                           
  readline-7.0-10.el8.x86_64                                                    
  redhat-release-8.10-0.3.el8.x86_64                                            
  redhat-rpm-config-131-1.el8.noarch                                            
  rpm-4.14.3-32.el8_10.x86_64                                                   
  rpm-build-4.14.3-32.el8_10.x86_64                                             
  rpm-build-libs-4.14.3-32.el8_10.x86_64                                        
  rpm-libs-4.14.3-32.el8_10.x86_64                                              
  rust-srpm-macros-5-2.el8.noarch                                               
  sed-4.5-5.el8.x86_64                                                          
  setup-2.12.2-9.el8.noarch                                                     
  shadow-utils-2:4.6-22.el8.x86_64                                              
  sqlite-libs-3.26.0-19.el8_9.x86_64                                            
  systemd-libs-239-82.el8_10.3.x86_64                                           
  tar-2:1.30-9.el8.x86_64                                                       
  tpm2-tss-2.3.2-6.el8.x86_64                                                   
  tzdata-2024b-4.el8.noarch                                                     
  unzip-6.0-47.el8_10.x86_64                                                    
  util-linux-2.32.1-46.el8.x86_64                                               
  which-2.21-20.el8.x86_64                                                      
  xz-5.2.4-4.el8_6.x86_64                                                       
  xz-libs-5.2.4-4.el8_6.x86_64                                                  
  zip-3.0-23.el8.x86_64                                                         
  zlib-1.2.11-25.el8.x86_64                                                     
  zstd-1.4.4-1.el8.x86_64                                                       

Complete!
Finish: installing minimal buildroot with dnf
Start: creating root cache
Finish: creating root cache
Finish: chroot init
INFO: Installed packages:
INFO: annobin-11.13-2.el8.x86_64
ansible-srpm-macros-1-12.el8.noarch
audit-libs-3.1.2-1.el8.x86_64
basesystem-11-5.el8.noarch
bash-4.4.20-5.el8.x86_64
binutils-2.30-125.el8_10.x86_64
brotli-1.0.6-3.el8.x86_64
bzip2-1.0.6-28.el8_10.x86_64
bzip2-libs-1.0.6-28.el8_10.x86_64
ca-certificates-2024.2.69_v8.0.303-80.0.el8_10.noarch
chkconfig-1.19.2-1.el8.x86_64
coreutils-8.30-15.el8.x86_64
coreutils-common-8.30-15.el8.x86_64
cpio-2.12-11.el8.x86_64
cpp-8.5.0-22.el8_10.x86_64
cracklib-2.9.6-15.el8.x86_64
cracklib-dicts-2.9.6-15.el8.x86_64
crypto-policies-20230731-1.git3177e06.el8.noarch
curl-7.61.1-34.el8_10.3.x86_64
cyrus-sasl-lib-2.1.27-6.el8_5.x86_64
diffutils-3.6-6.el8.x86_64
dwz-0.12-10.el8.x86_64
efi-srpm-macros-3-3.el8.noarch
elfutils-0.190-2.el8.x86_64
elfutils-default-yama-scope-0.190-2.el8.noarch
elfutils-libelf-0.190-2.el8.x86_64
elfutils-libs-0.190-2.el8.x86_64
epel-rpm-macros-8-41.noarch
expat-2.2.5-16.el8_10.x86_64
file-5.33-26.el8.x86_64
file-libs-5.33-26.el8.x86_64
filesystem-3.8-6.el8.x86_64
findutils-4.6.0-23.el8_10.x86_64
fpc-srpm-macros-1.3-1.el8.noarch
gawk-4.2.1-4.el8.x86_64
gc-7.6.4-3.el8.x86_64
gcc-8.5.0-22.el8_10.x86_64
gcc-c++-8.5.0-22.el8_10.x86_64
gcc-plugin-annobin-8.5.0-22.el8_10.x86_64
gdb-headless-8.2-20.el8.x86_64
gdbm-1.18-2.el8.x86_64
gdbm-libs-1.18-2.el8.x86_64
ghc-srpm-macros-1.4.2-7.el8.noarch
glib2-2.56.4-165.el8_10.x86_64
glibc-2.28-251.el8_10.11.x86_64
glibc-all-langpacks-2.28-251.el8_10.11.x86_64
glibc-common-2.28-251.el8_10.11.x86_64
glibc-devel-2.28-251.el8_10.11.x86_64
glibc-gconv-extra-2.28-251.el8_10.11.x86_64
glibc-headers-2.28-251.el8_10.11.x86_64
gmp-6.1.2-11.el8.x86_64
gnupg2-2.2.20-3.el8_6.x86_64
gnutls-3.6.16-8.el8_9.3.x86_64
go-srpm-macros-2-17.el8.noarch
gpg-pubkey-2f86d6a1-5cf7cefb
gpg-pubkey-2fa658e0-45700c69
gpg-pubkey-fd431d51-4ae0493b
grep-3.1-6.el8.x86_64
guile-2.0.14-7.el8.x86_64
gzip-1.9-13.el8_5.x86_64
ima-evm-utils-1.3.2-12.el8.x86_64
info-6.5-7.el8.x86_64
isl-0.16.1-6.el8.x86_64
kernel-headers-4.18.0-553.36.1.el8_10.x86_64
keyutils-libs-1.5.10-9.el8.x86_64
krb5-libs-1.18.2-30.el8_10.x86_64
libacl-2.2.53-3.el8.x86_64
libarchive-3.3.3-5.el8.x86_64
libassuan-2.5.1-3.el8.x86_64
libatomic_ops-7.6.2-3.el8.x86_64
libattr-2.4.48-3.el8.x86_64
libbabeltrace-1.5.4-4.el8.x86_64
libblkid-2.32.1-46.el8.x86_64
libcap-2.48-6.el8_9.x86_64
libcap-ng-0.7.11-1.el8.x86_64
libcom_err-1.45.6-5.el8.x86_64
libcurl-7.61.1-34.el8_10.3.x86_64
libdb-5.3.28-42.el8_4.x86_64
libdb-utils-5.3.28-42.el8_4.x86_64
libfdisk-2.32.1-46.el8.x86_64
libffi-3.1-24.el8.x86_64
libgcc-8.5.0-22.el8_10.x86_64
libgcrypt-1.8.5-7.el8_6.x86_64
libgomp-8.5.0-22.el8_10.x86_64
libgpg-error-1.31-1.el8.x86_64
libidn2-2.2.0-1.el8.x86_64
libipt-1.6.1-8.el8.x86_64
libksba-1.3.5-9.el8_7.x86_64
libmount-2.32.1-46.el8.x86_64
libmpc-1.1.0-9.1.el8.x86_64
libnghttp2-1.33.0-6.el8_10.1.x86_64
libnsl2-1.2.0-2.20180605git4a062cf.el8.x86_64
libpkgconf-1.4.2-1.el8.x86_64
libpsl-0.20.2-6.el8.x86_64
libpwquality-1.4.4-6.el8.x86_64
libselinux-2.9-9.el8_10.x86_64
libsemanage-2.9-10.el8_10.x86_64
libsepol-2.9-3.el8.x86_64
libsigsegv-2.11-5.el8.x86_64
libsmartcols-2.32.1-46.el8.x86_64
libssh-0.9.6-14.el8.x86_64
libssh-config-0.9.6-14.el8.noarch
libstdc++-8.5.0-22.el8_10.x86_64
libstdc++-devel-8.5.0-22.el8_10.x86_64
libtasn1-4.13-4.el8_7.x86_64
libtirpc-1.1.4-12.el8_10.x86_64
libtool-ltdl-2.4.6-25.el8.x86_64
libunistring-0.9.9-3.el8.x86_64
libusbx-1.0.23-4.el8.x86_64
libutempter-1.1.6-14.el8.x86_64
libuuid-2.32.1-46.el8.x86_64
libverto-0.3.2-2.el8.x86_64
libxcrypt-4.1.1-6.el8.x86_64
libxcrypt-devel-4.1.1-6.el8.x86_64
libxml2-2.9.7-18.el8_10.1.x86_64
libzstd-1.4.4-1.el8.x86_64
lua-libs-5.3.4-12.el8.x86_64
lua-srpm-macros-1-13.el8.noarch
lz4-libs-1.8.3-3.el8_4.x86_64
make-4.2.1-11.el8.x86_64
mpfr-3.1.6-1.el8.x86_64
ncurses-6.1-10.20180224.el8.x86_64
ncurses-base-6.1-10.20180224.el8.noarch
ncurses-libs-6.1-10.20180224.el8.x86_64
nettle-3.4.1-7.el8.x86_64
npth-1.5-4.el8.x86_64
ocaml-srpm-macros-5-4.el8.noarch
openblas-srpm-macros-2-2.el8.noarch
openldap-2.4.46-20.el8_10.x86_64
openssl-libs-1.1.1k-14.el8_6.x86_64
p11-kit-0.23.22-2.el8.x86_64
p11-kit-trust-0.23.22-2.el8.x86_64
pam-1.3.1-36.el8_10.x86_64
patch-2.7.6-11.el8.x86_64
pcre-8.42-6.el8.x86_64
pcre2-10.32-3.el8_6.x86_64
perl-srpm-macros-1-25.el8.noarch
pkgconf-1.4.2-1.el8.x86_64
pkgconf-m4-1.4.2-1.el8.noarch
pkgconf-pkg-config-1.4.2-1.el8.x86_64
platform-python-3.6.8-69.el8_10.x86_64
platform-python-setuptools-39.2.0-8.el8_10.noarch
popt-1.18-1.el8.x86_64
publicsuffix-list-dafsa-20180723-1.el8.noarch
python-rpm-macros-3-45.el8.noarch
python-srpm-macros-3-45.el8.noarch
python3-libs-3.6.8-69.el8_10.x86_64
python3-pip-wheel-9.0.3-24.el8.noarch
python3-rpm-macros-3-45.el8.noarch
python3-setuptools-wheel-39.2.0-8.el8_10.noarch
qt5-srpm-macros-5.15.3-1.el8.noarch
readline-7.0-10.el8.x86_64
redhat-release-8.10-0.3.el8.x86_64
redhat-rpm-config-131-1.el8.noarch
rpm-4.14.3-32.el8_10.x86_64
rpm-build-4.14.3-32.el8_10.x86_64
rpm-build-libs-4.14.3-32.el8_10.x86_64
rpm-libs-4.14.3-32.el8_10.x86_64
rust-srpm-macros-5-2.el8.noarch
sed-4.5-5.el8.x86_64
setup-2.12.2-9.el8.noarch
shadow-utils-4.6-22.el8.x86_64
sqlite-libs-3.26.0-19.el8_9.x86_64
systemd-libs-239-82.el8_10.3.x86_64
tar-1.30-9.el8.x86_64
tpm2-tss-2.3.2-6.el8.x86_64
tzdata-2024b-4.el8.noarch
unzip-6.0-47.el8_10.x86_64
util-linux-2.32.1-46.el8.x86_64
which-2.21-20.el8.x86_64
xz-5.2.4-4.el8_6.x86_64
xz-libs-5.2.4-4.el8_6.x86_64
zip-3.0-23.el8.x86_64
zlib-1.2.11-25.el8.x86_64
zstd-1.4.4-1.el8.x86_64
Start: buildsrpm
Start: rpmbuild -bs
Building target platforms: x86_64
Building for target x86_64
Wrote: /builddir/build/SRPMS/pycharm-community-2024.3.2-1.el8.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-8-x86_64-1738090622.174514/root/var/log/dnf.log
/var/lib/mock/rhel+epel-8-x86_64-1738090622.174514/root/var/log/dnf.librepo.log
/var/lib/mock/rhel+epel-8-x86_64-1738090622.174514/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-2ie63js5/pycharm-community/pycharm-community.spec) Config(child) 3 minutes 45 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.el8.src.rpm)  Config(rhel+epel-8-x86_64)
Start(bootstrap): chroot init
INFO: mounting tmpfs at /var/lib/mock/rhel+epel-8-x86_64-bootstrap-1738090622.174514/root.
INFO: reusing tmpfs at /var/lib/mock/rhel+epel-8-x86_64-bootstrap-1738090622.174514/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-8-x86_64-1738090622.174514/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.14.3-32.el8_10.x86_64
  python3-dnf-4.7.0-20.el8.noarch
  python3-dnf-plugins-core-4.0.21-25.el8.noarch
Finish: chroot init
Start: build phase for pycharm-community-2024.3.2-1.el8.src.rpm
Start: build setup for pycharm-community-2024.3.2-1.el8.src.rpm
Building target platforms: x86_64
Building for target x86_64
Wrote: /builddir/build/SRPMS/pycharm-community-2024.3.2-1.el8.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                                  38 kB/s | 2.1 kB     00:00    
Red Hat Enterprise Linux - BaseOS                17 kB/s | 4.1 kB     00:00    
Red Hat Enterprise Linux - AppStream             19 kB/s | 4.5 kB     00:00    
Red Hat Enterprise Linux - CodeReady Linux Buil  21 kB/s | 4.5 kB     00:00    
Extra Packages for Enterprise Linux 8 - x86_64  815 kB/s |  36 kB     00:00    
Dependencies resolved.
=====================================================================================================
 Package                     Arch    Version                                 Repository          Size
=====================================================================================================
Installing:
 desktop-file-utils          x86_64  0.26-1.el8                              rhel-appstream      80 k
 javapackages-filesystem     noarch  5.3.0-2.module+el8+2598+06babf2e        codeready-builder   30 k
 libappstream-glib           x86_64  0.7.14-3.el8                            rhel-baseos        338 k
 librsvg2-tools              x86_64  2.42.7-5.el8                            rhel-appstream      43 k
 python36-devel              x86_64  3.6.8-39.module+el8.10.0+20784+edafcd43 rhel-appstream      17 k
Installing dependencies:
 abattis-cantarell-fonts     noarch  0.0.25-6.el8                            rhel-appstream     156 k
 acl                         x86_64  2.2.53-3.el8                            rhel-baseos         81 k
 adwaita-cursor-theme        noarch  3.28.0-3.el8                            rhel-appstream     647 k
 adwaita-icon-theme          noarch  3.28.0-3.el8                            rhel-appstream      11 M
 at-spi2-atk                 x86_64  2.26.2-1.el8                            rhel-appstream      89 k
 at-spi2-core                x86_64  2.28.0-1.el8                            rhel-appstream     169 k
 atk                         x86_64  2.28.1-1.el8                            rhel-appstream     272 k
 avahi-libs                  x86_64  0.7-27.el8_10.1                         rhel-baseos         62 k
 cairo                       x86_64  1.15.12-6.el8                           rhel-appstream     719 k
 cairo-gobject               x86_64  1.15.12-6.el8                           rhel-appstream      33 k
 colord-libs                 x86_64  1.4.2-1.el8                             rhel-appstream     236 k
 cryptsetup-libs             x86_64  2.3.7-7.el8                             rhel-baseos        489 k
 cups-libs                   x86_64  1:2.2.6-62.el8_10                       rhel-baseos        438 k
 dbus                        x86_64  1:1.12.8-26.el8                         rhel-baseos         42 k
 dbus-common                 noarch  1:1.12.8-26.el8                         rhel-baseos         47 k
 dbus-daemon                 x86_64  1:1.12.8-26.el8                         rhel-baseos        241 k
 dbus-libs                   x86_64  1:1.12.8-26.el8                         rhel-baseos        185 k
 dbus-tools                  x86_64  1:1.12.8-26.el8                         rhel-baseos         86 k
 device-mapper               x86_64  8:1.02.181-14.el8                       rhel-baseos        379 k
 device-mapper-libs          x86_64  8:1.02.181-14.el8                       rhel-baseos        411 k
 emacs-filesystem            noarch  1:26.1-12.el8_10                        rhel-baseos         70 k
 epel-rpm-macros-systemd     noarch  8-41                                    epel                15 k
 fontconfig                  x86_64  2.13.1-4.el8                            rhel-baseos        274 k
 fontpackages-filesystem     noarch  1.44-22.el8                             rhel-baseos         16 k
 freetype                    x86_64  2.9.1-9.el8                             rhel-baseos        394 k
 fribidi                     x86_64  1.0.4-9.el8                             rhel-appstream      89 k
 gdk-pixbuf2                 x86_64  2.36.12-6.el8_10                        rhel-baseos        466 k
 gdk-pixbuf2-modules         x86_64  2.36.12-6.el8_10                        rhel-appstream     109 k
 glib-networking             x86_64  2.56.1-1.1.el8                          rhel-baseos        155 k
 graphite2                   x86_64  1.3.10-10.el8                           rhel-appstream     122 k
 gsettings-desktop-schemas   x86_64  3.32.0-6.el8                            rhel-baseos        633 k
 gtk-update-icon-cache       x86_64  3.22.30-12.el8_10                       rhel-appstream      32 k
 gtk3                        x86_64  3.22.30-12.el8_10                       rhel-appstream     4.5 M
 harfbuzz                    x86_64  1.7.5-4.el8                             rhel-appstream     296 k
 hicolor-icon-theme          noarch  0.17-2.el8                              rhel-appstream      48 k
 jasper-libs                 x86_64  2.0.14-6.el8_10                         rhel-appstream     167 k
 jbigkit-libs                x86_64  2.1-14.el8                              rhel-appstream      55 k
 json-c                      x86_64  0.13.1-3.el8                            rhel-baseos         41 k
 json-glib                   x86_64  1.4.4-1.el8                             rhel-baseos        144 k
 kmod-libs                   x86_64  25-20.el8                               rhel-baseos         69 k
 lcms2                       x86_64  2.9-2.el8                               rhel-appstream     165 k
 libX11                      x86_64  1.6.8-9.el8_10                          rhel-appstream     612 k
 libX11-common               noarch  1.6.8-9.el8_10                          rhel-appstream     159 k
 libXau                      x86_64  1.0.9-3.el8                             rhel-appstream      37 k
 libXcomposite               x86_64  0.4.4-14.el8                            rhel-appstream      29 k
 libXcursor                  x86_64  1.1.15-3.el8                            rhel-appstream      36 k
 libXdamage                  x86_64  1.1.4-14.el8                            rhel-appstream      27 k
 libXext                     x86_64  1.3.4-1.el8                             rhel-appstream      45 k
 libXfixes                   x86_64  5.0.3-7.el8                             rhel-appstream      25 k
 libXft                      x86_64  2.3.3-1.el8                             rhel-appstream      67 k
 libXi                       x86_64  1.7.10-1.el8                            rhel-appstream      49 k
 libXinerama                 x86_64  1.1.4-1.el8                             rhel-appstream      16 k
 libXrandr                   x86_64  1.5.2-1.el8                             rhel-appstream      34 k
 libXrender                  x86_64  0.9.10-7.el8                            rhel-appstream      33 k
 libXtst                     x86_64  1.2.3-7.el8                             rhel-appstream      22 k
 libcroco                    x86_64  0.6.12-4.el8_2.1                        rhel-baseos        113 k
 libdatrie                   x86_64  0.2.9-7.el8                             rhel-appstream      33 k
 libepoxy                    x86_64  1.5.8-1.el8                             rhel-appstream     225 k
 libgusb                     x86_64  0.3.0-1.el8                             rhel-baseos         49 k
 libjpeg-turbo               x86_64  1.5.3-12.el8                            rhel-appstream     157 k
 libmodman                   x86_64  2.0.1-17.el8                            rhel-baseos         36 k
 libpng                      x86_64  2:1.6.34-5.el8                          rhel-baseos        126 k
 libproxy                    x86_64  0.4.15-5.5.el8_10                       rhel-baseos         73 k
 librsvg2                    x86_64  2.42.7-5.el8                            rhel-appstream     575 k
 libseccomp                  x86_64  2.5.2-1.el8                             rhel-baseos         71 k
 libsoup                     x86_64  2.62.3-6.el8_10                         rhel-baseos        426 k
 libstemmer                  x86_64  0-10.585svn.el8                         rhel-baseos         73 k
 libthai                     x86_64  0.1.27-2.el8                            rhel-appstream     203 k
 libtiff                     x86_64  4.0.9-33.el8_10                         rhel-appstream     190 k
 libwayland-client           x86_64  1.21.0-1.el8                            rhel-appstream      41 k
 libwayland-cursor           x86_64  1.21.0-1.el8                            rhel-appstream      26 k
 libwayland-egl              x86_64  1.21.0-1.el8                            rhel-appstream      20 k
 libxcb                      x86_64  1.13.1-1.el8                            rhel-appstream     229 k
 libxkbcommon                x86_64  0.9.1-1.el8                             rhel-appstream     116 k
 pango                       x86_64  1.42.4-8.el8                            rhel-appstream     297 k
 pixman                      x86_64  0.38.4-4.el8                            rhel-appstream     258 k
 platform-python-devel       x86_64  3.6.8-69.el8_10                         rhel-appstream     242 k
 platform-python-pip         noarch  9.0.3-24.el8                            rhel-baseos        1.6 M
 python3-pip                 noarch  9.0.3-24.el8                            rhel-appstream      20 k
 python3-rpm-generators      noarch  5-8.el8                                 rhel-appstream      25 k
 python3-setuptools          noarch  39.2.0-8.el8_10                         rhel-baseos        163 k
 python36                    x86_64  3.6.8-39.module+el8.10.0+20784+edafcd43 rhel-appstream      20 k
 python36-rpm-macros         noarch  3.6.8-39.module+el8.10.0+20784+edafcd43 rhel-appstream      16 k
 rest                        x86_64  0.8.1-2.el8                             rhel-appstream      71 k
 shared-mime-info            x86_64  1.9-4.el8                               rhel-baseos        329 k
 systemd                     x86_64  239-82.el8_10.3                         rhel-baseos        3.6 M
 systemd-pam                 x86_64  239-82.el8_10.3                         rhel-baseos        514 k
 xkeyboard-config            noarch  2.28-1.el8                              rhel-appstream     782 k
Enabling module streams:
 javapackages-tools                  201801                                                          
 python36                            3.6                                                             

Transaction Summary
=====================================================================================================
Install  93 Packages

Total download size: 36 M
Installed size: 106 M
Downloading Packages:
(1/93): libgusb-0.3.0-1.el8.x86_64.rpm          132 kB/s |  49 kB     00:00    
(2/93): libappstream-glib-0.7.14-3.el8.x86_64.r 878 kB/s | 338 kB     00:00    
(3/93): json-glib-1.4.4-1.el8.x86_64.rpm        315 kB/s | 144 kB     00:00    
(4/93): libmodman-2.0.1-17.el8.x86_64.rpm       319 kB/s |  36 kB     00:00    
(5/93): libpng-1.6.34-5.el8.x86_64.rpm          912 kB/s | 126 kB     00:00    
(6/93): fontpackages-filesystem-1.44-22.el8.noa 175 kB/s |  16 kB     00:00    
(7/93): libstemmer-0-10.585svn.el8.x86_64.rpm   500 kB/s |  73 kB     00:00    
(8/93): libcroco-0.6.12-4.el8_2.1.x86_64.rpm    821 kB/s | 113 kB     00:00    
(9/93): glib-networking-2.56.1-1.1.el8.x86_64.r 644 kB/s | 155 kB     00:00    
(10/93): gsettings-desktop-schemas-3.32.0-6.el8 3.8 MB/s | 633 kB     00:00    
(11/93): fontconfig-2.13.1-4.el8.x86_64.rpm     1.7 MB/s | 274 kB     00:00    
(12/93): json-c-0.13.1-3.el8.x86_64.rpm         309 kB/s |  41 kB     00:00    
(13/93): freetype-2.9.1-9.el8.x86_64.rpm        3.1 MB/s | 394 kB     00:00    
(14/93): cryptsetup-libs-2.3.7-7.el8.x86_64.rpm 3.0 MB/s | 489 kB     00:00    
(15/93): libseccomp-2.5.2-1.el8.x86_64.rpm      328 kB/s |  71 kB     00:00    
(16/93): dbus-1.12.8-26.el8.x86_64.rpm          464 kB/s |  42 kB     00:00    
(17/93): dbus-daemon-1.12.8-26.el8.x86_64.rpm   2.1 MB/s | 241 kB     00:00    
(18/93): dbus-libs-1.12.8-26.el8.x86_64.rpm     1.8 MB/s | 185 kB     00:00    
(19/93): dbus-common-1.12.8-26.el8.noarch.rpm   434 kB/s |  47 kB     00:00    
(20/93): dbus-tools-1.12.8-26.el8.x86_64.rpm    887 kB/s |  86 kB     00:00    
(21/93): acl-2.2.53-3.el8.x86_64.rpm            929 kB/s |  81 kB     00:00    
(22/93): kmod-libs-25-20.el8.x86_64.rpm         679 kB/s |  69 kB     00:00    
(23/93): device-mapper-1.02.181-14.el8.x86_64.r 1.8 MB/s | 379 kB     00:00    
(24/93): device-mapper-libs-1.02.181-14.el8.x86 2.2 MB/s | 411 kB     00:00    
(25/93): shared-mime-info-1.9-4.el8.x86_64.rpm  3.2 MB/s | 329 kB     00:00    
(26/93): platform-python-pip-9.0.3-24.el8.noarc 9.9 MB/s | 1.6 MB     00:00    
(27/93): avahi-libs-0.7-27.el8_10.1.x86_64.rpm  507 kB/s |  62 kB     00:00    
(28/93): gdk-pixbuf2-2.36.12-6.el8_10.x86_64.rp 3.4 MB/s | 466 kB     00:00    
(29/93): python3-setuptools-39.2.0-8.el8_10.noa 591 kB/s | 163 kB     00:00    
(30/93): emacs-filesystem-26.1-12.el8_10.noarch 231 kB/s |  70 kB     00:00    
(31/93): libproxy-0.4.15-5.5.el8_10.x86_64.rpm  324 kB/s |  73 kB     00:00    
(32/93): libsoup-2.62.3-6.el8_10.x86_64.rpm     2.2 MB/s | 426 kB     00:00    
(33/93): systemd-pam-239-82.el8_10.3.x86_64.rpm 3.1 MB/s | 514 kB     00:00    
(34/93): cups-libs-2.2.6-62.el8_10.x86_64.rpm   3.1 MB/s | 438 kB     00:00    
(35/93): hicolor-icon-theme-0.17-2.el8.noarch.r 520 kB/s |  48 kB     00:00    
(36/93): systemd-239-82.el8_10.3.x86_64.rpm      14 MB/s | 3.6 MB     00:00    
(37/93): at-spi2-core-2.28.0-1.el8.x86_64.rpm   1.6 MB/s | 169 kB     00:00    
(38/93): at-spi2-atk-2.26.2-1.el8.x86_64.rpm    798 kB/s |  89 kB     00:00    
(39/93): lcms2-2.9-2.el8.x86_64.rpm             891 kB/s | 165 kB     00:00    
(40/93): jbigkit-libs-2.1-14.el8.x86_64.rpm     630 kB/s |  55 kB     00:00    
(41/93): graphite2-1.3.10-10.el8.x86_64.rpm     1.3 MB/s | 122 kB     00:00    
(42/93): libXtst-1.2.3-7.el8.x86_64.rpm         243 kB/s |  22 kB     00:00    
(43/93): libXinerama-1.1.4-1.el8.x86_64.rpm     157 kB/s |  16 kB     00:00    
(44/93): libXcursor-1.1.15-3.el8.x86_64.rpm     176 kB/s |  36 kB     00:00    
(45/93): colord-libs-1.4.2-1.el8.x86_64.rpm     2.0 MB/s | 236 kB     00:00    
(46/93): libXdamage-1.1.4-14.el8.x86_64.rpm     189 kB/s |  27 kB     00:00    
(47/93): libthai-0.1.27-2.el8.x86_64.rpm        1.5 MB/s | 203 kB     00:00    
(48/93): libXfixes-5.0.3-7.el8.x86_64.rpm       149 kB/s |  25 kB     00:00    
(49/93): rest-0.8.1-2.el8.x86_64.rpm            589 kB/s |  71 kB     00:00    
(50/93): libXrender-0.9.10-7.el8.x86_64.rpm     339 kB/s |  33 kB     00:00    
(51/93): atk-2.28.1-1.el8.x86_64.rpm            1.6 MB/s | 272 kB     00:00    
(52/93): libXcomposite-0.4.4-14.el8.x86_64.rpm  150 kB/s |  29 kB     00:00    
(53/93): libdatrie-0.2.9-7.el8.x86_64.rpm       278 kB/s |  33 kB     00:00    
(54/93): libxcb-1.13.1-1.el8.x86_64.rpm         1.7 MB/s | 229 kB     00:00    
(55/93): xkeyboard-config-2.28-1.el8.noarch.rpm 7.3 MB/s | 782 kB     00:00    
(56/93): libXext-1.3.4-1.el8.x86_64.rpm         448 kB/s |  45 kB     00:00    
(57/93): libXi-1.7.10-1.el8.x86_64.rpm          394 kB/s |  49 kB     00:00    
(58/93): libxkbcommon-0.9.1-1.el8.x86_64.rpm    399 kB/s | 116 kB     00:00    
(59/93): libXau-1.0.9-3.el8.x86_64.rpm          343 kB/s |  37 kB     00:00    
(60/93): libXft-2.3.3-1.el8.x86_64.rpm          769 kB/s |  67 kB     00:00    
(61/93): libXrandr-1.5.2-1.el8.x86_64.rpm       388 kB/s |  34 kB     00:00    
(62/93): abattis-cantarell-fonts-0.0.25-6.el8.n 1.7 MB/s | 156 kB     00:00    
(63/93): libepoxy-1.5.8-1.el8.x86_64.rpm        2.4 MB/s | 225 kB     00:00    
(64/93): libjpeg-turbo-1.5.3-12.el8.x86_64.rpm  1.4 MB/s | 157 kB     00:00    
(65/93): pango-1.42.4-8.el8.x86_64.rpm          2.5 MB/s | 297 kB     00:00    
(66/93): adwaita-cursor-theme-3.28.0-3.el8.noar 3.5 MB/s | 647 kB     00:00    
(67/93): cairo-1.15.12-6.el8.x86_64.rpm         4.7 MB/s | 719 kB     00:00    
(68/93): cairo-gobject-1.15.12-6.el8.x86_64.rpm 370 kB/s |  33 kB     00:00    
(69/93): fribidi-1.0.4-9.el8.x86_64.rpm         891 kB/s |  89 kB     00:00    
(70/93): desktop-file-utils-0.26-1.el8.x86_64.r 840 kB/s |  80 kB     00:00    
(71/93): libwayland-cursor-1.21.0-1.el8.x86_64. 277 kB/s |  26 kB     00:00    
(72/93): libwayland-client-1.21.0-1.el8.x86_64. 241 kB/s |  41 kB     00:00    
(73/93): adwaita-icon-theme-3.28.0-3.el8.noarch  25 MB/s |  11 MB     00:00    
(74/93): python3-rpm-generators-5-8.el8.noarch. 256 kB/s |  25 kB     00:00    
(75/93): librsvg2-2.42.7-5.el8.x86_64.rpm       3.8 MB/s | 575 kB     00:00    
(76/93): librsvg2-tools-2.42.7-5.el8.x86_64.rpm 290 kB/s |  43 kB     00:00    
(77/93): libwayland-egl-1.21.0-1.el8.x86_64.rpm  71 kB/s |  20 kB     00:00    
(78/93): python36-3.6.8-39.module+el8.10.0+2078 119 kB/s |  20 kB     00:00    
(79/93): python36-rpm-macros-3.6.8-39.module+el 162 kB/s |  16 kB     00:00    
(80/93): harfbuzz-1.7.5-4.el8.x86_64.rpm        1.5 MB/s | 296 kB     00:00    
(81/93): python36-devel-3.6.8-39.module+el8.10.  46 kB/s |  17 kB     00:00    
(82/93): python3-pip-9.0.3-24.el8.noarch.rpm    220 kB/s |  20 kB     00:00    
(83/93): pixman-0.38.4-4.el8.x86_64.rpm         770 kB/s | 258 kB     00:00    
(84/93): gtk-update-icon-cache-3.22.30-12.el8_1 312 kB/s |  32 kB     00:00    
(85/93): gdk-pixbuf2-modules-2.36.12-6.el8_10.x 708 kB/s | 109 kB     00:00    
(86/93): libX11-1.6.8-9.el8_10.x86_64.rpm       5.6 MB/s | 612 kB     00:00    
(87/93): gtk3-3.22.30-12.el8_10.x86_64.rpm       19 MB/s | 4.5 MB     00:00    
(88/93): libX11-common-1.6.8-9.el8_10.noarch.rp 758 kB/s | 159 kB     00:00    
(89/93): libtiff-4.0.9-33.el8_10.x86_64.rpm     951 kB/s | 190 kB     00:00    
(90/93): platform-python-devel-3.6.8-69.el8_10. 1.3 MB/s | 242 kB     00:00    
(91/93): javapackages-filesystem-5.3.0-2.module 289 kB/s |  30 kB     00:00    
(92/93): jasper-libs-2.0.14-6.el8_10.x86_64.rpm 791 kB/s | 167 kB     00:00    
(93/93): epel-rpm-macros-systemd-8-41.noarch.rp 164 kB/s |  15 kB     00:00    
--------------------------------------------------------------------------------
Total                                           4.9 MB/s |  36 MB     00:07     
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
  Preparing        :                                                        1/1 
  Installing       : libpng-2:1.6.34-5.el8.x86_64                          1/93 
  Installing       : freetype-2.9.1-9.el8.x86_64                           2/93 
  Installing       : dbus-libs-1:1.12.8-26.el8.x86_64                      3/93 
  Running scriptlet: dbus-libs-1:1.12.8-26.el8.x86_64                      3/93 
  Installing       : libjpeg-turbo-1.5.3-12.el8.x86_64                     4/93 
  Installing       : atk-2.28.1-1.el8.x86_64                               5/93 
  Installing       : pixman-0.38.4-4.el8.x86_64                            6/93 
  Installing       : libwayland-client-1.21.0-1.el8.x86_64                 7/93 
  Installing       : libcroco-0.6.12-4.el8_2.1.x86_64                      8/93 
  Running scriptlet: libcroco-0.6.12-4.el8_2.1.x86_64                      8/93 
  Installing       : fontpackages-filesystem-1.44-22.el8.noarch            9/93 
  Installing       : abattis-cantarell-fonts-0.0.25-6.el8.noarch          10/93 
  Installing       : fontconfig-2.13.1-4.el8.x86_64                       11/93 
  Running scriptlet: fontconfig-2.13.1-4.el8.x86_64                       11/93 
  Installing       : json-glib-1.4.4-1.el8.x86_64                         12/93 
  Installing       : gsettings-desktop-schemas-3.32.0-6.el8.x86_64        13/93 
  Installing       : libwayland-cursor-1.21.0-1.el8.x86_64                14/93 
  Installing       : jasper-libs-2.0.14-6.el8_10.x86_64                   15/93 
  Installing       : dbus-tools-1:1.12.8-26.el8.x86_64                    16/93 
  Installing       : avahi-libs-0.7-27.el8_10.1.x86_64                    17/93 
  Installing       : cups-libs-1:2.2.6-62.el8_10.x86_64                   18/93 
  Installing       : libX11-common-1.6.8-9.el8_10.noarch                  19/93 
  Installing       : python3-rpm-generators-5-8.el8.noarch                20/93 
  Installing       : platform-python-devel-3.6.8-69.el8_10.x86_64         21/93 
  Installing       : libwayland-egl-1.21.0-1.el8.x86_64                   22/93 
  Installing       : fribidi-1.0.4-9.el8.x86_64                           23/93 
  Installing       : adwaita-cursor-theme-3.28.0-3.el8.noarch             24/93 
  Installing       : adwaita-icon-theme-3.28.0-3.el8.noarch               25/93 
  Installing       : libepoxy-1.5.8-1.el8.x86_64                          26/93 
  Installing       : libXau-1.0.9-3.el8.x86_64                            27/93 
  Installing       : libxcb-1.13.1-1.el8.x86_64                           28/93 
  Installing       : libX11-1.6.8-9.el8_10.x86_64                         29/93 
  Installing       : libXext-1.3.4-1.el8.x86_64                           30/93 
  Installing       : libXrender-0.9.10-7.el8.x86_64                       31/93 
  Installing       : cairo-1.15.12-6.el8.x86_64                           32/93 
  Installing       : libXfixes-5.0.3-7.el8.x86_64                         33/93 
  Installing       : cairo-gobject-1.15.12-6.el8.x86_64                   34/93 
  Installing       : libXi-1.7.10-1.el8.x86_64                            35/93 
  Installing       : libXtst-1.2.3-7.el8.x86_64                           36/93 
  Installing       : libXcursor-1.1.15-3.el8.x86_64                       37/93 
  Installing       : libXdamage-1.1.4-14.el8.x86_64                       38/93 
  Installing       : libXft-2.3.3-1.el8.x86_64                            39/93 
  Installing       : libXrandr-1.5.2-1.el8.x86_64                         40/93 
  Installing       : libXinerama-1.1.4-1.el8.x86_64                       41/93 
  Installing       : libXcomposite-0.4.4-14.el8.x86_64                    42/93 
  Installing       : xkeyboard-config-2.28-1.el8.noarch                   43/93 
  Installing       : libxkbcommon-0.9.1-1.el8.x86_64                      44/93 
  Installing       : libdatrie-0.2.9-7.el8.x86_64                         45/93 
  Running scriptlet: libdatrie-0.2.9-7.el8.x86_64                         45/93 
  Installing       : libthai-0.1.27-2.el8.x86_64                          46/93 
  Running scriptlet: libthai-0.1.27-2.el8.x86_64                          46/93 
  Installing       : jbigkit-libs-2.1-14.el8.x86_64                       47/93 
  Running scriptlet: jbigkit-libs-2.1-14.el8.x86_64                       47/93 
  Installing       : libtiff-4.0.9-33.el8_10.x86_64                       48/93 
  Installing       : graphite2-1.3.10-10.el8.x86_64                       49/93 
  Installing       : harfbuzz-1.7.5-4.el8.x86_64                          50/93 
  Running scriptlet: harfbuzz-1.7.5-4.el8.x86_64                          50/93 
  Installing       : pango-1.42.4-8.el8.x86_64                            51/93 
  Running scriptlet: pango-1.42.4-8.el8.x86_64                            51/93 
  Installing       : lcms2-2.9-2.el8.x86_64                               52/93 
  Running scriptlet: lcms2-2.9-2.el8.x86_64                               52/93 
  Installing       : hicolor-icon-theme-0.17-2.el8.noarch                 53/93 
  Installing       : emacs-filesystem-1:26.1-12.el8_10.noarch             54/93 
  Installing       : python3-setuptools-39.2.0-8.el8_10.noarch            55/93 
  Installing       : shared-mime-info-1.9-4.el8.x86_64                    56/93 
  Running scriptlet: shared-mime-info-1.9-4.el8.x86_64                    56/93 
  Installing       : gdk-pixbuf2-2.36.12-6.el8_10.x86_64                  57/93 
  Running scriptlet: gdk-pixbuf2-2.36.12-6.el8_10.x86_64                  57/93 
  Installing       : librsvg2-2.42.7-5.el8.x86_64                         58/93 
  Installing       : gdk-pixbuf2-modules-2.36.12-6.el8_10.x86_64          59/93 
  Installing       : gtk-update-icon-cache-3.22.30-12.el8_10.x86_64       60/93 
  Installing       : platform-python-pip-9.0.3-24.el8.noarch              61/93 
  Installing       : python36-3.6.8-39.module+el8.10.0+20784+edafcd43.x   62/93 
  Running scriptlet: python36-3.6.8-39.module+el8.10.0+20784+edafcd43.x   62/93 
  Installing       : python3-pip-9.0.3-24.el8.noarch                      63/93 
  Installing       : kmod-libs-25-20.el8.x86_64                           64/93 
  Running scriptlet: kmod-libs-25-20.el8.x86_64                           64/93 
  Installing       : acl-2.2.53-3.el8.x86_64                              65/93 
  Installing       : libseccomp-2.5.2-1.el8.x86_64                        66/93 
  Running scriptlet: libseccomp-2.5.2-1.el8.x86_64                        66/93 
  Installing       : json-c-0.13.1-3.el8.x86_64                           67/93 
  Installing       : device-mapper-8:1.02.181-14.el8.x86_64               68/93 
  Installing       : device-mapper-libs-8:1.02.181-14.el8.x86_64          69/93 
  Installing       : cryptsetup-libs-2.3.7-7.el8.x86_64                   70/93 
  Running scriptlet: cryptsetup-libs-2.3.7-7.el8.x86_64                   70/93 
  Installing       : dbus-common-1:1.12.8-26.el8.noarch                   71/93 
  Running scriptlet: dbus-daemon-1:1.12.8-26.el8.x86_64                   72/93 
  Installing       : dbus-daemon-1:1.12.8-26.el8.x86_64                   72/93 
  Running scriptlet: dbus-daemon-1:1.12.8-26.el8.x86_64                   72/93 
  Installing       : systemd-pam-239-82.el8_10.3.x86_64                   73/93 
  Running scriptlet: systemd-239-82.el8_10.3.x86_64                       74/93 
  Installing       : systemd-239-82.el8_10.3.x86_64                       74/93 
  Running scriptlet: systemd-239-82.el8_10.3.x86_64                       74/93 
  Installing       : dbus-1:1.12.8-26.el8.x86_64                          75/93 
  Installing       : at-spi2-core-2.28.0-1.el8.x86_64                     76/93 
  Running scriptlet: at-spi2-core-2.28.0-1.el8.x86_64                     76/93 
  Installing       : at-spi2-atk-2.26.2-1.el8.x86_64                      77/93 
  Running scriptlet: at-spi2-atk-2.26.2-1.el8.x86_64                      77/93 
  Installing       : libstemmer-0-10.585svn.el8.x86_64                    78/93 
  Running scriptlet: libstemmer-0-10.585svn.el8.x86_64                    78/93 
  Installing       : libmodman-2.0.1-17.el8.x86_64                        79/93 
  Running scriptlet: libmodman-2.0.1-17.el8.x86_64                        79/93 
  Installing       : libproxy-0.4.15-5.5.el8_10.x86_64                    80/93 
  Running scriptlet: libproxy-0.4.15-5.5.el8_10.x86_64                    80/93 
  Installing       : glib-networking-2.56.1-1.1.el8.x86_64                81/93 
  Installing       : libsoup-2.62.3-6.el8_10.x86_64                       82/93 
  Installing       : rest-0.8.1-2.el8.x86_64                              83/93 
  Running scriptlet: rest-0.8.1-2.el8.x86_64                              83/93 
  Installing       : libgusb-0.3.0-1.el8.x86_64                           84/93 
  Installing       : colord-libs-1.4.2-1.el8.x86_64                       85/93 
  Installing       : gtk3-3.22.30-12.el8_10.x86_64                        86/93 
  Installing       : librsvg2-tools-2.42.7-5.el8.x86_64                   87/93 
  Installing       : libappstream-glib-0.7.14-3.el8.x86_64                88/93 
  Installing       : epel-rpm-macros-systemd-8-41.noarch                  89/93 
  Installing       : python36-devel-3.6.8-39.module+el8.10.0+20784+edaf   90/93 
  Running scriptlet: python36-devel-3.6.8-39.module+el8.10.0+20784+edaf   90/93 
  Installing       : desktop-file-utils-0.26-1.el8.x86_64                 91/93 
  Installing       : javapackages-filesystem-5.3.0-2.module+el8+2598+06   92/93 
  Installing       : python36-rpm-macros-3.6.8-39.module+el8.10.0+20784   93/93 
  Running scriptlet: python36-rpm-macros-3.6.8-39.module+el8.10.0+20784   93/93 
  Running scriptlet: fontconfig-2.13.1-4.el8.x86_64                       93/93 
  Running scriptlet: adwaita-icon-theme-3.28.0-3.el8.noarch               93/93 
  Running scriptlet: hicolor-icon-theme-0.17-2.el8.noarch                 93/93 
  Running scriptlet: shared-mime-info-1.9-4.el8.x86_64                    93/93 
  Running scriptlet: gdk-pixbuf2-2.36.12-6.el8_10.x86_64                  93/93 
  Running scriptlet: systemd-239-82.el8_10.3.x86_64                       93/93 
  Running scriptlet: desktop-file-utils-0.26-1.el8.x86_64                 93/93 
  Verifying        : json-glib-1.4.4-1.el8.x86_64                          1/93 
  Verifying        : libappstream-glib-0.7.14-3.el8.x86_64                 2/93 
  Verifying        : libgusb-0.3.0-1.el8.x86_64                            3/93 
  Verifying        : libmodman-2.0.1-17.el8.x86_64                         4/93 
  Verifying        : libpng-2:1.6.34-5.el8.x86_64                          5/93 
  Verifying        : fontpackages-filesystem-1.44-22.el8.noarch            6/93 
  Verifying        : glib-networking-2.56.1-1.1.el8.x86_64                 7/93 
  Verifying        : libstemmer-0-10.585svn.el8.x86_64                     8/93 
  Verifying        : libcroco-0.6.12-4.el8_2.1.x86_64                      9/93 
  Verifying        : gsettings-desktop-schemas-3.32.0-6.el8.x86_64        10/93 
  Verifying        : fontconfig-2.13.1-4.el8.x86_64                       11/93 
  Verifying        : json-c-0.13.1-3.el8.x86_64                           12/93 
  Verifying        : libseccomp-2.5.2-1.el8.x86_64                        13/93 
  Verifying        : freetype-2.9.1-9.el8.x86_64                          14/93 
  Verifying        : cryptsetup-libs-2.3.7-7.el8.x86_64                   15/93 
  Verifying        : dbus-1:1.12.8-26.el8.x86_64                          16/93 
  Verifying        : dbus-daemon-1:1.12.8-26.el8.x86_64                   17/93 
  Verifying        : dbus-libs-1:1.12.8-26.el8.x86_64                     18/93 
  Verifying        : dbus-common-1:1.12.8-26.el8.noarch                   19/93 
  Verifying        : dbus-tools-1:1.12.8-26.el8.x86_64                    20/93 
  Verifying        : acl-2.2.53-3.el8.x86_64                              21/93 
  Verifying        : device-mapper-8:1.02.181-14.el8.x86_64               22/93 
  Verifying        : device-mapper-libs-8:1.02.181-14.el8.x86_64          23/93 
  Verifying        : kmod-libs-25-20.el8.x86_64                           24/93 
  Verifying        : platform-python-pip-9.0.3-24.el8.noarch              25/93 
  Verifying        : shared-mime-info-1.9-4.el8.x86_64                    26/93 
  Verifying        : avahi-libs-0.7-27.el8_10.1.x86_64                    27/93 
  Verifying        : gdk-pixbuf2-2.36.12-6.el8_10.x86_64                  28/93 
  Verifying        : python3-setuptools-39.2.0-8.el8_10.noarch            29/93 
  Verifying        : emacs-filesystem-1:26.1-12.el8_10.noarch             30/93 
  Verifying        : libproxy-0.4.15-5.5.el8_10.x86_64                    31/93 
  Verifying        : libsoup-2.62.3-6.el8_10.x86_64                       32/93 
  Verifying        : systemd-239-82.el8_10.3.x86_64                       33/93 
  Verifying        : systemd-pam-239-82.el8_10.3.x86_64                   34/93 
  Verifying        : cups-libs-1:2.2.6-62.el8_10.x86_64                   35/93 
  Verifying        : hicolor-icon-theme-0.17-2.el8.noarch                 36/93 
  Verifying        : lcms2-2.9-2.el8.x86_64                               37/93 
  Verifying        : at-spi2-atk-2.26.2-1.el8.x86_64                      38/93 
  Verifying        : at-spi2-core-2.28.0-1.el8.x86_64                     39/93 
  Verifying        : graphite2-1.3.10-10.el8.x86_64                       40/93 
  Verifying        : jbigkit-libs-2.1-14.el8.x86_64                       41/93 
  Verifying        : libXcursor-1.1.15-3.el8.x86_64                       42/93 
  Verifying        : libXinerama-1.1.4-1.el8.x86_64                       43/93 
  Verifying        : libXtst-1.2.3-7.el8.x86_64                           44/93 
  Verifying        : colord-libs-1.4.2-1.el8.x86_64                       45/93 
  Verifying        : libXdamage-1.1.4-14.el8.x86_64                       46/93 
  Verifying        : libXfixes-5.0.3-7.el8.x86_64                         47/93 
  Verifying        : libthai-0.1.27-2.el8.x86_64                          48/93 
  Verifying        : rest-0.8.1-2.el8.x86_64                              49/93 
  Verifying        : atk-2.28.1-1.el8.x86_64                              50/93 
  Verifying        : libXcomposite-0.4.4-14.el8.x86_64                    51/93 
  Verifying        : libXrender-0.9.10-7.el8.x86_64                       52/93 
  Verifying        : libdatrie-0.2.9-7.el8.x86_64                         53/93 
  Verifying        : libxcb-1.13.1-1.el8.x86_64                           54/93 
  Verifying        : libxkbcommon-0.9.1-1.el8.x86_64                      55/93 
  Verifying        : xkeyboard-config-2.28-1.el8.noarch                   56/93 
  Verifying        : libXext-1.3.4-1.el8.x86_64                           57/93 
  Verifying        : libXi-1.7.10-1.el8.x86_64                            58/93 
  Verifying        : libXau-1.0.9-3.el8.x86_64                            59/93 
  Verifying        : libXft-2.3.3-1.el8.x86_64                            60/93 
  Verifying        : libXrandr-1.5.2-1.el8.x86_64                         61/93 
  Verifying        : abattis-cantarell-fonts-0.0.25-6.el8.noarch          62/93 
  Verifying        : libepoxy-1.5.8-1.el8.x86_64                          63/93 
  Verifying        : libjpeg-turbo-1.5.3-12.el8.x86_64                    64/93 
  Verifying        : pango-1.42.4-8.el8.x86_64                            65/93 
  Verifying        : adwaita-cursor-theme-3.28.0-3.el8.noarch             66/93 
  Verifying        : adwaita-icon-theme-3.28.0-3.el8.noarch               67/93 
  Verifying        : cairo-1.15.12-6.el8.x86_64                           68/93 
  Verifying        : cairo-gobject-1.15.12-6.el8.x86_64                   69/93 
  Verifying        : fribidi-1.0.4-9.el8.x86_64                           70/93 
  Verifying        : desktop-file-utils-0.26-1.el8.x86_64                 71/93 
  Verifying        : libwayland-client-1.21.0-1.el8.x86_64                72/93 
  Verifying        : libwayland-cursor-1.21.0-1.el8.x86_64                73/93 
  Verifying        : libwayland-egl-1.21.0-1.el8.x86_64                   74/93 
  Verifying        : python3-rpm-generators-5-8.el8.noarch                75/93 
  Verifying        : librsvg2-2.42.7-5.el8.x86_64                         76/93 
  Verifying        : librsvg2-tools-2.42.7-5.el8.x86_64                   77/93 
  Verifying        : python36-3.6.8-39.module+el8.10.0+20784+edafcd43.x   78/93 
  Verifying        : python36-devel-3.6.8-39.module+el8.10.0+20784+edaf   79/93 
  Verifying        : python36-rpm-macros-3.6.8-39.module+el8.10.0+20784   80/93 
  Verifying        : harfbuzz-1.7.5-4.el8.x86_64                          81/93 
  Verifying        : pixman-0.38.4-4.el8.x86_64                           82/93 
  Verifying        : python3-pip-9.0.3-24.el8.noarch                      83/93 
  Verifying        : gdk-pixbuf2-modules-2.36.12-6.el8_10.x86_64          84/93 
  Verifying        : gtk-update-icon-cache-3.22.30-12.el8_10.x86_64       85/93 
  Verifying        : gtk3-3.22.30-12.el8_10.x86_64                        86/93 
  Verifying        : libX11-1.6.8-9.el8_10.x86_64                         87/93 
  Verifying        : libX11-common-1.6.8-9.el8_10.noarch                  88/93 
  Verifying        : libtiff-4.0.9-33.el8_10.x86_64                       89/93 
  Verifying        : platform-python-devel-3.6.8-69.el8_10.x86_64         90/93 
  Verifying        : jasper-libs-2.0.14-6.el8_10.x86_64                   91/93 
  Verifying        : javapackages-filesystem-5.3.0-2.module+el8+2598+06   92/93 
  Verifying        : epel-rpm-macros-systemd-8-41.noarch                  93/93 
Installed products updated.

Installed:
  abattis-cantarell-fonts-0.0.25-6.el8.noarch                                   
  acl-2.2.53-3.el8.x86_64                                                       
  adwaita-cursor-theme-3.28.0-3.el8.noarch                                      
  adwaita-icon-theme-3.28.0-3.el8.noarch                                        
  at-spi2-atk-2.26.2-1.el8.x86_64                                               
  at-spi2-core-2.28.0-1.el8.x86_64                                              
  atk-2.28.1-1.el8.x86_64                                                       
  avahi-libs-0.7-27.el8_10.1.x86_64                                             
  cairo-1.15.12-6.el8.x86_64                                                    
  cairo-gobject-1.15.12-6.el8.x86_64                                            
  colord-libs-1.4.2-1.el8.x86_64                                                
  cryptsetup-libs-2.3.7-7.el8.x86_64                                            
  cups-libs-1:2.2.6-62.el8_10.x86_64                                            
  dbus-1:1.12.8-26.el8.x86_64                                                   
  dbus-common-1:1.12.8-26.el8.noarch                                            
  dbus-daemon-1:1.12.8-26.el8.x86_64                                            
  dbus-libs-1:1.12.8-26.el8.x86_64                                              
  dbus-tools-1:1.12.8-26.el8.x86_64                                             
  desktop-file-utils-0.26-1.el8.x86_64                                          
  device-mapper-8:1.02.181-14.el8.x86_64                                        
  device-mapper-libs-8:1.02.181-14.el8.x86_64                                   
  emacs-filesystem-1:26.1-12.el8_10.noarch                                      
  epel-rpm-macros-systemd-8-41.noarch                                           
  fontconfig-2.13.1-4.el8.x86_64                                                
  fontpackages-filesystem-1.44-22.el8.noarch                                    
  freetype-2.9.1-9.el8.x86_64                                                   
  fribidi-1.0.4-9.el8.x86_64                                                    
  gdk-pixbuf2-2.36.12-6.el8_10.x86_64                                           
  gdk-pixbuf2-modules-2.36.12-6.el8_10.x86_64                                   
  glib-networking-2.56.1-1.1.el8.x86_64                                         
  graphite2-1.3.10-10.el8.x86_64                                                
  gsettings-desktop-schemas-3.32.0-6.el8.x86_64                                 
  gtk-update-icon-cache-3.22.30-12.el8_10.x86_64                                
  gtk3-3.22.30-12.el8_10.x86_64                                                 
  harfbuzz-1.7.5-4.el8.x86_64                                                   
  hicolor-icon-theme-0.17-2.el8.noarch                                          
  jasper-libs-2.0.14-6.el8_10.x86_64                                            
  javapackages-filesystem-5.3.0-2.module+el8+2598+06babf2e.noarch               
  jbigkit-libs-2.1-14.el8.x86_64                                                
  json-c-0.13.1-3.el8.x86_64                                                    
  json-glib-1.4.4-1.el8.x86_64                                                  
  kmod-libs-25-20.el8.x86_64                                                    
  lcms2-2.9-2.el8.x86_64                                                        
  libX11-1.6.8-9.el8_10.x86_64                                                  
  libX11-common-1.6.8-9.el8_10.noarch                                           
  libXau-1.0.9-3.el8.x86_64                                                     
  libXcomposite-0.4.4-14.el8.x86_64                                             
  libXcursor-1.1.15-3.el8.x86_64                                                
  libXdamage-1.1.4-14.el8.x86_64                                                
  libXext-1.3.4-1.el8.x86_64                                                    
  libXfixes-5.0.3-7.el8.x86_64                                                  
  libXft-2.3.3-1.el8.x86_64                                                     
  libXi-1.7.10-1.el8.x86_64                                                     
  libXinerama-1.1.4-1.el8.x86_64                                                
  libXrandr-1.5.2-1.el8.x86_64                                                  
  libXrender-0.9.10-7.el8.x86_64                                                
  libXtst-1.2.3-7.el8.x86_64                                                    
  libappstream-glib-0.7.14-3.el8.x86_64                                         
  libcroco-0.6.12-4.el8_2.1.x86_64                                              
  libdatrie-0.2.9-7.el8.x86_64                                                  
  libepoxy-1.5.8-1.el8.x86_64                                                   
  libgusb-0.3.0-1.el8.x86_64                                                    
  libjpeg-turbo-1.5.3-12.el8.x86_64                                             
  libmodman-2.0.1-17.el8.x86_64                                                 
  libpng-2:1.6.34-5.el8.x86_64                                                  
  libproxy-0.4.15-5.5.el8_10.x86_64                                             
  librsvg2-2.42.7-5.el8.x86_64                                                  
  librsvg2-tools-2.42.7-5.el8.x86_64                                            
  libseccomp-2.5.2-1.el8.x86_64                                                 
  libsoup-2.62.3-6.el8_10.x86_64                                                
  libstemmer-0-10.585svn.el8.x86_64                                             
  libthai-0.1.27-2.el8.x86_64                                                   
  libtiff-4.0.9-33.el8_10.x86_64                                                
  libwayland-client-1.21.0-1.el8.x86_64                                         
  libwayland-cursor-1.21.0-1.el8.x86_64                                         
  libwayland-egl-1.21.0-1.el8.x86_64                                            
  libxcb-1.13.1-1.el8.x86_64                                                    
  libxkbcommon-0.9.1-1.el8.x86_64                                               
  pango-1.42.4-8.el8.x86_64                                                     
  pixman-0.38.4-4.el8.x86_64                                                    
  platform-python-devel-3.6.8-69.el8_10.x86_64                                  
  platform-python-pip-9.0.3-24.el8.noarch                                       
  python3-pip-9.0.3-24.el8.noarch                                               
  python3-rpm-generators-5-8.el8.noarch                                         
  python3-setuptools-39.2.0-8.el8_10.noarch                                     
  python36-3.6.8-39.module+el8.10.0+20784+edafcd43.x86_64                       
  python36-devel-3.6.8-39.module+el8.10.0+20784+edafcd43.x86_64                 
  python36-rpm-macros-3.6.8-39.module+el8.10.0+20784+edafcd43.noarch            
  rest-0.8.1-2.el8.x86_64                                                       
  shared-mime-info-1.9-4.el8.x86_64                                             
  systemd-239-82.el8_10.3.x86_64                                                
  systemd-pam-239-82.el8_10.3.x86_64                                            
  xkeyboard-config-2.28-1.el8.noarch                                            

Complete!
Finish: build setup for pycharm-community-2024.3.2-1.el8.src.rpm
Start: rpmbuild pycharm-community-2024.3.2-1.el8.src.rpm
Building target platforms: x86_64
Building for target x86_64
Executing(%prep): /bin/sh -e /var/tmp/rpm-tmp.FADzdw
+ 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.6@g' -i '{}' ';'
+ exit 0
Executing(%install): /bin/sh -e /var/tmp/rpm-tmp.kkFsDG
+ umask 022
+ cd /builddir/build/BUILD
+ '[' /builddir/build/BUILDROOT/pycharm-community-2024.3.2-1.el8.x86_64 '!=' / ']'
+ rm -rf /builddir/build/BUILDROOT/pycharm-community-2024.3.2-1.el8.x86_64
++ dirname /builddir/build/BUILDROOT/pycharm-community-2024.3.2-1.el8.x86_64
+ mkdir -p /builddir/build/BUILDROOT
+ mkdir /builddir/build/BUILDROOT/pycharm-community-2024.3.2-1.el8.x86_64
+ cd pycharm-community-2024.3.2
+ install -d /builddir/build/BUILDROOT/pycharm-community-2024.3.2-1.el8.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.el8.x86_64/usr/share/java/pycharm-community/
+ install -d /builddir/build/BUILDROOT/pycharm-community-2024.3.2-1.el8.x86_64/usr/share/pixmaps
+ install -m 0644 -p bin/pycharm.png /builddir/build/BUILDROOT/pycharm-community-2024.3.2-1.el8.x86_64/usr/share/pixmaps/pycharm-community.png
+ install -d /builddir/build/BUILDROOT/pycharm-community-2024.3.2-1.el8.x86_64/usr/share/icons/hicolor/scalable/apps
+ install -m 0644 -p bin/pycharm.svg /builddir/build/BUILDROOT/pycharm-community-2024.3.2-1.el8.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.el8.x86_64/usr/share/icons/hicolor/16x16/apps
+ install -d /builddir/build/BUILDROOT/pycharm-community-2024.3.2-1.el8.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.el8.x86_64/usr/share/icons/hicolor/16x16/apps/pycharm-community.png
+ chmod 0644 /builddir/build/BUILDROOT/pycharm-community-2024.3.2-1.el8.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.el8.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.el8.x86_64/usr/share/icons/hicolor/22x22/apps
+ install -d /builddir/build/BUILDROOT/pycharm-community-2024.3.2-1.el8.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.el8.x86_64/usr/share/icons/hicolor/22x22/apps/pycharm-community.png
+ chmod 0644 /builddir/build/BUILDROOT/pycharm-community-2024.3.2-1.el8.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.el8.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.el8.x86_64/usr/share/icons/hicolor/24x24/apps
+ install -d /builddir/build/BUILDROOT/pycharm-community-2024.3.2-1.el8.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.el8.x86_64/usr/share/icons/hicolor/24x24/apps/pycharm-community.png
+ chmod 0644 /builddir/build/BUILDROOT/pycharm-community-2024.3.2-1.el8.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.el8.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.el8.x86_64/usr/share/icons/hicolor/32x32/apps
+ install -d /builddir/build/BUILDROOT/pycharm-community-2024.3.2-1.el8.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.el8.x86_64/usr/share/icons/hicolor/32x32/apps/pycharm-community.png
+ chmod 0644 /builddir/build/BUILDROOT/pycharm-community-2024.3.2-1.el8.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.el8.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.el8.x86_64/usr/share/icons/hicolor/48x48/apps
+ install -d /builddir/build/BUILDROOT/pycharm-community-2024.3.2-1.el8.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.el8.x86_64/usr/share/icons/hicolor/48x48/apps/pycharm-community.png
+ chmod 0644 /builddir/build/BUILDROOT/pycharm-community-2024.3.2-1.el8.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.el8.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.el8.x86_64/usr/share/icons/hicolor/64x64/apps
+ install -d /builddir/build/BUILDROOT/pycharm-community-2024.3.2-1.el8.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.el8.x86_64/usr/share/icons/hicolor/64x64/apps/pycharm-community.png
+ chmod 0644 /builddir/build/BUILDROOT/pycharm-community-2024.3.2-1.el8.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.el8.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.el8.x86_64/usr/share/icons/hicolor/128x128/apps
+ install -d /builddir/build/BUILDROOT/pycharm-community-2024.3.2-1.el8.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.el8.x86_64/usr/share/icons/hicolor/128x128/apps/pycharm-community.png
+ chmod 0644 /builddir/build/BUILDROOT/pycharm-community-2024.3.2-1.el8.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.el8.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.el8.x86_64/usr/share/icons/hicolor/256x256/apps
+ install -d /builddir/build/BUILDROOT/pycharm-community-2024.3.2-1.el8.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.el8.x86_64/usr/share/icons/hicolor/256x256/apps/pycharm-community.png
+ chmod 0644 /builddir/build/BUILDROOT/pycharm-community-2024.3.2-1.el8.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.el8.x86_64/usr/share/icons/hicolor/256x256/apps/pycharm-community.png
+ install -d /builddir/build/BUILDROOT/pycharm-community-2024.3.2-1.el8.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.el8.x86_64/usr/share/metainfo/pycharm-community.metainfo.xml
+ install -d /builddir/build/BUILDROOT/pycharm-community-2024.3.2-1.el8.x86_64/usr/bin
+ ln -s /usr/share/java/pycharm-community/bin/pycharm /builddir/build/BUILDROOT/pycharm-community-2024.3.2-1.el8.x86_64/usr/bin/pycharm-community
+ install -d /builddir/build/BUILDROOT/pycharm-community-2024.3.2-1.el8.x86_64/usr/share/applications
+ install -m 0644 -p /builddir/build/SOURCES/pycharm-community.desktop /builddir/build/BUILDROOT/pycharm-community-2024.3.2-1.el8.x86_64/usr/share/applications/pycharm-community.desktop
+ install -d /builddir/build/BUILDROOT/pycharm-community-2024.3.2-1.el8.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.el8.x86_64/usr/share/mime/packages/pycharm-community.xml
+ tail -n +2 /builddir/build/BUILDROOT/pycharm-community-2024.3.2-1.el8.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 "
                           "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_parame+ sed -i '1 i #!/usr/bin/env python3' /builddir/build/BUILDROOT/pycharm-community-2024.3.2-1.el8.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.el8.x86_64/usr/share/java/pycharm-community/plugins/python-ce/helpers/pycodestyle.py
ters(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.el8.x86_64/usr/share/java/pycharm-community/plugins/python-ce/helpers/pycodestyle.py
+ /usr/lib/rpm/check-buildroot
+ /usr/lib/rpm/redhat/brp-ldconfig
/sbin/ldconfig: Warning: ignoring configuration file that cannot be opened: /etc/ld.so.conf: No such file or directory
+ /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/brp-strip-static-archive /bin/true
+ /usr/lib/rpm/brp-python-hardlink
+ PYTHON3=/usr/bin/python3.6
+ /usr/lib/rpm/redhat/brp-mangle-shebangs
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/pycodestyle-2.10.0.py from /usr/bin/env python3 to #!/usr/bin/python3.6
mangling shebang in /usr/share/java/pycharm-community/plugins/python-ce/helpers/py3only/docutils/utils/smartquotes.py from /usr/bin/python3 to #!/usr/bin/python3.6
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.6
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.6
mangling shebang in /usr/share/java/pycharm-community/plugins/python-ce/helpers/pycodestyle.py from /usr/bin/env python3 to #!/usr/bin/python3.6
*** 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.FC9dcw
+ 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.el8.x86_64/usr/share/metainfo/pycharm-community.metainfo.xml
/builddir/build/BUILDROOT/pycharm-community-2024.3.2-1.el8.x86_64/usr/share/metainfo/pycharm-community.metainfo.xml: OK
+ desktop-file-validate /builddir/build/BUILDROOT/pycharm-community-2024.3.2-1.el8.x86_64/usr/share/applications/pycharm-community.desktop
+ exit 0
Processing files: pycharm-community-2024.3.2-1.el8.x86_64
Executing(%license): /bin/sh -e /var/tmp/rpm-tmp.RslnOI
+ umask 022
+ cd /builddir/build/BUILD
+ cd pycharm-community-2024.3.2
+ LICENSEDIR=/builddir/build/BUILDROOT/pycharm-community-2024.3.2-1.el8.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.el8.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.el8.x86_64/usr/share/licenses/pycharm-community
+ exit 0
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.el8 pycharm-community(x86-64) = 2024.3.2-1.el8
Requires(rpmlib): rpmlib(CompressedFileNames) <= 3.0.4-1 rpmlib(FileDigests) <= 4.6.0-1 rpmlib(PayloadFilesHavePrefix) <= 4.0-1
Requires: /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.el8
Processing files: pycharm-community-doc-2024.3.2-1.el8.noarch
Executing(%doc): /bin/sh -e /var/tmp/rpm-tmp.64Xypy
+ umask 022
+ cd /builddir/build/BUILD
+ cd pycharm-community-2024.3.2
+ DOCDIR=/builddir/build/BUILDROOT/pycharm-community-2024.3.2-1.el8.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.el8.x86_64/usr/share/doc/pycharm-community-doc
+ cp -pr help/ /builddir/build/BUILDROOT/pycharm-community-2024.3.2-1.el8.x86_64/usr/share/doc/pycharm-community-doc
+ cp -pr Install-Linux-tar.txt /builddir/build/BUILDROOT/pycharm-community-2024.3.2-1.el8.x86_64/usr/share/doc/pycharm-community-doc
+ exit 0
Provides: pycharm-community-doc = 2024.3.2-1.el8
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.el8.x86_64
Wrote: /builddir/build/RPMS/pycharm-community-2024.3.2-1.el8.x86_64.rpm
Wrote: /builddir/build/RPMS/pycharm-community-doc-2024.3.2-1.el8.noarch.rpm
Executing(%clean): /bin/sh -e /var/tmp/rpm-tmp.DbQPJk
+ 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.el8.x86_64
+ exit 0
Finish: rpmbuild pycharm-community-2024.3.2-1.el8.src.rpm
Finish: build phase for pycharm-community-2024.3.2-1.el8.src.rpm
INFO: chroot_scan: 3 files copied to /var/lib/copr-rpmbuild/results/chroot_scan
INFO: /var/lib/mock/rhel+epel-8-x86_64-1738090622.174514/root/var/log/dnf.log
/var/lib/mock/rhel+epel-8-x86_64-1738090622.174514/root/var/log/dnf.librepo.log
/var/lib/mock/rhel+epel-8-x86_64-1738090622.174514/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.el8.src.rpm) Config(child) 7 minutes 8 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-doc",
            "epoch": null,
            "version": "2024.3.2",
            "release": "1.el8",
            "arch": "noarch"
        },
        {
            "name": "pycharm-community",
            "epoch": null,
            "version": "2024.3.2",
            "release": "1.el8",
            "arch": "src"
        },
        {
            "name": "pycharm-community",
            "epoch": null,
            "version": "2024.3.2",
            "release": "1.el8",
            "arch": "x86_64"
        }
    ]
}
RPMResults finished