<86>Jul 9 05:04:37 userdel[2811518]: delete user 'rooter' <86>Jul 9 05:04:37 userdel[2811518]: removed group 'rooter' owned by 'rooter' <86>Jul 9 05:04:37 userdel[2811518]: removed shadow group 'rooter' owned by 'rooter' <86>Jul 9 05:04:37 groupadd[2811584]: group added to /etc/group: name=rooter, GID=1838 <86>Jul 9 05:04:37 groupadd[2811584]: group added to /etc/gshadow: name=rooter <86>Jul 9 05:04:37 groupadd[2811584]: new group: name=rooter, GID=1838 <86>Jul 9 05:04:37 useradd[2811617]: new user: name=rooter, UID=1838, GID=1838, home=/root, shell=/bin/bash, from=none <86>Jul 9 05:04:37 userdel[2811680]: delete user 'builder' <86>Jul 9 05:04:37 userdel[2811680]: removed group 'builder' owned by 'builder' <86>Jul 9 05:04:37 userdel[2811680]: removed shadow group 'builder' owned by 'builder' <86>Jul 9 05:04:37 groupadd[2811743]: group added to /etc/group: name=builder, GID=1839 <86>Jul 9 05:04:37 groupadd[2811743]: group added to /etc/gshadow: name=builder <86>Jul 9 05:04:37 groupadd[2811743]: new group: name=builder, GID=1839 <86>Jul 9 05:04:37 useradd[2811769]: new user: name=builder, UID=1839, GID=1839, home=/usr/src, shell=/bin/bash, from=none <13>Jul 9 05:04:40 rpmi: libmpdec3-2.5.1-alt3 sisyphus+314490.500.5.1 1675432004 installed <13>Jul 9 05:04:40 rpmi: libgdbm-1.8.3-alt10 sisyphus+278100.1600.1.1 1626058413 installed <13>Jul 9 05:04:40 rpmi: libexpat-2.5.0-alt1 sisyphus+309227.100.1.1 1667075764 installed <13>Jul 9 05:04:40 rpmi: libb2-0.98.1-alt1_1 sisyphus+291614.100.1.1 1638962877 installed <13>Jul 9 05:04:40 rpmi: libp11-kit-0.25.0-alt1 sisyphus+324318.100.1.1 1688574728 installed <13>Jul 9 05:04:40 rpmi: libtasn1-4.19.0-alt2 sisyphus+323514.100.1.1 1687445894 installed <13>Jul 9 05:04:40 rpmi: rpm-macros-alternatives-0.5.2-alt2 sisyphus+315270.200.2.1 1676457367 installed <13>Jul 9 05:04:40 rpmi: alternatives-0.5.2-alt2 sisyphus+315270.200.2.1 1676457367 installed <13>Jul 9 05:04:40 rpmi: ca-certificates-2022.12.14-alt1 sisyphus+311754.200.1.1 1671046143 installed <13>Jul 9 05:04:40 rpmi: ca-trust-0.1.4-alt1 sisyphus+308690.100.1.1 1666182992 installed <13>Jul 9 05:04:40 rpmi: p11-kit-trust-0.25.0-alt1 sisyphus+324318.100.1.1 1688574728 installed <13>Jul 9 05:04:40 rpmi: libcrypto1.1-1.1.1u-alt1 sisyphus+322200.100.1.1 1685474736 installed <13>Jul 9 05:04:40 rpmi: libssl1.1-1.1.1u-alt1 sisyphus+322200.100.1.1 1685474736 installed <13>Jul 9 05:04:40 rpmi: python3-3.11.4-alt2 sisyphus+323357.100.1.1 1687257026 installed <13>Jul 9 05:04:41 rpmi: python3-base-3.11.4-alt2 sisyphus+323357.100.1.1 1687257026 installed <13>Jul 9 05:04:41 rpmi: tests-for-installed-python3-pkgs-0.1.22-alt1 sisyphus+319076.100.3.1 1682536051 installed <13>Jul 9 05:04:41 rpmi: rpm-build-python3-0.1.22-alt1 sisyphus+319076.100.3.1 1682536051 installed <13>Jul 9 05:04:43 rpmi: python3-module-pluggy-1.0.0-alt1 sisyphus+284853.100.1.1 1631109373 installed <13>Jul 9 05:04:43 rpmi: python3-module-pkg_resources-1:68.0.0-alt1 sisyphus+323352.700.5.2 1687447030 installed <13>Jul 9 05:04:43 rpmi: python3-module-packaging-23.1-alt1 sisyphus+318906.100.2.1 1683015285 installed <13>Jul 9 05:04:43 rpmi: python3-module-iniconfig-2.0.0-alt1 sisyphus+314076.200.3.1 1674737275 installed <13>Jul 9 05:04:43 rpmi: python3-module-pytest-7.3.2-alt1 sisyphus+322897.100.1.1 1686653468 installed <13>Jul 9 05:04:43 rpmi: python3-module-pycparser-2.21-alt1.1 sisyphus+309935.7300.4.1 1668527005 installed <13>Jul 9 05:04:43 rpmi: python3-module-cffi-1.15.1-alt2 sisyphus+311250.35200.176.1 1685739391 installed <13>Jul 9 05:04:43 rpmi: libxxhash-0.8.0-alt2 sisyphus+277476.100.2.1 1625621312 installed <13>Jul 9 05:04:43 rpmi: libsnappy-1.1.7-alt1 sisyphus+276400.100.1.2 1625016393 installed <13>Jul 9 05:04:43 rpmi: libpython3-3.11.4-alt2 sisyphus+323357.100.1.1 1687257026 installed <13>Jul 9 05:04:43 rpmi: libncurses-6.3.20220618-alt1 sisyphus+302449.100.1.1 1655835246 installed <13>Jul 9 05:04:43 rpmi: libtinfo-devel-6.3.20220618-alt1 sisyphus+302449.100.1.1 1655835246 installed <13>Jul 9 05:04:43 rpmi: libncurses-devel-6.3.20220618-alt1 sisyphus+302449.100.1.1 1655835246 installed <13>Jul 9 05:04:44 rpmi: python3-dev-3.11.4-alt2 sisyphus+323357.100.1.1 1687257026 installed <13>Jul 9 05:04:44 rpmi: python3-module-setuptools-1:68.0.0-alt1 sisyphus+323352.700.5.2 1687447030 installed <13>Jul 9 05:04:44 rpmi: liblz4-1:1.9.4-alt1 sisyphus+309416.100.1.1 1667412981 installed <13>Jul 9 05:04:44 rpmi: python3-module-lz4-4.3.2-alt1 sisyphus+311250.36620.176.1 1685740346 installed <13>Jul 9 05:04:44 rpmi: python3-module-wheel-0.40.0-alt1 sisyphus+318890.200.2.1 1682002147 installed <13>Jul 9 05:04:44 rpmi: python3-module-snappy-0.6.1-alt2 sisyphus+311250.37140.176.1 1685740402 installed <13>Jul 9 05:04:44 rpmi: python3-module-xxhash-3.1.0-alt1 sisyphus+311250.41100.176.1 1685741043 installed <13>Jul 9 05:04:44 rpmi: python3-module-pytest-mock-3.11.1-alt1 sisyphus+323311.100.2.2 1687175799 installed <13>Jul 9 05:04:44 rpmi: python3-module-mock-5.0.2-alt1 sisyphus+321633.100.2.2 1684864598 installed <13>Jul 9 05:04:44 rpmi: python3-module-crc32c-2.3-alt1 sisyphus+311250.37500.176.1 1685740575 installed Building target platforms: x86_64 Building for target x86_64 Wrote: /usr/src/in/nosrpm/python3-module-kafka-2.0.2-alt2.nosrc.rpm (w1.gzdio) <13>Jul 9 05:04:46 rpmi: python3-module-system-seed-wheels-0.0.1-alt1 sisyphus+270533.400.6.1 1619683425 installed <13>Jul 9 05:04:46 rpmi: python3-module-filelock-3.12.2-alt1 sisyphus+322904.200.2.1 1686751677 installed <13>Jul 9 05:04:46 rpmi: python3-module-pip-wheel-23.1.2-alt1 sisyphus+319471.100.2.1 1683105535 installed <13>Jul 9 05:04:46 rpmi: python3-module-setuptools-wheel-1:68.0.0-alt1 sisyphus+323352.700.5.2 1687447030 installed <13>Jul 9 05:04:46 rpmi: python3-module-wheel-wheel-0.40.0-alt1 sisyphus+318890.200.2.1 1682002147 installed <13>Jul 9 05:04:46 rpmi: python3-module-system-seed-wheels-wheels-0.0.1-alt1 sisyphus+270533.400.6.1 1619683425 installed <13>Jul 9 05:04:46 rpmi: python3-module-tomli-2.0.1-alt2 sisyphus+305000.3300.2.1 1660575675 installed <13>Jul 9 05:04:46 rpmi: python3-module-six-1.16.0-alt2 sisyphus+324249.100.1.1 1688484676 installed <13>Jul 9 05:04:46 rpmi: python3-module-platformdirs-3.7.0-alt1 sisyphus+323352.340.5.2 1687446862 installed <13>Jul 9 05:04:46 rpmi: python3-module-distlib-0.3.6-alt1 sisyphus+306796.100.1.1 1663166230 installed <13>Jul 9 05:04:46 rpmi: python3-module-virtualenv-20.23.1-alt1 sisyphus+323352.600.5.2 1687446966 installed <13>Jul 9 05:04:46 rpmi: python3-module-apipkg-3.0.1-alt2 sisyphus+323078.100.1.1 1686823905 installed <13>Jul 9 05:04:46 rpmi: python3-module-py-1.11.0-alt1 sisyphus+295927.100.2.1 1646050822 installed <13>Jul 9 05:04:46 rpmi: python3-module-tox-3.27.1-alt1 sisyphus+309865.500.3.1 1668591286 installed <13>Jul 9 05:04:46 rpmi: python3-module-tox-console-scripts-0.3.2-alt1 sisyphus+301745.100.2.1 1655211258 installed <13>Jul 9 05:04:46 rpmi: python3-module-tox-no-deps-0.2.0-alt1 sisyphus+301745.200.2.1 1655211304 installed <13>Jul 9 05:04:46 rpmi: python3-module-pyproject-installer-0.5.1-alt1 sisyphus+322305.100.2.1 1686212184 installed Installing python3-module-kafka-2.0.2-alt2.src.rpm Building target platforms: x86_64 Building for target x86_64 Executing(%prep): /bin/sh -e /usr/src/tmp/rpm-tmp.32187 + umask 022 + /bin/mkdir -p /usr/src/RPM/BUILD + cd /usr/src/RPM/BUILD + cd /usr/src/RPM/BUILD + rm -rf python3-module-kafka-2.0.2 + echo 'Source #0 (python3-module-kafka-2.0.2.tar):' Source #0 (python3-module-kafka-2.0.2.tar): + /bin/tar -xf /usr/src/RPM/SOURCES/python3-module-kafka-2.0.2.tar + cd python3-module-kafka-2.0.2 + /bin/chmod -c -Rf u+rwX,go-w . + echo 'Patch #0 (python3-module-kafka-2.0.2-alt.patch):' Patch #0 (python3-module-kafka-2.0.2-alt.patch): + /usr/bin/patch -p1 patching file kafka/client_async.py patching file test/test_conn.py patching file test/test_consumer_integration.py + VENDORED_PATH=kafka/vendor + UNVENDORED_PATH=kafka/vendor/__init__.py + rm -r kafka/vendor + mkdir kafka/vendor + cp /usr/src/RPM/SOURCES/debundler.py.in kafka/vendor/__init__.py + sed -i -e 's/@VENDORED_ROOT@/"kafka.vendor"/' -e s/@VENDORED_FAKE_PACKAGES@/None/ kafka/vendor/__init__.py + exit 0 Executing(%build): /bin/sh -e /usr/src/tmp/rpm-tmp.32187 + umask 022 + /bin/mkdir -p /usr/src/RPM/BUILD + cd /usr/src/RPM/BUILD + cd python3-module-kafka-2.0.2 + export 'CFLAGS=-pipe -frecord-gcc-switches -Wall -g -O2 -flto=auto' + CFLAGS='-pipe -frecord-gcc-switches -Wall -g -O2 -flto=auto' + export 'CXXFLAGS=-pipe -frecord-gcc-switches -Wall -g -O2 -flto=auto' + CXXFLAGS='-pipe -frecord-gcc-switches -Wall -g -O2 -flto=auto' + export 'FFLAGS=-pipe -frecord-gcc-switches -Wall -g -O2 -flto=auto' + FFLAGS='-pipe -frecord-gcc-switches -Wall -g -O2 -flto=auto' + /usr/bin/python3 -m pyproject_installer -v build INFO : pyproject_installer.build_cmd._build : Building wheel INFO : pyproject_installer.build_cmd._build : Source tree: /usr/src/RPM/BUILD/python3-module-kafka-2.0.2 INFO : pyproject_installer.build_cmd._build : Output dir: /usr/src/RPM/BUILD/python3-module-kafka-2.0.2/dist DEBUG : pyproject_installer.lib.build_backend : Validating source path DEBUG : pyproject_installer.lib.build_backend : Checking for PEP517 spec INFO : pyproject_installer.lib.build_backend : pyproject.toml was not found, using defaults INFO : backend_caller.py : Calling hook build_wheel in subprocess INFO : backend_caller.py : Build backend: setuptools.build_meta:__legacy__ INFO : backend_caller.py : Hook args: ['/usr/src/RPM/BUILD/python3-module-kafka-2.0.2/dist'] INFO : backend_caller.py : Hook kwargs: {'config_settings': None} /usr/lib64/python3/site-packages/setuptools/config/setupcfg.py:293: _DeprecatedConfig: Deprecated config in `setup.cfg` !! ******************************************************************************** The license_file parameter is deprecated, use license_files instead. By 2023-Oct-30, you need to update your project and remove deprecated calls or your builds will no longer be supported. See https://setuptools.pypa.io/en/latest/userguide/declarative_config.html for details. ******************************************************************************** !! parsed = self.parsers.get(option_name, lambda x: x)(value) INFO : root : running bdist_wheel INFO : root : running build INFO : root : running build_py INFO : root : creating build INFO : root : creating build/lib INFO : root : creating build/lib/kafka INFO : root : copying kafka/client_async.py -> build/lib/kafka INFO : root : copying kafka/version.py -> build/lib/kafka INFO : root : copying kafka/util.py -> build/lib/kafka INFO : root : copying kafka/structs.py -> build/lib/kafka INFO : root : copying kafka/scram.py -> build/lib/kafka INFO : root : copying kafka/future.py -> build/lib/kafka INFO : root : copying kafka/errors.py -> build/lib/kafka INFO : root : copying kafka/conn.py -> build/lib/kafka INFO : root : copying kafka/codec.py -> build/lib/kafka INFO : root : copying kafka/cluster.py -> build/lib/kafka INFO : root : copying kafka/__init__.py -> build/lib/kafka INFO : root : creating build/lib/kafka/vendor INFO : root : copying kafka/vendor/__init__.py -> build/lib/kafka/vendor INFO : root : creating build/lib/kafka/serializer INFO : root : copying kafka/serializer/abstract.py -> build/lib/kafka/serializer INFO : root : copying kafka/serializer/__init__.py -> build/lib/kafka/serializer INFO : root : creating build/lib/kafka/record INFO : root : copying kafka/record/util.py -> build/lib/kafka/record INFO : root : copying kafka/record/memory_records.py -> build/lib/kafka/record INFO : root : copying kafka/record/legacy_records.py -> build/lib/kafka/record INFO : root : copying kafka/record/default_records.py -> build/lib/kafka/record INFO : root : copying kafka/record/abc.py -> build/lib/kafka/record INFO : root : copying kafka/record/_crc32c.py -> build/lib/kafka/record INFO : root : copying kafka/record/__init__.py -> build/lib/kafka/record INFO : root : creating build/lib/kafka/protocol INFO : root : copying kafka/protocol/types.py -> build/lib/kafka/protocol INFO : root : copying kafka/protocol/struct.py -> build/lib/kafka/protocol INFO : root : copying kafka/protocol/produce.py -> build/lib/kafka/protocol INFO : root : copying kafka/protocol/pickle.py -> build/lib/kafka/protocol INFO : root : copying kafka/protocol/parser.py -> build/lib/kafka/protocol INFO : root : copying kafka/protocol/offset.py -> build/lib/kafka/protocol INFO : root : copying kafka/protocol/metadata.py -> build/lib/kafka/protocol INFO : root : copying kafka/protocol/message.py -> build/lib/kafka/protocol INFO : root : copying kafka/protocol/group.py -> build/lib/kafka/protocol INFO : root : copying kafka/protocol/frame.py -> build/lib/kafka/protocol INFO : root : copying kafka/protocol/fetch.py -> build/lib/kafka/protocol INFO : root : copying kafka/protocol/commit.py -> build/lib/kafka/protocol INFO : root : copying kafka/protocol/api.py -> build/lib/kafka/protocol INFO : root : copying kafka/protocol/admin.py -> build/lib/kafka/protocol INFO : root : copying kafka/protocol/abstract.py -> build/lib/kafka/protocol INFO : root : copying kafka/protocol/__init__.py -> build/lib/kafka/protocol INFO : root : creating build/lib/kafka/producer INFO : root : copying kafka/producer/sender.py -> build/lib/kafka/producer INFO : root : copying kafka/producer/record_accumulator.py -> build/lib/kafka/producer INFO : root : copying kafka/producer/kafka.py -> build/lib/kafka/producer INFO : root : copying kafka/producer/future.py -> build/lib/kafka/producer INFO : root : copying kafka/producer/buffer.py -> build/lib/kafka/producer INFO : root : copying kafka/producer/__init__.py -> build/lib/kafka/producer INFO : root : creating build/lib/kafka/partitioner INFO : root : copying kafka/partitioner/default.py -> build/lib/kafka/partitioner INFO : root : copying kafka/partitioner/__init__.py -> build/lib/kafka/partitioner INFO : root : creating build/lib/kafka/oauth INFO : root : copying kafka/oauth/abstract.py -> build/lib/kafka/oauth INFO : root : copying kafka/oauth/__init__.py -> build/lib/kafka/oauth INFO : root : creating build/lib/kafka/metrics INFO : root : copying kafka/metrics/stat.py -> build/lib/kafka/metrics INFO : root : copying kafka/metrics/quota.py -> build/lib/kafka/metrics INFO : root : copying kafka/metrics/metrics_reporter.py -> build/lib/kafka/metrics INFO : root : copying kafka/metrics/metrics.py -> build/lib/kafka/metrics INFO : root : copying kafka/metrics/metric_name.py -> build/lib/kafka/metrics INFO : root : copying kafka/metrics/metric_config.py -> build/lib/kafka/metrics INFO : root : copying kafka/metrics/measurable_stat.py -> build/lib/kafka/metrics INFO : root : copying kafka/metrics/measurable.py -> build/lib/kafka/metrics INFO : root : copying kafka/metrics/kafka_metric.py -> build/lib/kafka/metrics INFO : root : copying kafka/metrics/dict_reporter.py -> build/lib/kafka/metrics INFO : root : copying kafka/metrics/compound_stat.py -> build/lib/kafka/metrics INFO : root : copying kafka/metrics/__init__.py -> build/lib/kafka/metrics INFO : root : creating build/lib/kafka/coordinator INFO : root : copying kafka/coordinator/protocol.py -> build/lib/kafka/coordinator INFO : root : copying kafka/coordinator/heartbeat.py -> build/lib/kafka/coordinator INFO : root : copying kafka/coordinator/consumer.py -> build/lib/kafka/coordinator INFO : root : copying kafka/coordinator/base.py -> build/lib/kafka/coordinator INFO : root : copying kafka/coordinator/__init__.py -> build/lib/kafka/coordinator INFO : root : creating build/lib/kafka/consumer INFO : root : copying kafka/consumer/subscription_state.py -> build/lib/kafka/consumer INFO : root : copying kafka/consumer/group.py -> build/lib/kafka/consumer INFO : root : copying kafka/consumer/fetcher.py -> build/lib/kafka/consumer INFO : root : copying kafka/consumer/__init__.py -> build/lib/kafka/consumer INFO : root : creating build/lib/kafka/admin INFO : root : copying kafka/admin/new_topic.py -> build/lib/kafka/admin INFO : root : copying kafka/admin/new_partitions.py -> build/lib/kafka/admin INFO : root : copying kafka/admin/config_resource.py -> build/lib/kafka/admin INFO : root : copying kafka/admin/client.py -> build/lib/kafka/admin INFO : root : copying kafka/admin/acl_resource.py -> build/lib/kafka/admin INFO : root : copying kafka/admin/__init__.py -> build/lib/kafka/admin INFO : root : creating build/lib/kafka/metrics/stats INFO : root : copying kafka/metrics/stats/total.py -> build/lib/kafka/metrics/stats INFO : root : copying kafka/metrics/stats/sensor.py -> build/lib/kafka/metrics/stats INFO : root : copying kafka/metrics/stats/sampled_stat.py -> build/lib/kafka/metrics/stats INFO : root : copying kafka/metrics/stats/rate.py -> build/lib/kafka/metrics/stats INFO : root : copying kafka/metrics/stats/percentiles.py -> build/lib/kafka/metrics/stats INFO : root : copying kafka/metrics/stats/percentile.py -> build/lib/kafka/metrics/stats INFO : root : copying kafka/metrics/stats/min_stat.py -> build/lib/kafka/metrics/stats INFO : root : copying kafka/metrics/stats/max_stat.py -> build/lib/kafka/metrics/stats INFO : root : copying kafka/metrics/stats/histogram.py -> build/lib/kafka/metrics/stats INFO : root : copying kafka/metrics/stats/count.py -> build/lib/kafka/metrics/stats INFO : root : copying kafka/metrics/stats/avg.py -> build/lib/kafka/metrics/stats INFO : root : copying kafka/metrics/stats/__init__.py -> build/lib/kafka/metrics/stats INFO : root : creating build/lib/kafka/coordinator/assignors INFO : root : copying kafka/coordinator/assignors/roundrobin.py -> build/lib/kafka/coordinator/assignors INFO : root : copying kafka/coordinator/assignors/range.py -> build/lib/kafka/coordinator/assignors INFO : root : copying kafka/coordinator/assignors/abstract.py -> build/lib/kafka/coordinator/assignors INFO : root : copying kafka/coordinator/assignors/__init__.py -> build/lib/kafka/coordinator/assignors INFO : root : creating build/lib/kafka/coordinator/assignors/sticky INFO : root : copying kafka/coordinator/assignors/sticky/sticky_assignor.py -> build/lib/kafka/coordinator/assignors/sticky INFO : root : copying kafka/coordinator/assignors/sticky/sorted_set.py -> build/lib/kafka/coordinator/assignors/sticky INFO : root : copying kafka/coordinator/assignors/sticky/partition_movements.py -> build/lib/kafka/coordinator/assignors/sticky INFO : root : copying kafka/coordinator/assignors/sticky/__init__.py -> build/lib/kafka/coordinator/assignors/sticky INFO : wheel : installing to build/bdist.linux-x86_64/wheel INFO : root : running install INFO : root : running install_lib INFO : root : creating build/bdist.linux-x86_64 INFO : root : creating build/bdist.linux-x86_64/wheel INFO : root : creating build/bdist.linux-x86_64/wheel/kafka INFO : root : creating build/bdist.linux-x86_64/wheel/kafka/admin INFO : root : copying build/lib/kafka/admin/__init__.py -> build/bdist.linux-x86_64/wheel/kafka/admin INFO : root : copying build/lib/kafka/admin/acl_resource.py -> build/bdist.linux-x86_64/wheel/kafka/admin INFO : root : copying build/lib/kafka/admin/client.py -> build/bdist.linux-x86_64/wheel/kafka/admin INFO : root : copying build/lib/kafka/admin/config_resource.py -> build/bdist.linux-x86_64/wheel/kafka/admin INFO : root : copying build/lib/kafka/admin/new_partitions.py -> build/bdist.linux-x86_64/wheel/kafka/admin INFO : root : copying build/lib/kafka/admin/new_topic.py -> build/bdist.linux-x86_64/wheel/kafka/admin INFO : root : creating build/bdist.linux-x86_64/wheel/kafka/consumer INFO : root : copying build/lib/kafka/consumer/__init__.py -> build/bdist.linux-x86_64/wheel/kafka/consumer INFO : root : copying build/lib/kafka/consumer/fetcher.py -> build/bdist.linux-x86_64/wheel/kafka/consumer INFO : root : copying build/lib/kafka/consumer/group.py -> build/bdist.linux-x86_64/wheel/kafka/consumer INFO : root : copying build/lib/kafka/consumer/subscription_state.py -> build/bdist.linux-x86_64/wheel/kafka/consumer INFO : root : creating build/bdist.linux-x86_64/wheel/kafka/coordinator INFO : root : creating build/bdist.linux-x86_64/wheel/kafka/coordinator/assignors INFO : root : creating build/bdist.linux-x86_64/wheel/kafka/coordinator/assignors/sticky INFO : root : copying build/lib/kafka/coordinator/assignors/sticky/__init__.py -> build/bdist.linux-x86_64/wheel/kafka/coordinator/assignors/sticky INFO : root : copying build/lib/kafka/coordinator/assignors/sticky/partition_movements.py -> build/bdist.linux-x86_64/wheel/kafka/coordinator/assignors/sticky INFO : root : copying build/lib/kafka/coordinator/assignors/sticky/sorted_set.py -> build/bdist.linux-x86_64/wheel/kafka/coordinator/assignors/sticky INFO : root : copying build/lib/kafka/coordinator/assignors/sticky/sticky_assignor.py -> build/bdist.linux-x86_64/wheel/kafka/coordinator/assignors/sticky INFO : root : copying build/lib/kafka/coordinator/assignors/__init__.py -> build/bdist.linux-x86_64/wheel/kafka/coordinator/assignors INFO : root : copying build/lib/kafka/coordinator/assignors/abstract.py -> build/bdist.linux-x86_64/wheel/kafka/coordinator/assignors INFO : root : copying build/lib/kafka/coordinator/assignors/range.py -> build/bdist.linux-x86_64/wheel/kafka/coordinator/assignors INFO : root : copying build/lib/kafka/coordinator/assignors/roundrobin.py -> build/bdist.linux-x86_64/wheel/kafka/coordinator/assignors INFO : root : copying build/lib/kafka/coordinator/__init__.py -> build/bdist.linux-x86_64/wheel/kafka/coordinator INFO : root : copying build/lib/kafka/coordinator/base.py -> build/bdist.linux-x86_64/wheel/kafka/coordinator INFO : root : copying build/lib/kafka/coordinator/consumer.py -> build/bdist.linux-x86_64/wheel/kafka/coordinator INFO : root : copying build/lib/kafka/coordinator/heartbeat.py -> build/bdist.linux-x86_64/wheel/kafka/coordinator INFO : root : copying build/lib/kafka/coordinator/protocol.py -> build/bdist.linux-x86_64/wheel/kafka/coordinator INFO : root : creating build/bdist.linux-x86_64/wheel/kafka/metrics INFO : root : creating build/bdist.linux-x86_64/wheel/kafka/metrics/stats INFO : root : copying build/lib/kafka/metrics/stats/__init__.py -> build/bdist.linux-x86_64/wheel/kafka/metrics/stats INFO : root : copying build/lib/kafka/metrics/stats/avg.py -> build/bdist.linux-x86_64/wheel/kafka/metrics/stats INFO : root : copying build/lib/kafka/metrics/stats/count.py -> build/bdist.linux-x86_64/wheel/kafka/metrics/stats INFO : root : copying build/lib/kafka/metrics/stats/histogram.py -> build/bdist.linux-x86_64/wheel/kafka/metrics/stats INFO : root : copying build/lib/kafka/metrics/stats/max_stat.py -> build/bdist.linux-x86_64/wheel/kafka/metrics/stats INFO : root : copying build/lib/kafka/metrics/stats/min_stat.py -> build/bdist.linux-x86_64/wheel/kafka/metrics/stats INFO : root : copying build/lib/kafka/metrics/stats/percentile.py -> build/bdist.linux-x86_64/wheel/kafka/metrics/stats INFO : root : copying build/lib/kafka/metrics/stats/percentiles.py -> build/bdist.linux-x86_64/wheel/kafka/metrics/stats INFO : root : copying build/lib/kafka/metrics/stats/rate.py -> build/bdist.linux-x86_64/wheel/kafka/metrics/stats INFO : root : copying build/lib/kafka/metrics/stats/sampled_stat.py -> build/bdist.linux-x86_64/wheel/kafka/metrics/stats INFO : root : copying build/lib/kafka/metrics/stats/sensor.py -> build/bdist.linux-x86_64/wheel/kafka/metrics/stats INFO : root : copying build/lib/kafka/metrics/stats/total.py -> build/bdist.linux-x86_64/wheel/kafka/metrics/stats INFO : root : copying build/lib/kafka/metrics/__init__.py -> build/bdist.linux-x86_64/wheel/kafka/metrics INFO : root : copying build/lib/kafka/metrics/compound_stat.py -> build/bdist.linux-x86_64/wheel/kafka/metrics INFO : root : copying build/lib/kafka/metrics/dict_reporter.py -> build/bdist.linux-x86_64/wheel/kafka/metrics INFO : root : copying build/lib/kafka/metrics/kafka_metric.py -> build/bdist.linux-x86_64/wheel/kafka/metrics INFO : root : copying build/lib/kafka/metrics/measurable.py -> build/bdist.linux-x86_64/wheel/kafka/metrics INFO : root : copying build/lib/kafka/metrics/measurable_stat.py -> build/bdist.linux-x86_64/wheel/kafka/metrics INFO : root : copying build/lib/kafka/metrics/metric_config.py -> build/bdist.linux-x86_64/wheel/kafka/metrics INFO : root : copying build/lib/kafka/metrics/metric_name.py -> build/bdist.linux-x86_64/wheel/kafka/metrics INFO : root : copying build/lib/kafka/metrics/metrics.py -> build/bdist.linux-x86_64/wheel/kafka/metrics INFO : root : copying build/lib/kafka/metrics/metrics_reporter.py -> build/bdist.linux-x86_64/wheel/kafka/metrics INFO : root : copying build/lib/kafka/metrics/quota.py -> build/bdist.linux-x86_64/wheel/kafka/metrics INFO : root : copying build/lib/kafka/metrics/stat.py -> build/bdist.linux-x86_64/wheel/kafka/metrics INFO : root : creating build/bdist.linux-x86_64/wheel/kafka/oauth INFO : root : copying build/lib/kafka/oauth/__init__.py -> build/bdist.linux-x86_64/wheel/kafka/oauth INFO : root : copying build/lib/kafka/oauth/abstract.py -> build/bdist.linux-x86_64/wheel/kafka/oauth INFO : root : creating build/bdist.linux-x86_64/wheel/kafka/partitioner INFO : root : copying build/lib/kafka/partitioner/__init__.py -> build/bdist.linux-x86_64/wheel/kafka/partitioner INFO : root : copying build/lib/kafka/partitioner/default.py -> build/bdist.linux-x86_64/wheel/kafka/partitioner INFO : root : creating build/bdist.linux-x86_64/wheel/kafka/producer INFO : root : copying build/lib/kafka/producer/__init__.py -> build/bdist.linux-x86_64/wheel/kafka/producer INFO : root : copying build/lib/kafka/producer/buffer.py -> build/bdist.linux-x86_64/wheel/kafka/producer INFO : root : copying build/lib/kafka/producer/future.py -> build/bdist.linux-x86_64/wheel/kafka/producer INFO : root : copying build/lib/kafka/producer/kafka.py -> build/bdist.linux-x86_64/wheel/kafka/producer INFO : root : copying build/lib/kafka/producer/record_accumulator.py -> build/bdist.linux-x86_64/wheel/kafka/producer INFO : root : copying build/lib/kafka/producer/sender.py -> build/bdist.linux-x86_64/wheel/kafka/producer INFO : root : creating build/bdist.linux-x86_64/wheel/kafka/protocol INFO : root : copying build/lib/kafka/protocol/__init__.py -> build/bdist.linux-x86_64/wheel/kafka/protocol INFO : root : copying build/lib/kafka/protocol/abstract.py -> build/bdist.linux-x86_64/wheel/kafka/protocol INFO : root : copying build/lib/kafka/protocol/admin.py -> build/bdist.linux-x86_64/wheel/kafka/protocol INFO : root : copying build/lib/kafka/protocol/api.py -> build/bdist.linux-x86_64/wheel/kafka/protocol INFO : root : copying build/lib/kafka/protocol/commit.py -> build/bdist.linux-x86_64/wheel/kafka/protocol INFO : root : copying build/lib/kafka/protocol/fetch.py -> build/bdist.linux-x86_64/wheel/kafka/protocol INFO : root : copying build/lib/kafka/protocol/frame.py -> build/bdist.linux-x86_64/wheel/kafka/protocol INFO : root : copying build/lib/kafka/protocol/group.py -> build/bdist.linux-x86_64/wheel/kafka/protocol INFO : root : copying build/lib/kafka/protocol/message.py -> build/bdist.linux-x86_64/wheel/kafka/protocol INFO : root : copying build/lib/kafka/protocol/metadata.py -> build/bdist.linux-x86_64/wheel/kafka/protocol INFO : root : copying build/lib/kafka/protocol/offset.py -> build/bdist.linux-x86_64/wheel/kafka/protocol INFO : root : copying build/lib/kafka/protocol/parser.py -> build/bdist.linux-x86_64/wheel/kafka/protocol INFO : root : copying build/lib/kafka/protocol/pickle.py -> build/bdist.linux-x86_64/wheel/kafka/protocol INFO : root : copying build/lib/kafka/protocol/produce.py -> build/bdist.linux-x86_64/wheel/kafka/protocol INFO : root : copying build/lib/kafka/protocol/struct.py -> build/bdist.linux-x86_64/wheel/kafka/protocol INFO : root : copying build/lib/kafka/protocol/types.py -> build/bdist.linux-x86_64/wheel/kafka/protocol INFO : root : creating build/bdist.linux-x86_64/wheel/kafka/record INFO : root : copying build/lib/kafka/record/__init__.py -> build/bdist.linux-x86_64/wheel/kafka/record INFO : root : copying build/lib/kafka/record/_crc32c.py -> build/bdist.linux-x86_64/wheel/kafka/record INFO : root : copying build/lib/kafka/record/abc.py -> build/bdist.linux-x86_64/wheel/kafka/record INFO : root : copying build/lib/kafka/record/default_records.py -> build/bdist.linux-x86_64/wheel/kafka/record INFO : root : copying build/lib/kafka/record/legacy_records.py -> build/bdist.linux-x86_64/wheel/kafka/record INFO : root : copying build/lib/kafka/record/memory_records.py -> build/bdist.linux-x86_64/wheel/kafka/record INFO : root : copying build/lib/kafka/record/util.py -> build/bdist.linux-x86_64/wheel/kafka/record INFO : root : creating build/bdist.linux-x86_64/wheel/kafka/serializer INFO : root : copying build/lib/kafka/serializer/__init__.py -> build/bdist.linux-x86_64/wheel/kafka/serializer INFO : root : copying build/lib/kafka/serializer/abstract.py -> build/bdist.linux-x86_64/wheel/kafka/serializer INFO : root : creating build/bdist.linux-x86_64/wheel/kafka/vendor INFO : root : copying build/lib/kafka/vendor/__init__.py -> build/bdist.linux-x86_64/wheel/kafka/vendor INFO : root : copying build/lib/kafka/__init__.py -> build/bdist.linux-x86_64/wheel/kafka INFO : root : copying build/lib/kafka/cluster.py -> build/bdist.linux-x86_64/wheel/kafka INFO : root : copying build/lib/kafka/codec.py -> build/bdist.linux-x86_64/wheel/kafka INFO : root : copying build/lib/kafka/conn.py -> build/bdist.linux-x86_64/wheel/kafka INFO : root : copying build/lib/kafka/errors.py -> build/bdist.linux-x86_64/wheel/kafka INFO : root : copying build/lib/kafka/future.py -> build/bdist.linux-x86_64/wheel/kafka INFO : root : copying build/lib/kafka/scram.py -> build/bdist.linux-x86_64/wheel/kafka INFO : root : copying build/lib/kafka/structs.py -> build/bdist.linux-x86_64/wheel/kafka INFO : root : copying build/lib/kafka/util.py -> build/bdist.linux-x86_64/wheel/kafka INFO : root : copying build/lib/kafka/version.py -> build/bdist.linux-x86_64/wheel/kafka INFO : root : copying build/lib/kafka/client_async.py -> build/bdist.linux-x86_64/wheel/kafka INFO : root : running install_egg_info INFO : root : running egg_info INFO : root : creating kafka_python.egg-info INFO : root : writing kafka_python.egg-info/PKG-INFO INFO : root : writing dependency_links to kafka_python.egg-info/dependency_links.txt INFO : root : writing requirements to kafka_python.egg-info/requires.txt INFO : root : writing top-level names to kafka_python.egg-info/top_level.txt INFO : root : writing manifest file 'kafka_python.egg-info/SOURCES.txt' INFO : root : reading manifest file 'kafka_python.egg-info/SOURCES.txt' INFO : root : reading manifest template 'MANIFEST.in' INFO : root : adding license file 'LICENSE' INFO : root : writing manifest file 'kafka_python.egg-info/SOURCES.txt' INFO : root : Copying kafka_python.egg-info to build/bdist.linux-x86_64/wheel/kafka_python-2.0.2-py3.11.egg-info INFO : root : running install_scripts INFO : wheel : creating build/bdist.linux-x86_64/wheel/kafka_python-2.0.2.dist-info/WHEEL INFO : wheel : creating '/usr/src/RPM/BUILD/python3-module-kafka-2.0.2/dist/.tmp-c1hsvrj2/kafka_python-2.0.2-py2.py3-none-any.whl' and adding 'build/bdist.linux-x86_64/wheel' to it INFO : wheel : adding 'kafka/__init__.py' INFO : wheel : adding 'kafka/client_async.py' INFO : wheel : adding 'kafka/cluster.py' INFO : wheel : adding 'kafka/codec.py' INFO : wheel : adding 'kafka/conn.py' INFO : wheel : adding 'kafka/errors.py' INFO : wheel : adding 'kafka/future.py' INFO : wheel : adding 'kafka/scram.py' INFO : wheel : adding 'kafka/structs.py' INFO : wheel : adding 'kafka/util.py' INFO : wheel : adding 'kafka/version.py' INFO : wheel : adding 'kafka/admin/__init__.py' INFO : wheel : adding 'kafka/admin/acl_resource.py' INFO : wheel : adding 'kafka/admin/client.py' INFO : wheel : adding 'kafka/admin/config_resource.py' INFO : wheel : adding 'kafka/admin/new_partitions.py' INFO : wheel : adding 'kafka/admin/new_topic.py' INFO : wheel : adding 'kafka/consumer/__init__.py' INFO : wheel : adding 'kafka/consumer/fetcher.py' INFO : wheel : adding 'kafka/consumer/group.py' INFO : wheel : adding 'kafka/consumer/subscription_state.py' INFO : wheel : adding 'kafka/coordinator/__init__.py' INFO : wheel : adding 'kafka/coordinator/base.py' INFO : wheel : adding 'kafka/coordinator/consumer.py' INFO : wheel : adding 'kafka/coordinator/heartbeat.py' INFO : wheel : adding 'kafka/coordinator/protocol.py' INFO : wheel : adding 'kafka/coordinator/assignors/__init__.py' INFO : wheel : adding 'kafka/coordinator/assignors/abstract.py' INFO : wheel : adding 'kafka/coordinator/assignors/range.py' INFO : wheel : adding 'kafka/coordinator/assignors/roundrobin.py' INFO : wheel : adding 'kafka/coordinator/assignors/sticky/__init__.py' INFO : wheel : adding 'kafka/coordinator/assignors/sticky/partition_movements.py' INFO : wheel : adding 'kafka/coordinator/assignors/sticky/sorted_set.py' INFO : wheel : adding 'kafka/coordinator/assignors/sticky/sticky_assignor.py' INFO : wheel : adding 'kafka/metrics/__init__.py' INFO : wheel : adding 'kafka/metrics/compound_stat.py' INFO : wheel : adding 'kafka/metrics/dict_reporter.py' INFO : wheel : adding 'kafka/metrics/kafka_metric.py' INFO : wheel : adding 'kafka/metrics/measurable.py' INFO : wheel : adding 'kafka/metrics/measurable_stat.py' INFO : wheel : adding 'kafka/metrics/metric_config.py' INFO : wheel : adding 'kafka/metrics/metric_name.py' INFO : wheel : adding 'kafka/metrics/metrics.py' INFO : wheel : adding 'kafka/metrics/metrics_reporter.py' INFO : wheel : adding 'kafka/metrics/quota.py' INFO : wheel : adding 'kafka/metrics/stat.py' INFO : wheel : adding 'kafka/metrics/stats/__init__.py' INFO : wheel : adding 'kafka/metrics/stats/avg.py' INFO : wheel : adding 'kafka/metrics/stats/count.py' INFO : wheel : adding 'kafka/metrics/stats/histogram.py' INFO : wheel : adding 'kafka/metrics/stats/max_stat.py' INFO : wheel : adding 'kafka/metrics/stats/min_stat.py' INFO : wheel : adding 'kafka/metrics/stats/percentile.py' INFO : wheel : adding 'kafka/metrics/stats/percentiles.py' INFO : wheel : adding 'kafka/metrics/stats/rate.py' INFO : wheel : adding 'kafka/metrics/stats/sampled_stat.py' INFO : wheel : adding 'kafka/metrics/stats/sensor.py' INFO : wheel : adding 'kafka/metrics/stats/total.py' INFO : wheel : adding 'kafka/oauth/__init__.py' INFO : wheel : adding 'kafka/oauth/abstract.py' INFO : wheel : adding 'kafka/partitioner/__init__.py' INFO : wheel : adding 'kafka/partitioner/default.py' INFO : wheel : adding 'kafka/producer/__init__.py' INFO : wheel : adding 'kafka/producer/buffer.py' INFO : wheel : adding 'kafka/producer/future.py' INFO : wheel : adding 'kafka/producer/kafka.py' INFO : wheel : adding 'kafka/producer/record_accumulator.py' INFO : wheel : adding 'kafka/producer/sender.py' INFO : wheel : adding 'kafka/protocol/__init__.py' INFO : wheel : adding 'kafka/protocol/abstract.py' INFO : wheel : adding 'kafka/protocol/admin.py' INFO : wheel : adding 'kafka/protocol/api.py' INFO : wheel : adding 'kafka/protocol/commit.py' INFO : wheel : adding 'kafka/protocol/fetch.py' INFO : wheel : adding 'kafka/protocol/frame.py' INFO : wheel : adding 'kafka/protocol/group.py' INFO : wheel : adding 'kafka/protocol/message.py' INFO : wheel : adding 'kafka/protocol/metadata.py' INFO : wheel : adding 'kafka/protocol/offset.py' INFO : wheel : adding 'kafka/protocol/parser.py' INFO : wheel : adding 'kafka/protocol/pickle.py' INFO : wheel : adding 'kafka/protocol/produce.py' INFO : wheel : adding 'kafka/protocol/struct.py' INFO : wheel : adding 'kafka/protocol/types.py' INFO : wheel : adding 'kafka/record/__init__.py' INFO : wheel : adding 'kafka/record/_crc32c.py' INFO : wheel : adding 'kafka/record/abc.py' INFO : wheel : adding 'kafka/record/default_records.py' INFO : wheel : adding 'kafka/record/legacy_records.py' INFO : wheel : adding 'kafka/record/memory_records.py' INFO : wheel : adding 'kafka/record/util.py' INFO : wheel : adding 'kafka/serializer/__init__.py' INFO : wheel : adding 'kafka/serializer/abstract.py' INFO : wheel : adding 'kafka/vendor/__init__.py' INFO : wheel : adding 'kafka_python-2.0.2.dist-info/LICENSE' INFO : wheel : adding 'kafka_python-2.0.2.dist-info/METADATA' INFO : wheel : adding 'kafka_python-2.0.2.dist-info/WHEEL' INFO : wheel : adding 'kafka_python-2.0.2.dist-info/top_level.txt' INFO : wheel : adding 'kafka_python-2.0.2.dist-info/RECORD' INFO : wheel : removing build/bdist.linux-x86_64/wheel INFO : pyproject_installer.build_cmd._build : Built wheel: kafka_python-2.0.2-py2.py3-none-any.whl + exit 0 Executing(%install): /bin/sh -e /usr/src/tmp/rpm-tmp.32187 + umask 022 + /bin/mkdir -p /usr/src/RPM/BUILD + cd /usr/src/RPM/BUILD + /bin/chmod -Rf u+rwX -- /usr/src/tmp/python3-module-kafka-buildroot + : + /bin/rm -rf -- /usr/src/tmp/python3-module-kafka-buildroot + PATH=/usr/libexec/rpm-build:/usr/src/bin:/bin:/usr/bin:/usr/X11R6/bin:/usr/games + cd python3-module-kafka-2.0.2 + /usr/bin/python3 -m pyproject_installer -v install --destdir=/usr/src/tmp/python3-module-kafka-buildroot INFO : pyproject_installer.install_cmd._install : Installing wheel INFO : pyproject_installer.install_cmd._install : Wheel directory: /usr/src/RPM/BUILD/python3-module-kafka-2.0.2/dist INFO : pyproject_installer.install_cmd._install : Wheel filename: kafka_python-2.0.2-py2.py3-none-any.whl INFO : pyproject_installer.install_cmd._install : Destination: /usr/src/tmp/python3-module-kafka-buildroot DEBUG : pyproject_installer.lib.wheel : Parsing wheel filename DEBUG : pyproject_installer.lib.wheel : Validating wheel file DEBUG : pyproject_installer.lib.wheel : Validating wheel spec version DEBUG : pyproject_installer.lib.wheel : Parsing wheel spec metadata DEBUG : pyproject_installer.lib.wheel : Validating RECORD INFO : pyproject_installer.install_cmd._install : Wheel installation root: /usr/src/tmp/python3-module-kafka-buildroot/usr/lib/python3/site-packages INFO : pyproject_installer.install_cmd._install : Extracting wheel DEBUG : pyproject_installer.install_cmd._install : Filtering out not allowed file: kafka_python-2.0.2.dist-info/LICENSE DEBUG : pyproject_installer.install_cmd._install : Filtering out not allowed file: kafka_python-2.0.2.dist-info/WHEEL DEBUG : pyproject_installer.install_cmd._install : Filtering out not allowed file: kafka_python-2.0.2.dist-info/top_level.txt DEBUG : pyproject_installer.install_cmd._install : Filtering out not allowed file: kafka_python-2.0.2.dist-info/RECORD INFO : pyproject_installer.install_cmd._install : Wheel was installed + sed -i '1{/#!/d}' example.py + chmod -x example.py + /usr/lib/rpm/brp-alt Cleaning files in /usr/src/tmp/python3-module-kafka-buildroot (auto) Verifying and fixing files in /usr/src/tmp/python3-module-kafka-buildroot (binconfig,pkgconfig,libtool,desktop,gnuconfig) Checking contents of files in /usr/src/tmp/python3-module-kafka-buildroot/ (default) Compressing files in /usr/src/tmp/python3-module-kafka-buildroot (auto) Adjusting library links in /usr/src/tmp/python3-module-kafka-buildroot ./usr/lib: (from :0) Verifying ELF objects in /usr/src/tmp/python3-module-kafka-buildroot (arch=normal,fhs=normal,lfs=relaxed,lint=relaxed,rpath=normal,stack=normal,textrel=normal,unresolved=normal) Bytecompiling python3 modules in /usr/src/tmp/python3-module-kafka-buildroot using /usr/bin/python3 compile /usr/src/tmp/python3-module-kafka-buildroot/usr/lib/python3/site-packages/kafka/admin/__init__.py compile /usr/src/tmp/python3-module-kafka-buildroot/usr/lib/python3/site-packages/kafka/admin/acl_resource.py compile /usr/src/tmp/python3-module-kafka-buildroot/usr/lib/python3/site-packages/kafka/admin/client.py compile /usr/src/tmp/python3-module-kafka-buildroot/usr/lib/python3/site-packages/kafka/admin/config_resource.py compile /usr/src/tmp/python3-module-kafka-buildroot/usr/lib/python3/site-packages/kafka/admin/new_partitions.py compile /usr/src/tmp/python3-module-kafka-buildroot/usr/lib/python3/site-packages/kafka/admin/new_topic.py compile /usr/src/tmp/python3-module-kafka-buildroot/usr/lib/python3/site-packages/kafka/consumer/__init__.py compile /usr/src/tmp/python3-module-kafka-buildroot/usr/lib/python3/site-packages/kafka/consumer/fetcher.py compile /usr/src/tmp/python3-module-kafka-buildroot/usr/lib/python3/site-packages/kafka/consumer/group.py compile /usr/src/tmp/python3-module-kafka-buildroot/usr/lib/python3/site-packages/kafka/consumer/subscription_state.py compile /usr/src/tmp/python3-module-kafka-buildroot/usr/lib/python3/site-packages/kafka/coordinator/assignors/sticky/__init__.py compile /usr/src/tmp/python3-module-kafka-buildroot/usr/lib/python3/site-packages/kafka/coordinator/assignors/sticky/partition_movements.py compile /usr/src/tmp/python3-module-kafka-buildroot/usr/lib/python3/site-packages/kafka/coordinator/assignors/sticky/sorted_set.py compile /usr/src/tmp/python3-module-kafka-buildroot/usr/lib/python3/site-packages/kafka/coordinator/assignors/sticky/sticky_assignor.py compile /usr/src/tmp/python3-module-kafka-buildroot/usr/lib/python3/site-packages/kafka/coordinator/assignors/__init__.py compile /usr/src/tmp/python3-module-kafka-buildroot/usr/lib/python3/site-packages/kafka/coordinator/assignors/abstract.py compile /usr/src/tmp/python3-module-kafka-buildroot/usr/lib/python3/site-packages/kafka/coordinator/assignors/range.py compile /usr/src/tmp/python3-module-kafka-buildroot/usr/lib/python3/site-packages/kafka/coordinator/assignors/roundrobin.py compile /usr/src/tmp/python3-module-kafka-buildroot/usr/lib/python3/site-packages/kafka/coordinator/__init__.py compile /usr/src/tmp/python3-module-kafka-buildroot/usr/lib/python3/site-packages/kafka/coordinator/base.py compile /usr/src/tmp/python3-module-kafka-buildroot/usr/lib/python3/site-packages/kafka/coordinator/consumer.py compile /usr/src/tmp/python3-module-kafka-buildroot/usr/lib/python3/site-packages/kafka/coordinator/heartbeat.py compile /usr/src/tmp/python3-module-kafka-buildroot/usr/lib/python3/site-packages/kafka/coordinator/protocol.py compile /usr/src/tmp/python3-module-kafka-buildroot/usr/lib/python3/site-packages/kafka/metrics/stats/__init__.py compile /usr/src/tmp/python3-module-kafka-buildroot/usr/lib/python3/site-packages/kafka/metrics/stats/avg.py compile /usr/src/tmp/python3-module-kafka-buildroot/usr/lib/python3/site-packages/kafka/metrics/stats/count.py compile /usr/src/tmp/python3-module-kafka-buildroot/usr/lib/python3/site-packages/kafka/metrics/stats/histogram.py compile /usr/src/tmp/python3-module-kafka-buildroot/usr/lib/python3/site-packages/kafka/metrics/stats/max_stat.py compile /usr/src/tmp/python3-module-kafka-buildroot/usr/lib/python3/site-packages/kafka/metrics/stats/min_stat.py compile /usr/src/tmp/python3-module-kafka-buildroot/usr/lib/python3/site-packages/kafka/metrics/stats/percentile.py compile /usr/src/tmp/python3-module-kafka-buildroot/usr/lib/python3/site-packages/kafka/metrics/stats/percentiles.py compile /usr/src/tmp/python3-module-kafka-buildroot/usr/lib/python3/site-packages/kafka/metrics/stats/rate.py compile /usr/src/tmp/python3-module-kafka-buildroot/usr/lib/python3/site-packages/kafka/metrics/stats/sampled_stat.py compile /usr/src/tmp/python3-module-kafka-buildroot/usr/lib/python3/site-packages/kafka/metrics/stats/sensor.py compile /usr/src/tmp/python3-module-kafka-buildroot/usr/lib/python3/site-packages/kafka/metrics/stats/total.py compile /usr/src/tmp/python3-module-kafka-buildroot/usr/lib/python3/site-packages/kafka/metrics/__init__.py compile /usr/src/tmp/python3-module-kafka-buildroot/usr/lib/python3/site-packages/kafka/metrics/compound_stat.py compile /usr/src/tmp/python3-module-kafka-buildroot/usr/lib/python3/site-packages/kafka/metrics/dict_reporter.py compile /usr/src/tmp/python3-module-kafka-buildroot/usr/lib/python3/site-packages/kafka/metrics/kafka_metric.py compile /usr/src/tmp/python3-module-kafka-buildroot/usr/lib/python3/site-packages/kafka/metrics/measurable.py compile /usr/src/tmp/python3-module-kafka-buildroot/usr/lib/python3/site-packages/kafka/metrics/measurable_stat.py compile /usr/src/tmp/python3-module-kafka-buildroot/usr/lib/python3/site-packages/kafka/metrics/metric_config.py compile /usr/src/tmp/python3-module-kafka-buildroot/usr/lib/python3/site-packages/kafka/metrics/metric_name.py compile /usr/src/tmp/python3-module-kafka-buildroot/usr/lib/python3/site-packages/kafka/metrics/metrics.py compile /usr/src/tmp/python3-module-kafka-buildroot/usr/lib/python3/site-packages/kafka/metrics/metrics_reporter.py compile /usr/src/tmp/python3-module-kafka-buildroot/usr/lib/python3/site-packages/kafka/metrics/quota.py compile /usr/src/tmp/python3-module-kafka-buildroot/usr/lib/python3/site-packages/kafka/metrics/stat.py compile /usr/src/tmp/python3-module-kafka-buildroot/usr/lib/python3/site-packages/kafka/oauth/__init__.py compile /usr/src/tmp/python3-module-kafka-buildroot/usr/lib/python3/site-packages/kafka/oauth/abstract.py compile /usr/src/tmp/python3-module-kafka-buildroot/usr/lib/python3/site-packages/kafka/partitioner/__init__.py compile /usr/src/tmp/python3-module-kafka-buildroot/usr/lib/python3/site-packages/kafka/partitioner/default.py compile /usr/src/tmp/python3-module-kafka-buildroot/usr/lib/python3/site-packages/kafka/producer/__init__.py compile /usr/src/tmp/python3-module-kafka-buildroot/usr/lib/python3/site-packages/kafka/producer/buffer.py compile /usr/src/tmp/python3-module-kafka-buildroot/usr/lib/python3/site-packages/kafka/producer/future.py compile /usr/src/tmp/python3-module-kafka-buildroot/usr/lib/python3/site-packages/kafka/producer/kafka.py compile /usr/src/tmp/python3-module-kafka-buildroot/usr/lib/python3/site-packages/kafka/producer/record_accumulator.py compile /usr/src/tmp/python3-module-kafka-buildroot/usr/lib/python3/site-packages/kafka/producer/sender.py compile /usr/src/tmp/python3-module-kafka-buildroot/usr/lib/python3/site-packages/kafka/protocol/__init__.py compile /usr/src/tmp/python3-module-kafka-buildroot/usr/lib/python3/site-packages/kafka/protocol/abstract.py compile /usr/src/tmp/python3-module-kafka-buildroot/usr/lib/python3/site-packages/kafka/protocol/admin.py compile /usr/src/tmp/python3-module-kafka-buildroot/usr/lib/python3/site-packages/kafka/protocol/api.py compile /usr/src/tmp/python3-module-kafka-buildroot/usr/lib/python3/site-packages/kafka/protocol/commit.py compile /usr/src/tmp/python3-module-kafka-buildroot/usr/lib/python3/site-packages/kafka/protocol/fetch.py compile /usr/src/tmp/python3-module-kafka-buildroot/usr/lib/python3/site-packages/kafka/protocol/frame.py compile /usr/src/tmp/python3-module-kafka-buildroot/usr/lib/python3/site-packages/kafka/protocol/group.py compile /usr/src/tmp/python3-module-kafka-buildroot/usr/lib/python3/site-packages/kafka/protocol/message.py compile /usr/src/tmp/python3-module-kafka-buildroot/usr/lib/python3/site-packages/kafka/protocol/metadata.py compile /usr/src/tmp/python3-module-kafka-buildroot/usr/lib/python3/site-packages/kafka/protocol/offset.py compile /usr/src/tmp/python3-module-kafka-buildroot/usr/lib/python3/site-packages/kafka/protocol/parser.py compile /usr/src/tmp/python3-module-kafka-buildroot/usr/lib/python3/site-packages/kafka/protocol/pickle.py compile /usr/src/tmp/python3-module-kafka-buildroot/usr/lib/python3/site-packages/kafka/protocol/produce.py compile /usr/src/tmp/python3-module-kafka-buildroot/usr/lib/python3/site-packages/kafka/protocol/struct.py compile /usr/src/tmp/python3-module-kafka-buildroot/usr/lib/python3/site-packages/kafka/protocol/types.py compile /usr/src/tmp/python3-module-kafka-buildroot/usr/lib/python3/site-packages/kafka/record/__init__.py compile /usr/src/tmp/python3-module-kafka-buildroot/usr/lib/python3/site-packages/kafka/record/_crc32c.py compile /usr/src/tmp/python3-module-kafka-buildroot/usr/lib/python3/site-packages/kafka/record/abc.py compile /usr/src/tmp/python3-module-kafka-buildroot/usr/lib/python3/site-packages/kafka/record/default_records.py compile /usr/src/tmp/python3-module-kafka-buildroot/usr/lib/python3/site-packages/kafka/record/legacy_records.py compile /usr/src/tmp/python3-module-kafka-buildroot/usr/lib/python3/site-packages/kafka/record/memory_records.py compile /usr/src/tmp/python3-module-kafka-buildroot/usr/lib/python3/site-packages/kafka/record/util.py compile /usr/src/tmp/python3-module-kafka-buildroot/usr/lib/python3/site-packages/kafka/serializer/__init__.py compile /usr/src/tmp/python3-module-kafka-buildroot/usr/lib/python3/site-packages/kafka/serializer/abstract.py compile /usr/src/tmp/python3-module-kafka-buildroot/usr/lib/python3/site-packages/kafka/vendor/__init__.py compile /usr/src/tmp/python3-module-kafka-buildroot/usr/lib/python3/site-packages/kafka/__init__.py compile /usr/src/tmp/python3-module-kafka-buildroot/usr/lib/python3/site-packages/kafka/client_async.py compile /usr/src/tmp/python3-module-kafka-buildroot/usr/lib/python3/site-packages/kafka/cluster.py compile /usr/src/tmp/python3-module-kafka-buildroot/usr/lib/python3/site-packages/kafka/codec.py compile /usr/src/tmp/python3-module-kafka-buildroot/usr/lib/python3/site-packages/kafka/conn.py compile /usr/src/tmp/python3-module-kafka-buildroot/usr/lib/python3/site-packages/kafka/errors.py compile /usr/src/tmp/python3-module-kafka-buildroot/usr/lib/python3/site-packages/kafka/future.py compile /usr/src/tmp/python3-module-kafka-buildroot/usr/lib/python3/site-packages/kafka/scram.py compile /usr/src/tmp/python3-module-kafka-buildroot/usr/lib/python3/site-packages/kafka/structs.py compile /usr/src/tmp/python3-module-kafka-buildroot/usr/lib/python3/site-packages/kafka/util.py compile /usr/src/tmp/python3-module-kafka-buildroot/usr/lib/python3/site-packages/kafka/version.py Bytecompiling python3 modules with optimization in /usr/src/tmp/python3-module-kafka-buildroot using /usr/bin/python3 -O compile /usr/src/tmp/python3-module-kafka-buildroot/usr/lib/python3/site-packages/kafka/admin/__init__.py compile /usr/src/tmp/python3-module-kafka-buildroot/usr/lib/python3/site-packages/kafka/admin/acl_resource.py compile /usr/src/tmp/python3-module-kafka-buildroot/usr/lib/python3/site-packages/kafka/admin/client.py compile /usr/src/tmp/python3-module-kafka-buildroot/usr/lib/python3/site-packages/kafka/admin/config_resource.py compile /usr/src/tmp/python3-module-kafka-buildroot/usr/lib/python3/site-packages/kafka/admin/new_partitions.py compile /usr/src/tmp/python3-module-kafka-buildroot/usr/lib/python3/site-packages/kafka/admin/new_topic.py compile /usr/src/tmp/python3-module-kafka-buildroot/usr/lib/python3/site-packages/kafka/consumer/__init__.py compile /usr/src/tmp/python3-module-kafka-buildroot/usr/lib/python3/site-packages/kafka/consumer/fetcher.py compile /usr/src/tmp/python3-module-kafka-buildroot/usr/lib/python3/site-packages/kafka/consumer/group.py compile /usr/src/tmp/python3-module-kafka-buildroot/usr/lib/python3/site-packages/kafka/consumer/subscription_state.py compile /usr/src/tmp/python3-module-kafka-buildroot/usr/lib/python3/site-packages/kafka/coordinator/assignors/sticky/__init__.py compile /usr/src/tmp/python3-module-kafka-buildroot/usr/lib/python3/site-packages/kafka/coordinator/assignors/sticky/partition_movements.py compile /usr/src/tmp/python3-module-kafka-buildroot/usr/lib/python3/site-packages/kafka/coordinator/assignors/sticky/sorted_set.py compile /usr/src/tmp/python3-module-kafka-buildroot/usr/lib/python3/site-packages/kafka/coordinator/assignors/sticky/sticky_assignor.py compile /usr/src/tmp/python3-module-kafka-buildroot/usr/lib/python3/site-packages/kafka/coordinator/assignors/__init__.py compile /usr/src/tmp/python3-module-kafka-buildroot/usr/lib/python3/site-packages/kafka/coordinator/assignors/abstract.py compile /usr/src/tmp/python3-module-kafka-buildroot/usr/lib/python3/site-packages/kafka/coordinator/assignors/range.py compile /usr/src/tmp/python3-module-kafka-buildroot/usr/lib/python3/site-packages/kafka/coordinator/assignors/roundrobin.py compile /usr/src/tmp/python3-module-kafka-buildroot/usr/lib/python3/site-packages/kafka/coordinator/__init__.py compile /usr/src/tmp/python3-module-kafka-buildroot/usr/lib/python3/site-packages/kafka/coordinator/base.py compile /usr/src/tmp/python3-module-kafka-buildroot/usr/lib/python3/site-packages/kafka/coordinator/consumer.py compile /usr/src/tmp/python3-module-kafka-buildroot/usr/lib/python3/site-packages/kafka/coordinator/heartbeat.py compile /usr/src/tmp/python3-module-kafka-buildroot/usr/lib/python3/site-packages/kafka/coordinator/protocol.py compile /usr/src/tmp/python3-module-kafka-buildroot/usr/lib/python3/site-packages/kafka/metrics/stats/__init__.py compile /usr/src/tmp/python3-module-kafka-buildroot/usr/lib/python3/site-packages/kafka/metrics/stats/avg.py compile /usr/src/tmp/python3-module-kafka-buildroot/usr/lib/python3/site-packages/kafka/metrics/stats/count.py compile /usr/src/tmp/python3-module-kafka-buildroot/usr/lib/python3/site-packages/kafka/metrics/stats/histogram.py compile /usr/src/tmp/python3-module-kafka-buildroot/usr/lib/python3/site-packages/kafka/metrics/stats/max_stat.py compile /usr/src/tmp/python3-module-kafka-buildroot/usr/lib/python3/site-packages/kafka/metrics/stats/min_stat.py compile /usr/src/tmp/python3-module-kafka-buildroot/usr/lib/python3/site-packages/kafka/metrics/stats/percentile.py compile /usr/src/tmp/python3-module-kafka-buildroot/usr/lib/python3/site-packages/kafka/metrics/stats/percentiles.py compile /usr/src/tmp/python3-module-kafka-buildroot/usr/lib/python3/site-packages/kafka/metrics/stats/rate.py compile /usr/src/tmp/python3-module-kafka-buildroot/usr/lib/python3/site-packages/kafka/metrics/stats/sampled_stat.py compile /usr/src/tmp/python3-module-kafka-buildroot/usr/lib/python3/site-packages/kafka/metrics/stats/sensor.py compile /usr/src/tmp/python3-module-kafka-buildroot/usr/lib/python3/site-packages/kafka/metrics/stats/total.py compile /usr/src/tmp/python3-module-kafka-buildroot/usr/lib/python3/site-packages/kafka/metrics/__init__.py compile /usr/src/tmp/python3-module-kafka-buildroot/usr/lib/python3/site-packages/kafka/metrics/compound_stat.py compile /usr/src/tmp/python3-module-kafka-buildroot/usr/lib/python3/site-packages/kafka/metrics/dict_reporter.py compile /usr/src/tmp/python3-module-kafka-buildroot/usr/lib/python3/site-packages/kafka/metrics/kafka_metric.py compile /usr/src/tmp/python3-module-kafka-buildroot/usr/lib/python3/site-packages/kafka/metrics/measurable.py compile /usr/src/tmp/python3-module-kafka-buildroot/usr/lib/python3/site-packages/kafka/metrics/measurable_stat.py compile /usr/src/tmp/python3-module-kafka-buildroot/usr/lib/python3/site-packages/kafka/metrics/metric_config.py compile /usr/src/tmp/python3-module-kafka-buildroot/usr/lib/python3/site-packages/kafka/metrics/metric_name.py compile /usr/src/tmp/python3-module-kafka-buildroot/usr/lib/python3/site-packages/kafka/metrics/metrics.py compile /usr/src/tmp/python3-module-kafka-buildroot/usr/lib/python3/site-packages/kafka/metrics/metrics_reporter.py compile /usr/src/tmp/python3-module-kafka-buildroot/usr/lib/python3/site-packages/kafka/metrics/quota.py compile /usr/src/tmp/python3-module-kafka-buildroot/usr/lib/python3/site-packages/kafka/metrics/stat.py compile /usr/src/tmp/python3-module-kafka-buildroot/usr/lib/python3/site-packages/kafka/oauth/__init__.py compile /usr/src/tmp/python3-module-kafka-buildroot/usr/lib/python3/site-packages/kafka/oauth/abstract.py compile /usr/src/tmp/python3-module-kafka-buildroot/usr/lib/python3/site-packages/kafka/partitioner/__init__.py compile /usr/src/tmp/python3-module-kafka-buildroot/usr/lib/python3/site-packages/kafka/partitioner/default.py compile /usr/src/tmp/python3-module-kafka-buildroot/usr/lib/python3/site-packages/kafka/producer/__init__.py compile /usr/src/tmp/python3-module-kafka-buildroot/usr/lib/python3/site-packages/kafka/producer/buffer.py compile /usr/src/tmp/python3-module-kafka-buildroot/usr/lib/python3/site-packages/kafka/producer/future.py compile /usr/src/tmp/python3-module-kafka-buildroot/usr/lib/python3/site-packages/kafka/producer/kafka.py compile /usr/src/tmp/python3-module-kafka-buildroot/usr/lib/python3/site-packages/kafka/producer/record_accumulator.py compile /usr/src/tmp/python3-module-kafka-buildroot/usr/lib/python3/site-packages/kafka/producer/sender.py compile /usr/src/tmp/python3-module-kafka-buildroot/usr/lib/python3/site-packages/kafka/protocol/__init__.py compile /usr/src/tmp/python3-module-kafka-buildroot/usr/lib/python3/site-packages/kafka/protocol/abstract.py compile /usr/src/tmp/python3-module-kafka-buildroot/usr/lib/python3/site-packages/kafka/protocol/admin.py compile /usr/src/tmp/python3-module-kafka-buildroot/usr/lib/python3/site-packages/kafka/protocol/api.py compile /usr/src/tmp/python3-module-kafka-buildroot/usr/lib/python3/site-packages/kafka/protocol/commit.py compile /usr/src/tmp/python3-module-kafka-buildroot/usr/lib/python3/site-packages/kafka/protocol/fetch.py compile /usr/src/tmp/python3-module-kafka-buildroot/usr/lib/python3/site-packages/kafka/protocol/frame.py compile /usr/src/tmp/python3-module-kafka-buildroot/usr/lib/python3/site-packages/kafka/protocol/group.py compile /usr/src/tmp/python3-module-kafka-buildroot/usr/lib/python3/site-packages/kafka/protocol/message.py compile /usr/src/tmp/python3-module-kafka-buildroot/usr/lib/python3/site-packages/kafka/protocol/metadata.py compile /usr/src/tmp/python3-module-kafka-buildroot/usr/lib/python3/site-packages/kafka/protocol/offset.py compile /usr/src/tmp/python3-module-kafka-buildroot/usr/lib/python3/site-packages/kafka/protocol/parser.py compile /usr/src/tmp/python3-module-kafka-buildroot/usr/lib/python3/site-packages/kafka/protocol/pickle.py compile /usr/src/tmp/python3-module-kafka-buildroot/usr/lib/python3/site-packages/kafka/protocol/produce.py compile /usr/src/tmp/python3-module-kafka-buildroot/usr/lib/python3/site-packages/kafka/protocol/struct.py compile /usr/src/tmp/python3-module-kafka-buildroot/usr/lib/python3/site-packages/kafka/protocol/types.py compile /usr/src/tmp/python3-module-kafka-buildroot/usr/lib/python3/site-packages/kafka/record/__init__.py compile /usr/src/tmp/python3-module-kafka-buildroot/usr/lib/python3/site-packages/kafka/record/_crc32c.py compile /usr/src/tmp/python3-module-kafka-buildroot/usr/lib/python3/site-packages/kafka/record/abc.py compile /usr/src/tmp/python3-module-kafka-buildroot/usr/lib/python3/site-packages/kafka/record/default_records.py compile /usr/src/tmp/python3-module-kafka-buildroot/usr/lib/python3/site-packages/kafka/record/legacy_records.py compile /usr/src/tmp/python3-module-kafka-buildroot/usr/lib/python3/site-packages/kafka/record/memory_records.py compile /usr/src/tmp/python3-module-kafka-buildroot/usr/lib/python3/site-packages/kafka/record/util.py compile /usr/src/tmp/python3-module-kafka-buildroot/usr/lib/python3/site-packages/kafka/serializer/__init__.py compile /usr/src/tmp/python3-module-kafka-buildroot/usr/lib/python3/site-packages/kafka/serializer/abstract.py compile /usr/src/tmp/python3-module-kafka-buildroot/usr/lib/python3/site-packages/kafka/vendor/__init__.py compile /usr/src/tmp/python3-module-kafka-buildroot/usr/lib/python3/site-packages/kafka/__init__.py compile /usr/src/tmp/python3-module-kafka-buildroot/usr/lib/python3/site-packages/kafka/client_async.py compile /usr/src/tmp/python3-module-kafka-buildroot/usr/lib/python3/site-packages/kafka/cluster.py compile /usr/src/tmp/python3-module-kafka-buildroot/usr/lib/python3/site-packages/kafka/codec.py compile /usr/src/tmp/python3-module-kafka-buildroot/usr/lib/python3/site-packages/kafka/conn.py compile /usr/src/tmp/python3-module-kafka-buildroot/usr/lib/python3/site-packages/kafka/errors.py compile /usr/src/tmp/python3-module-kafka-buildroot/usr/lib/python3/site-packages/kafka/future.py compile /usr/src/tmp/python3-module-kafka-buildroot/usr/lib/python3/site-packages/kafka/scram.py compile /usr/src/tmp/python3-module-kafka-buildroot/usr/lib/python3/site-packages/kafka/structs.py compile /usr/src/tmp/python3-module-kafka-buildroot/usr/lib/python3/site-packages/kafka/util.py compile /usr/src/tmp/python3-module-kafka-buildroot/usr/lib/python3/site-packages/kafka/version.py Bytecompiling python3 modules with optimization-2 in /usr/src/tmp/python3-module-kafka-buildroot using /usr/bin/python3 -OO compile /usr/src/tmp/python3-module-kafka-buildroot/usr/lib/python3/site-packages/kafka/admin/__init__.py compile /usr/src/tmp/python3-module-kafka-buildroot/usr/lib/python3/site-packages/kafka/admin/acl_resource.py compile /usr/src/tmp/python3-module-kafka-buildroot/usr/lib/python3/site-packages/kafka/admin/client.py compile /usr/src/tmp/python3-module-kafka-buildroot/usr/lib/python3/site-packages/kafka/admin/config_resource.py compile /usr/src/tmp/python3-module-kafka-buildroot/usr/lib/python3/site-packages/kafka/admin/new_partitions.py compile /usr/src/tmp/python3-module-kafka-buildroot/usr/lib/python3/site-packages/kafka/admin/new_topic.py compile /usr/src/tmp/python3-module-kafka-buildroot/usr/lib/python3/site-packages/kafka/consumer/__init__.py compile /usr/src/tmp/python3-module-kafka-buildroot/usr/lib/python3/site-packages/kafka/consumer/fetcher.py compile /usr/src/tmp/python3-module-kafka-buildroot/usr/lib/python3/site-packages/kafka/consumer/group.py compile /usr/src/tmp/python3-module-kafka-buildroot/usr/lib/python3/site-packages/kafka/consumer/subscription_state.py compile /usr/src/tmp/python3-module-kafka-buildroot/usr/lib/python3/site-packages/kafka/coordinator/assignors/sticky/__init__.py compile /usr/src/tmp/python3-module-kafka-buildroot/usr/lib/python3/site-packages/kafka/coordinator/assignors/sticky/partition_movements.py compile /usr/src/tmp/python3-module-kafka-buildroot/usr/lib/python3/site-packages/kafka/coordinator/assignors/sticky/sorted_set.py compile /usr/src/tmp/python3-module-kafka-buildroot/usr/lib/python3/site-packages/kafka/coordinator/assignors/sticky/sticky_assignor.py compile /usr/src/tmp/python3-module-kafka-buildroot/usr/lib/python3/site-packages/kafka/coordinator/assignors/__init__.py compile /usr/src/tmp/python3-module-kafka-buildroot/usr/lib/python3/site-packages/kafka/coordinator/assignors/abstract.py compile /usr/src/tmp/python3-module-kafka-buildroot/usr/lib/python3/site-packages/kafka/coordinator/assignors/range.py compile /usr/src/tmp/python3-module-kafka-buildroot/usr/lib/python3/site-packages/kafka/coordinator/assignors/roundrobin.py compile /usr/src/tmp/python3-module-kafka-buildroot/usr/lib/python3/site-packages/kafka/coordinator/__init__.py compile /usr/src/tmp/python3-module-kafka-buildroot/usr/lib/python3/site-packages/kafka/coordinator/base.py compile /usr/src/tmp/python3-module-kafka-buildroot/usr/lib/python3/site-packages/kafka/coordinator/consumer.py compile /usr/src/tmp/python3-module-kafka-buildroot/usr/lib/python3/site-packages/kafka/coordinator/heartbeat.py compile /usr/src/tmp/python3-module-kafka-buildroot/usr/lib/python3/site-packages/kafka/coordinator/protocol.py compile /usr/src/tmp/python3-module-kafka-buildroot/usr/lib/python3/site-packages/kafka/metrics/stats/__init__.py compile /usr/src/tmp/python3-module-kafka-buildroot/usr/lib/python3/site-packages/kafka/metrics/stats/avg.py compile /usr/src/tmp/python3-module-kafka-buildroot/usr/lib/python3/site-packages/kafka/metrics/stats/count.py compile /usr/src/tmp/python3-module-kafka-buildroot/usr/lib/python3/site-packages/kafka/metrics/stats/histogram.py compile /usr/src/tmp/python3-module-kafka-buildroot/usr/lib/python3/site-packages/kafka/metrics/stats/max_stat.py compile /usr/src/tmp/python3-module-kafka-buildroot/usr/lib/python3/site-packages/kafka/metrics/stats/min_stat.py compile /usr/src/tmp/python3-module-kafka-buildroot/usr/lib/python3/site-packages/kafka/metrics/stats/percentile.py compile /usr/src/tmp/python3-module-kafka-buildroot/usr/lib/python3/site-packages/kafka/metrics/stats/percentiles.py compile /usr/src/tmp/python3-module-kafka-buildroot/usr/lib/python3/site-packages/kafka/metrics/stats/rate.py compile /usr/src/tmp/python3-module-kafka-buildroot/usr/lib/python3/site-packages/kafka/metrics/stats/sampled_stat.py compile /usr/src/tmp/python3-module-kafka-buildroot/usr/lib/python3/site-packages/kafka/metrics/stats/sensor.py compile /usr/src/tmp/python3-module-kafka-buildroot/usr/lib/python3/site-packages/kafka/metrics/stats/total.py compile /usr/src/tmp/python3-module-kafka-buildroot/usr/lib/python3/site-packages/kafka/metrics/__init__.py compile /usr/src/tmp/python3-module-kafka-buildroot/usr/lib/python3/site-packages/kafka/metrics/compound_stat.py compile /usr/src/tmp/python3-module-kafka-buildroot/usr/lib/python3/site-packages/kafka/metrics/dict_reporter.py compile /usr/src/tmp/python3-module-kafka-buildroot/usr/lib/python3/site-packages/kafka/metrics/kafka_metric.py compile /usr/src/tmp/python3-module-kafka-buildroot/usr/lib/python3/site-packages/kafka/metrics/measurable.py compile /usr/src/tmp/python3-module-kafka-buildroot/usr/lib/python3/site-packages/kafka/metrics/measurable_stat.py compile /usr/src/tmp/python3-module-kafka-buildroot/usr/lib/python3/site-packages/kafka/metrics/metric_config.py compile /usr/src/tmp/python3-module-kafka-buildroot/usr/lib/python3/site-packages/kafka/metrics/metric_name.py compile /usr/src/tmp/python3-module-kafka-buildroot/usr/lib/python3/site-packages/kafka/metrics/metrics.py compile /usr/src/tmp/python3-module-kafka-buildroot/usr/lib/python3/site-packages/kafka/metrics/metrics_reporter.py compile /usr/src/tmp/python3-module-kafka-buildroot/usr/lib/python3/site-packages/kafka/metrics/quota.py compile /usr/src/tmp/python3-module-kafka-buildroot/usr/lib/python3/site-packages/kafka/metrics/stat.py compile /usr/src/tmp/python3-module-kafka-buildroot/usr/lib/python3/site-packages/kafka/oauth/__init__.py compile /usr/src/tmp/python3-module-kafka-buildroot/usr/lib/python3/site-packages/kafka/oauth/abstract.py compile /usr/src/tmp/python3-module-kafka-buildroot/usr/lib/python3/site-packages/kafka/partitioner/__init__.py compile /usr/src/tmp/python3-module-kafka-buildroot/usr/lib/python3/site-packages/kafka/partitioner/default.py compile /usr/src/tmp/python3-module-kafka-buildroot/usr/lib/python3/site-packages/kafka/producer/__init__.py compile /usr/src/tmp/python3-module-kafka-buildroot/usr/lib/python3/site-packages/kafka/producer/buffer.py compile /usr/src/tmp/python3-module-kafka-buildroot/usr/lib/python3/site-packages/kafka/producer/future.py compile /usr/src/tmp/python3-module-kafka-buildroot/usr/lib/python3/site-packages/kafka/producer/kafka.py compile /usr/src/tmp/python3-module-kafka-buildroot/usr/lib/python3/site-packages/kafka/producer/record_accumulator.py compile /usr/src/tmp/python3-module-kafka-buildroot/usr/lib/python3/site-packages/kafka/producer/sender.py compile /usr/src/tmp/python3-module-kafka-buildroot/usr/lib/python3/site-packages/kafka/protocol/__init__.py compile /usr/src/tmp/python3-module-kafka-buildroot/usr/lib/python3/site-packages/kafka/protocol/abstract.py compile /usr/src/tmp/python3-module-kafka-buildroot/usr/lib/python3/site-packages/kafka/protocol/admin.py compile /usr/src/tmp/python3-module-kafka-buildroot/usr/lib/python3/site-packages/kafka/protocol/api.py compile /usr/src/tmp/python3-module-kafka-buildroot/usr/lib/python3/site-packages/kafka/protocol/commit.py compile /usr/src/tmp/python3-module-kafka-buildroot/usr/lib/python3/site-packages/kafka/protocol/fetch.py compile /usr/src/tmp/python3-module-kafka-buildroot/usr/lib/python3/site-packages/kafka/protocol/frame.py compile /usr/src/tmp/python3-module-kafka-buildroot/usr/lib/python3/site-packages/kafka/protocol/group.py compile /usr/src/tmp/python3-module-kafka-buildroot/usr/lib/python3/site-packages/kafka/protocol/message.py compile /usr/src/tmp/python3-module-kafka-buildroot/usr/lib/python3/site-packages/kafka/protocol/metadata.py compile /usr/src/tmp/python3-module-kafka-buildroot/usr/lib/python3/site-packages/kafka/protocol/offset.py compile /usr/src/tmp/python3-module-kafka-buildroot/usr/lib/python3/site-packages/kafka/protocol/parser.py compile /usr/src/tmp/python3-module-kafka-buildroot/usr/lib/python3/site-packages/kafka/protocol/pickle.py compile /usr/src/tmp/python3-module-kafka-buildroot/usr/lib/python3/site-packages/kafka/protocol/produce.py compile /usr/src/tmp/python3-module-kafka-buildroot/usr/lib/python3/site-packages/kafka/protocol/struct.py compile /usr/src/tmp/python3-module-kafka-buildroot/usr/lib/python3/site-packages/kafka/protocol/types.py compile /usr/src/tmp/python3-module-kafka-buildroot/usr/lib/python3/site-packages/kafka/record/__init__.py compile /usr/src/tmp/python3-module-kafka-buildroot/usr/lib/python3/site-packages/kafka/record/_crc32c.py compile /usr/src/tmp/python3-module-kafka-buildroot/usr/lib/python3/site-packages/kafka/record/abc.py compile /usr/src/tmp/python3-module-kafka-buildroot/usr/lib/python3/site-packages/kafka/record/default_records.py compile /usr/src/tmp/python3-module-kafka-buildroot/usr/lib/python3/site-packages/kafka/record/legacy_records.py compile /usr/src/tmp/python3-module-kafka-buildroot/usr/lib/python3/site-packages/kafka/record/memory_records.py compile /usr/src/tmp/python3-module-kafka-buildroot/usr/lib/python3/site-packages/kafka/record/util.py compile /usr/src/tmp/python3-module-kafka-buildroot/usr/lib/python3/site-packages/kafka/serializer/__init__.py compile /usr/src/tmp/python3-module-kafka-buildroot/usr/lib/python3/site-packages/kafka/serializer/abstract.py compile /usr/src/tmp/python3-module-kafka-buildroot/usr/lib/python3/site-packages/kafka/vendor/__init__.py compile /usr/src/tmp/python3-module-kafka-buildroot/usr/lib/python3/site-packages/kafka/__init__.py compile /usr/src/tmp/python3-module-kafka-buildroot/usr/lib/python3/site-packages/kafka/client_async.py compile /usr/src/tmp/python3-module-kafka-buildroot/usr/lib/python3/site-packages/kafka/cluster.py compile /usr/src/tmp/python3-module-kafka-buildroot/usr/lib/python3/site-packages/kafka/codec.py compile /usr/src/tmp/python3-module-kafka-buildroot/usr/lib/python3/site-packages/kafka/conn.py compile /usr/src/tmp/python3-module-kafka-buildroot/usr/lib/python3/site-packages/kafka/errors.py compile /usr/src/tmp/python3-module-kafka-buildroot/usr/lib/python3/site-packages/kafka/future.py compile /usr/src/tmp/python3-module-kafka-buildroot/usr/lib/python3/site-packages/kafka/scram.py compile /usr/src/tmp/python3-module-kafka-buildroot/usr/lib/python3/site-packages/kafka/structs.py compile /usr/src/tmp/python3-module-kafka-buildroot/usr/lib/python3/site-packages/kafka/util.py compile /usr/src/tmp/python3-module-kafka-buildroot/usr/lib/python3/site-packages/kafka/version.py Hardlinking identical .pyc and .opt-?.pyc files './usr/lib/python3/site-packages/kafka/__pycache__/__init__.cpython-311.opt-1.pyc' => './usr/lib/python3/site-packages/kafka/__pycache__/__init__.cpython-311.pyc' './usr/lib/python3/site-packages/kafka/__pycache__/__init__.cpython-311.opt-2.pyc' => './usr/lib/python3/site-packages/kafka/__pycache__/__init__.cpython-311.opt-1.pyc' './usr/lib/python3/site-packages/kafka/__pycache__/cluster.cpython-311.opt-1.pyc' => './usr/lib/python3/site-packages/kafka/__pycache__/cluster.cpython-311.pyc' './usr/lib/python3/site-packages/kafka/__pycache__/errors.cpython-311.opt-1.pyc' => './usr/lib/python3/site-packages/kafka/__pycache__/errors.cpython-311.pyc' './usr/lib/python3/site-packages/kafka/__pycache__/future.cpython-311.opt-2.pyc' => './usr/lib/python3/site-packages/kafka/__pycache__/future.cpython-311.opt-1.pyc' './usr/lib/python3/site-packages/kafka/__pycache__/scram.cpython-311.opt-1.pyc' => './usr/lib/python3/site-packages/kafka/__pycache__/scram.cpython-311.pyc' './usr/lib/python3/site-packages/kafka/__pycache__/scram.cpython-311.opt-2.pyc' => './usr/lib/python3/site-packages/kafka/__pycache__/scram.cpython-311.opt-1.pyc' './usr/lib/python3/site-packages/kafka/__pycache__/structs.cpython-311.opt-1.pyc' => './usr/lib/python3/site-packages/kafka/__pycache__/structs.cpython-311.pyc' './usr/lib/python3/site-packages/kafka/__pycache__/util.cpython-311.opt-1.pyc' => './usr/lib/python3/site-packages/kafka/__pycache__/util.cpython-311.pyc' './usr/lib/python3/site-packages/kafka/__pycache__/version.cpython-311.opt-1.pyc' => './usr/lib/python3/site-packages/kafka/__pycache__/version.cpython-311.pyc' './usr/lib/python3/site-packages/kafka/__pycache__/version.cpython-311.opt-2.pyc' => './usr/lib/python3/site-packages/kafka/__pycache__/version.cpython-311.opt-1.pyc' './usr/lib/python3/site-packages/kafka/admin/__pycache__/__init__.cpython-311.opt-1.pyc' => './usr/lib/python3/site-packages/kafka/admin/__pycache__/__init__.cpython-311.pyc' './usr/lib/python3/site-packages/kafka/admin/__pycache__/__init__.cpython-311.opt-2.pyc' => './usr/lib/python3/site-packages/kafka/admin/__pycache__/__init__.cpython-311.opt-1.pyc' './usr/lib/python3/site-packages/kafka/admin/__pycache__/acl_resource.cpython-311.opt-1.pyc' => './usr/lib/python3/site-packages/kafka/admin/__pycache__/acl_resource.cpython-311.pyc' './usr/lib/python3/site-packages/kafka/admin/__pycache__/config_resource.cpython-311.opt-1.pyc' => './usr/lib/python3/site-packages/kafka/admin/__pycache__/config_resource.cpython-311.pyc' './usr/lib/python3/site-packages/kafka/admin/__pycache__/new_partitions.cpython-311.opt-1.pyc' => './usr/lib/python3/site-packages/kafka/admin/__pycache__/new_partitions.cpython-311.pyc' './usr/lib/python3/site-packages/kafka/admin/__pycache__/new_topic.cpython-311.opt-1.pyc' => './usr/lib/python3/site-packages/kafka/admin/__pycache__/new_topic.cpython-311.pyc' './usr/lib/python3/site-packages/kafka/consumer/__pycache__/__init__.cpython-311.opt-1.pyc' => './usr/lib/python3/site-packages/kafka/consumer/__pycache__/__init__.cpython-311.pyc' './usr/lib/python3/site-packages/kafka/consumer/__pycache__/__init__.cpython-311.opt-2.pyc' => './usr/lib/python3/site-packages/kafka/consumer/__pycache__/__init__.cpython-311.opt-1.pyc' './usr/lib/python3/site-packages/kafka/coordinator/__pycache__/__init__.cpython-311.opt-1.pyc' => './usr/lib/python3/site-packages/kafka/coordinator/__pycache__/__init__.cpython-311.pyc' './usr/lib/python3/site-packages/kafka/coordinator/__pycache__/__init__.cpython-311.opt-2.pyc' => './usr/lib/python3/site-packages/kafka/coordinator/__pycache__/__init__.cpython-311.opt-1.pyc' './usr/lib/python3/site-packages/kafka/coordinator/__pycache__/base.cpython-311.opt-1.pyc' => './usr/lib/python3/site-packages/kafka/coordinator/__pycache__/base.cpython-311.pyc' './usr/lib/python3/site-packages/kafka/coordinator/__pycache__/protocol.cpython-311.opt-1.pyc' => './usr/lib/python3/site-packages/kafka/coordinator/__pycache__/protocol.cpython-311.pyc' './usr/lib/python3/site-packages/kafka/coordinator/__pycache__/protocol.cpython-311.opt-2.pyc' => './usr/lib/python3/site-packages/kafka/coordinator/__pycache__/protocol.cpython-311.opt-1.pyc' './usr/lib/python3/site-packages/kafka/coordinator/assignors/__pycache__/__init__.cpython-311.opt-1.pyc' => './usr/lib/python3/site-packages/kafka/coordinator/assignors/__pycache__/__init__.cpython-311.pyc' './usr/lib/python3/site-packages/kafka/coordinator/assignors/__pycache__/__init__.cpython-311.opt-2.pyc' => './usr/lib/python3/site-packages/kafka/coordinator/assignors/__pycache__/__init__.cpython-311.opt-1.pyc' './usr/lib/python3/site-packages/kafka/coordinator/assignors/__pycache__/abstract.cpython-311.opt-1.pyc' => './usr/lib/python3/site-packages/kafka/coordinator/assignors/__pycache__/abstract.cpython-311.pyc' './usr/lib/python3/site-packages/kafka/coordinator/assignors/__pycache__/range.cpython-311.opt-1.pyc' => './usr/lib/python3/site-packages/kafka/coordinator/assignors/__pycache__/range.cpython-311.pyc' './usr/lib/python3/site-packages/kafka/coordinator/assignors/__pycache__/roundrobin.cpython-311.opt-1.pyc' => './usr/lib/python3/site-packages/kafka/coordinator/assignors/__pycache__/roundrobin.cpython-311.pyc' './usr/lib/python3/site-packages/kafka/coordinator/assignors/sticky/__pycache__/__init__.cpython-311.opt-1.pyc' => './usr/lib/python3/site-packages/kafka/coordinator/assignors/sticky/__pycache__/__init__.cpython-311.pyc' './usr/lib/python3/site-packages/kafka/coordinator/assignors/sticky/__pycache__/__init__.cpython-311.opt-2.pyc' => './usr/lib/python3/site-packages/kafka/coordinator/assignors/sticky/__pycache__/__init__.cpython-311.opt-1.pyc' './usr/lib/python3/site-packages/kafka/coordinator/assignors/sticky/__pycache__/sorted_set.cpython-311.opt-1.pyc' => './usr/lib/python3/site-packages/kafka/coordinator/assignors/sticky/__pycache__/sorted_set.cpython-311.pyc' './usr/lib/python3/site-packages/kafka/coordinator/assignors/sticky/__pycache__/sorted_set.cpython-311.opt-2.pyc' => './usr/lib/python3/site-packages/kafka/coordinator/assignors/sticky/__pycache__/sorted_set.cpython-311.opt-1.pyc' './usr/lib/python3/site-packages/kafka/metrics/__pycache__/__init__.cpython-311.opt-1.pyc' => './usr/lib/python3/site-packages/kafka/metrics/__pycache__/__init__.cpython-311.pyc' './usr/lib/python3/site-packages/kafka/metrics/__pycache__/__init__.cpython-311.opt-2.pyc' => './usr/lib/python3/site-packages/kafka/metrics/__pycache__/__init__.cpython-311.opt-1.pyc' './usr/lib/python3/site-packages/kafka/metrics/__pycache__/compound_stat.cpython-311.opt-1.pyc' => './usr/lib/python3/site-packages/kafka/metrics/__pycache__/compound_stat.cpython-311.pyc' './usr/lib/python3/site-packages/kafka/metrics/__pycache__/dict_reporter.cpython-311.opt-1.pyc' => './usr/lib/python3/site-packages/kafka/metrics/__pycache__/dict_reporter.cpython-311.pyc' './usr/lib/python3/site-packages/kafka/metrics/__pycache__/kafka_metric.cpython-311.opt-1.pyc' => './usr/lib/python3/site-packages/kafka/metrics/__pycache__/kafka_metric.cpython-311.pyc' './usr/lib/python3/site-packages/kafka/metrics/__pycache__/kafka_metric.cpython-311.opt-2.pyc' => './usr/lib/python3/site-packages/kafka/metrics/__pycache__/kafka_metric.cpython-311.opt-1.pyc' './usr/lib/python3/site-packages/kafka/metrics/__pycache__/measurable.cpython-311.opt-1.pyc' => './usr/lib/python3/site-packages/kafka/metrics/__pycache__/measurable.cpython-311.pyc' './usr/lib/python3/site-packages/kafka/metrics/__pycache__/measurable_stat.cpython-311.opt-1.pyc' => './usr/lib/python3/site-packages/kafka/metrics/__pycache__/measurable_stat.cpython-311.pyc' './usr/lib/python3/site-packages/kafka/metrics/__pycache__/metric_config.cpython-311.opt-1.pyc' => './usr/lib/python3/site-packages/kafka/metrics/__pycache__/metric_config.cpython-311.pyc' './usr/lib/python3/site-packages/kafka/metrics/__pycache__/metric_name.cpython-311.opt-1.pyc' => './usr/lib/python3/site-packages/kafka/metrics/__pycache__/metric_name.cpython-311.pyc' './usr/lib/python3/site-packages/kafka/metrics/__pycache__/metrics.cpython-311.opt-1.pyc' => './usr/lib/python3/site-packages/kafka/metrics/__pycache__/metrics.cpython-311.pyc' './usr/lib/python3/site-packages/kafka/metrics/__pycache__/metrics_reporter.cpython-311.opt-1.pyc' => './usr/lib/python3/site-packages/kafka/metrics/__pycache__/metrics_reporter.cpython-311.pyc' './usr/lib/python3/site-packages/kafka/metrics/__pycache__/quota.cpython-311.opt-1.pyc' => './usr/lib/python3/site-packages/kafka/metrics/__pycache__/quota.cpython-311.pyc' './usr/lib/python3/site-packages/kafka/metrics/__pycache__/stat.cpython-311.opt-1.pyc' => './usr/lib/python3/site-packages/kafka/metrics/__pycache__/stat.cpython-311.pyc' './usr/lib/python3/site-packages/kafka/metrics/stats/__pycache__/__init__.cpython-311.opt-1.pyc' => './usr/lib/python3/site-packages/kafka/metrics/stats/__pycache__/__init__.cpython-311.pyc' './usr/lib/python3/site-packages/kafka/metrics/stats/__pycache__/__init__.cpython-311.opt-2.pyc' => './usr/lib/python3/site-packages/kafka/metrics/stats/__pycache__/__init__.cpython-311.opt-1.pyc' './usr/lib/python3/site-packages/kafka/metrics/stats/__pycache__/avg.cpython-311.opt-1.pyc' => './usr/lib/python3/site-packages/kafka/metrics/stats/__pycache__/avg.cpython-311.pyc' './usr/lib/python3/site-packages/kafka/metrics/stats/__pycache__/count.cpython-311.opt-1.pyc' => './usr/lib/python3/site-packages/kafka/metrics/stats/__pycache__/count.cpython-311.pyc' './usr/lib/python3/site-packages/kafka/metrics/stats/__pycache__/histogram.cpython-311.opt-1.pyc' => './usr/lib/python3/site-packages/kafka/metrics/stats/__pycache__/histogram.cpython-311.pyc' './usr/lib/python3/site-packages/kafka/metrics/stats/__pycache__/histogram.cpython-311.opt-2.pyc' => './usr/lib/python3/site-packages/kafka/metrics/stats/__pycache__/histogram.cpython-311.opt-1.pyc' './usr/lib/python3/site-packages/kafka/metrics/stats/__pycache__/max_stat.cpython-311.opt-1.pyc' => './usr/lib/python3/site-packages/kafka/metrics/stats/__pycache__/max_stat.cpython-311.pyc' './usr/lib/python3/site-packages/kafka/metrics/stats/__pycache__/min_stat.cpython-311.opt-1.pyc' => './usr/lib/python3/site-packages/kafka/metrics/stats/__pycache__/min_stat.cpython-311.pyc' './usr/lib/python3/site-packages/kafka/metrics/stats/__pycache__/percentile.cpython-311.opt-1.pyc' => './usr/lib/python3/site-packages/kafka/metrics/stats/__pycache__/percentile.cpython-311.pyc' './usr/lib/python3/site-packages/kafka/metrics/stats/__pycache__/percentile.cpython-311.opt-2.pyc' => './usr/lib/python3/site-packages/kafka/metrics/stats/__pycache__/percentile.cpython-311.opt-1.pyc' './usr/lib/python3/site-packages/kafka/metrics/stats/__pycache__/rate.cpython-311.opt-1.pyc' => './usr/lib/python3/site-packages/kafka/metrics/stats/__pycache__/rate.cpython-311.pyc' './usr/lib/python3/site-packages/kafka/metrics/stats/__pycache__/sampled_stat.cpython-311.opt-1.pyc' => './usr/lib/python3/site-packages/kafka/metrics/stats/__pycache__/sampled_stat.cpython-311.pyc' './usr/lib/python3/site-packages/kafka/metrics/stats/__pycache__/sensor.cpython-311.opt-1.pyc' => './usr/lib/python3/site-packages/kafka/metrics/stats/__pycache__/sensor.cpython-311.pyc' './usr/lib/python3/site-packages/kafka/metrics/stats/__pycache__/total.cpython-311.opt-1.pyc' => './usr/lib/python3/site-packages/kafka/metrics/stats/__pycache__/total.cpython-311.pyc' './usr/lib/python3/site-packages/kafka/oauth/__pycache__/__init__.cpython-311.opt-1.pyc' => './usr/lib/python3/site-packages/kafka/oauth/__pycache__/__init__.cpython-311.pyc' './usr/lib/python3/site-packages/kafka/oauth/__pycache__/__init__.cpython-311.opt-2.pyc' => './usr/lib/python3/site-packages/kafka/oauth/__pycache__/__init__.cpython-311.opt-1.pyc' './usr/lib/python3/site-packages/kafka/oauth/__pycache__/abstract.cpython-311.opt-1.pyc' => './usr/lib/python3/site-packages/kafka/oauth/__pycache__/abstract.cpython-311.pyc' './usr/lib/python3/site-packages/kafka/partitioner/__pycache__/__init__.cpython-311.opt-1.pyc' => './usr/lib/python3/site-packages/kafka/partitioner/__pycache__/__init__.cpython-311.pyc' './usr/lib/python3/site-packages/kafka/partitioner/__pycache__/__init__.cpython-311.opt-2.pyc' => './usr/lib/python3/site-packages/kafka/partitioner/__pycache__/__init__.cpython-311.opt-1.pyc' './usr/lib/python3/site-packages/kafka/partitioner/__pycache__/default.cpython-311.opt-1.pyc' => './usr/lib/python3/site-packages/kafka/partitioner/__pycache__/default.cpython-311.pyc' './usr/lib/python3/site-packages/kafka/producer/__pycache__/__init__.cpython-311.opt-1.pyc' => './usr/lib/python3/site-packages/kafka/producer/__pycache__/__init__.cpython-311.pyc' './usr/lib/python3/site-packages/kafka/producer/__pycache__/__init__.cpython-311.opt-2.pyc' => './usr/lib/python3/site-packages/kafka/producer/__pycache__/__init__.cpython-311.opt-1.pyc' './usr/lib/python3/site-packages/kafka/producer/__pycache__/future.cpython-311.opt-2.pyc' => './usr/lib/python3/site-packages/kafka/producer/__pycache__/future.cpython-311.opt-1.pyc' './usr/lib/python3/site-packages/kafka/producer/__pycache__/sender.cpython-311.opt-1.pyc' => './usr/lib/python3/site-packages/kafka/producer/__pycache__/sender.cpython-311.pyc' './usr/lib/python3/site-packages/kafka/protocol/__pycache__/__init__.cpython-311.opt-1.pyc' => './usr/lib/python3/site-packages/kafka/protocol/__pycache__/__init__.cpython-311.pyc' './usr/lib/python3/site-packages/kafka/protocol/__pycache__/__init__.cpython-311.opt-2.pyc' => './usr/lib/python3/site-packages/kafka/protocol/__pycache__/__init__.cpython-311.opt-1.pyc' './usr/lib/python3/site-packages/kafka/protocol/__pycache__/abstract.cpython-311.opt-1.pyc' => './usr/lib/python3/site-packages/kafka/protocol/__pycache__/abstract.cpython-311.pyc' './usr/lib/python3/site-packages/kafka/protocol/__pycache__/abstract.cpython-311.opt-2.pyc' => './usr/lib/python3/site-packages/kafka/protocol/__pycache__/abstract.cpython-311.opt-1.pyc' './usr/lib/python3/site-packages/kafka/protocol/__pycache__/admin.cpython-311.opt-1.pyc' => './usr/lib/python3/site-packages/kafka/protocol/__pycache__/admin.cpython-311.pyc' './usr/lib/python3/site-packages/kafka/protocol/__pycache__/api.cpython-311.opt-1.pyc' => './usr/lib/python3/site-packages/kafka/protocol/__pycache__/api.cpython-311.pyc' './usr/lib/python3/site-packages/kafka/protocol/__pycache__/commit.cpython-311.opt-1.pyc' => './usr/lib/python3/site-packages/kafka/protocol/__pycache__/commit.cpython-311.pyc' './usr/lib/python3/site-packages/kafka/protocol/__pycache__/commit.cpython-311.opt-2.pyc' => './usr/lib/python3/site-packages/kafka/protocol/__pycache__/commit.cpython-311.opt-1.pyc' './usr/lib/python3/site-packages/kafka/protocol/__pycache__/fetch.cpython-311.opt-1.pyc' => './usr/lib/python3/site-packages/kafka/protocol/__pycache__/fetch.cpython-311.pyc' './usr/lib/python3/site-packages/kafka/protocol/__pycache__/frame.cpython-311.opt-1.pyc' => './usr/lib/python3/site-packages/kafka/protocol/__pycache__/frame.cpython-311.pyc' './usr/lib/python3/site-packages/kafka/protocol/__pycache__/frame.cpython-311.opt-2.pyc' => './usr/lib/python3/site-packages/kafka/protocol/__pycache__/frame.cpython-311.opt-1.pyc' './usr/lib/python3/site-packages/kafka/protocol/__pycache__/group.cpython-311.opt-1.pyc' => './usr/lib/python3/site-packages/kafka/protocol/__pycache__/group.cpython-311.pyc' './usr/lib/python3/site-packages/kafka/protocol/__pycache__/group.cpython-311.opt-2.pyc' => './usr/lib/python3/site-packages/kafka/protocol/__pycache__/group.cpython-311.opt-1.pyc' './usr/lib/python3/site-packages/kafka/protocol/__pycache__/metadata.cpython-311.opt-1.pyc' => './usr/lib/python3/site-packages/kafka/protocol/__pycache__/metadata.cpython-311.pyc' './usr/lib/python3/site-packages/kafka/protocol/__pycache__/offset.cpython-311.opt-1.pyc' => './usr/lib/python3/site-packages/kafka/protocol/__pycache__/offset.cpython-311.pyc' './usr/lib/python3/site-packages/kafka/protocol/__pycache__/parser.cpython-311.opt-1.pyc' => './usr/lib/python3/site-packages/kafka/protocol/__pycache__/parser.cpython-311.pyc' './usr/lib/python3/site-packages/kafka/protocol/__pycache__/pickle.cpython-311.opt-1.pyc' => './usr/lib/python3/site-packages/kafka/protocol/__pycache__/pickle.cpython-311.pyc' './usr/lib/python3/site-packages/kafka/protocol/__pycache__/pickle.cpython-311.opt-2.pyc' => './usr/lib/python3/site-packages/kafka/protocol/__pycache__/pickle.cpython-311.opt-1.pyc' './usr/lib/python3/site-packages/kafka/protocol/__pycache__/produce.cpython-311.opt-1.pyc' => './usr/lib/python3/site-packages/kafka/protocol/__pycache__/produce.cpython-311.pyc' './usr/lib/python3/site-packages/kafka/protocol/__pycache__/struct.cpython-311.opt-1.pyc' => './usr/lib/python3/site-packages/kafka/protocol/__pycache__/struct.cpython-311.pyc' './usr/lib/python3/site-packages/kafka/protocol/__pycache__/struct.cpython-311.opt-2.pyc' => './usr/lib/python3/site-packages/kafka/protocol/__pycache__/struct.cpython-311.opt-1.pyc' './usr/lib/python3/site-packages/kafka/protocol/__pycache__/types.cpython-311.opt-1.pyc' => './usr/lib/python3/site-packages/kafka/protocol/__pycache__/types.cpython-311.pyc' './usr/lib/python3/site-packages/kafka/protocol/__pycache__/types.cpython-311.opt-2.pyc' => './usr/lib/python3/site-packages/kafka/protocol/__pycache__/types.cpython-311.opt-1.pyc' './usr/lib/python3/site-packages/kafka/record/__pycache__/__init__.cpython-311.opt-1.pyc' => './usr/lib/python3/site-packages/kafka/record/__pycache__/__init__.cpython-311.pyc' './usr/lib/python3/site-packages/kafka/record/__pycache__/__init__.cpython-311.opt-2.pyc' => './usr/lib/python3/site-packages/kafka/record/__pycache__/__init__.cpython-311.opt-1.pyc' './usr/lib/python3/site-packages/kafka/record/__pycache__/_crc32c.cpython-311.opt-1.pyc' => './usr/lib/python3/site-packages/kafka/record/__pycache__/_crc32c.cpython-311.pyc' './usr/lib/python3/site-packages/kafka/record/__pycache__/abc.cpython-311.opt-1.pyc' => './usr/lib/python3/site-packages/kafka/record/__pycache__/abc.cpython-311.pyc' './usr/lib/python3/site-packages/kafka/record/__pycache__/util.cpython-311.opt-1.pyc' => './usr/lib/python3/site-packages/kafka/record/__pycache__/util.cpython-311.pyc' './usr/lib/python3/site-packages/kafka/serializer/__pycache__/__init__.cpython-311.opt-1.pyc' => './usr/lib/python3/site-packages/kafka/serializer/__pycache__/__init__.cpython-311.pyc' './usr/lib/python3/site-packages/kafka/serializer/__pycache__/__init__.cpython-311.opt-2.pyc' => './usr/lib/python3/site-packages/kafka/serializer/__pycache__/__init__.cpython-311.opt-1.pyc' './usr/lib/python3/site-packages/kafka/serializer/__pycache__/abstract.cpython-311.opt-1.pyc' => './usr/lib/python3/site-packages/kafka/serializer/__pycache__/abstract.cpython-311.pyc' './usr/lib/python3/site-packages/kafka/serializer/__pycache__/abstract.cpython-311.opt-2.pyc' => './usr/lib/python3/site-packages/kafka/serializer/__pycache__/abstract.cpython-311.opt-1.pyc' './usr/lib/python3/site-packages/kafka/vendor/__pycache__/__init__.cpython-311.opt-1.pyc' => './usr/lib/python3/site-packages/kafka/vendor/__pycache__/__init__.cpython-311.pyc' Executing(%check): /bin/sh -e /usr/src/tmp/rpm-tmp.40068 + umask 022 + /bin/mkdir -p /usr/src/RPM/BUILD + cd /usr/src/RPM/BUILD + cd python3-module-kafka-2.0.2 ++ cat ./dist/.wheeltracker + _tox_wheel=kafka_python-2.0.2-py2.py3-none-any.whl + export NO_INTERNET=YES + NO_INTERNET=YES + export PIP_NO_BUILD_ISOLATION=NO + PIP_NO_BUILD_ISOLATION=NO + export PIP_NO_INDEX=YES + PIP_NO_INDEX=YES + export TOXENV=py3 + TOXENV=py3 + export TOX_TESTENV_PASSENV=NO_INTERNET + TOX_TESTENV_PASSENV=NO_INTERNET + /usr/bin/tox.py3 --sitepackages -vvr -s false --no-deps --console-scripts --installpkg=./dist/kafka_python-2.0.2-py2.py3-none-any.whl -- -vra using tox.ini: /usr/src/RPM/BUILD/python3-module-kafka-2.0.2/tox.ini (pid 2898141) no-deps plugin: deps: '[pytest, pytest-cov, pytest-mock, mock, python-snappy, zstandard, lz4, xxhash, crc32c]' will be skipped for 'py26' no-deps plugin: deps: '[pytest, pytest-cov, pylint, pytest-pylint, pytest-mock, mock, python-snappy, zstandard, lz4, xxhash, crc32c]' will be skipped for 'py27' no-deps plugin: deps: '[pytest, pytest-cov, pylint, pytest-pylint, pytest-mock, mock, python-snappy, zstandard, lz4, xxhash, crc32c]' will be skipped for 'py34' no-deps plugin: deps: '[pytest, pytest-cov, pylint, pytest-pylint, pytest-mock, mock, python-snappy, zstandard, lz4, xxhash, crc32c]' will be skipped for 'py35' no-deps plugin: deps: '[pytest, pytest-cov, pylint, pytest-pylint, pytest-mock, mock, python-snappy, zstandard, lz4, xxhash, crc32c]' will be skipped for 'py36' no-deps plugin: deps: '[pytest, pytest-cov, pylint, pytest-pylint, pytest-mock, mock, python-snappy, zstandard, lz4, xxhash, crc32c]' will be skipped for 'py37' no-deps plugin: deps: '[pytest, pytest-cov, pylint, pytest-pylint, pytest-mock, mock, python-snappy, zstandard, lz4, xxhash, crc32c]' will be skipped for 'py38' no-deps plugin: deps: '[pytest, pytest-cov, pylint, pytest-pylint, pytest-mock, mock, python-snappy, zstandard, lz4, xxhash, crc32c]' will be skipped for 'pypy' no-deps plugin: deps: '[sphinx_rtd_theme, sphinx]' will be skipped for 'docs' no-deps plugin: deps: '[pytest, pytest-cov, pytest-mock, mock, python-snappy, zstandard, lz4, xxhash, crc32c]' will be skipped for 'py3' using tox-3.27.1 from /usr/lib/python3/site-packages/tox/__init__.py (pid 2898141) using package '/usr/src/RPM/BUILD/python3-module-kafka-2.0.2/dist/kafka_python-2.0.2-py2.py3-none-any.whl', skipping 'sdist' activity package .tox/.tmp/package/1/kafka_python-2.0.2-py2.py3-none-any.whl links to dist/kafka_python-2.0.2-py2.py3-none-any.whl (/usr/src/RPM/BUILD/python3-module-kafka-2.0.2) py3 uses /usr/bin/python3 py3 start: getenv /usr/src/RPM/BUILD/python3-module-kafka-2.0.2/.tox/py3 py3 cannot reuse: -r flag py3 create: /usr/src/RPM/BUILD/python3-module-kafka-2.0.2/.tox/py3 setting PATH=/usr/src/RPM/BUILD/python3-module-kafka-2.0.2/.tox/py3/bin:/usr/src/bin:/bin:/usr/bin:/usr/X11R6/bin:/usr/games [2898921] /usr/src/RPM/BUILD/python3-module-kafka-2.0.2/.tox$ /usr/bin/python3 -m virtualenv --system-site-packages --no-download --python /usr/bin/python3 py3 created virtual environment CPython3.11.4.final.0-64 in 185ms creator CPython3Posix(dest=/usr/src/RPM/BUILD/python3-module-kafka-2.0.2/.tox/py3, clear=False, no_vcs_ignore=False, global=True) seeder FromAppData(download=False, pip=bundle, setuptools=bundle, wheel=bundle, via=copy, app_data_dir=/usr/src/.local/share/virtualenv) added seed packages: pip==23.1.2, setuptools==68.0.0, wheel==0.40.0 activators BashActivator,CShellActivator,FishActivator,NushellActivator,PowerShellActivator,PythonActivator setting PATH=/usr/src/RPM/BUILD/python3-module-kafka-2.0.2/.tox/py3/bin:/usr/src/bin:/bin:/usr/bin:/usr/X11R6/bin:/usr/games [2901230] /usr/src/RPM/BUILD/python3-module-kafka-2.0.2$ /usr/src/RPM/BUILD/python3-module-kafka-2.0.2/.tox/py3/bin/python /usr/lib/python3/site-packages/tox_console_scripts/helper/console_scripts.py Generating script wheel into /usr/src/RPM/BUILD/python3-module-kafka-2.0.2/.tox/py3/bin Generating script tox into /usr/src/RPM/BUILD/python3-module-kafka-2.0.2/.tox/py3/bin Generating script tox-quickstart into /usr/src/RPM/BUILD/python3-module-kafka-2.0.2/.tox/py3/bin Generating script virtualenv into /usr/src/RPM/BUILD/python3-module-kafka-2.0.2/.tox/py3/bin Generating script py.test into /usr/src/RPM/BUILD/python3-module-kafka-2.0.2/.tox/py3/bin Generating script pytest into /usr/src/RPM/BUILD/python3-module-kafka-2.0.2/.tox/py3/bin py3 finish: getenv /usr/src/RPM/BUILD/python3-module-kafka-2.0.2/.tox/py3 after 0.36 seconds py3 start: installpkg /usr/src/RPM/BUILD/python3-module-kafka-2.0.2/.tox/.tmp/package/1/kafka_python-2.0.2-py2.py3-none-any.whl py3 inst: /usr/src/RPM/BUILD/python3-module-kafka-2.0.2/.tox/.tmp/package/1/kafka_python-2.0.2-py2.py3-none-any.whl write config to /usr/src/RPM/BUILD/python3-module-kafka-2.0.2/.tox/py3/.tox-config1 as 'dae761cb0bedff3a349209838a0b7759abfc208fa31ad32697c409eea35ad3b0 /usr/bin/python3\n3.27.1 1 0 0' setting PATH=/usr/src/RPM/BUILD/python3-module-kafka-2.0.2/.tox/py3/bin:/usr/src/bin:/bin:/usr/bin:/usr/X11R6/bin:/usr/games [2901886] /usr/src/RPM/BUILD/python3-module-kafka-2.0.2$ /usr/src/RPM/BUILD/python3-module-kafka-2.0.2/.tox/py3/bin/python -m pip install --exists-action w .tox/.tmp/package/1/kafka_python-2.0.2-py2.py3-none-any.whl Processing ./.tox/.tmp/package/1/kafka_python-2.0.2-py2.py3-none-any.whl Installing collected packages: kafka-python Successfully installed kafka-python-2.0.2 py3 finish: installpkg /usr/src/RPM/BUILD/python3-module-kafka-2.0.2/.tox/.tmp/package/1/kafka_python-2.0.2-py2.py3-none-any.whl after 0.93 seconds py3 start: envreport setting PATH=/usr/src/RPM/BUILD/python3-module-kafka-2.0.2/.tox/py3/bin:/usr/src/bin:/bin:/usr/bin:/usr/X11R6/bin:/usr/games [2908498] /usr/src/RPM/BUILD/python3-module-kafka-2.0.2$ /usr/src/RPM/BUILD/python3-module-kafka-2.0.2/.tox/py3/bin/python -m pip freeze >.tox/py3/log/py3-0.log py3 finish: envreport after 0.27 seconds py3 installed: apipkg==3.0.1,cffi==1.15.1,crc32c==2.3,distlib==0.3.6,filelock==3.12.2,iniconfig==2.0.0,kafka-python @ file:///usr/src/RPM/BUILD/python3-module-kafka-2.0.2/.tox/.tmp/package/1/kafka_python-2.0.2-py2.py3-none-any.whl#sha256=2fed432bf9c9158ab637baf1b300f68f54472422e3e9e2b4d49d586bdb29eb89,lz4==4.3.2,mock==5.0.2,packaging==23.1,platformdirs==3.7.0,pluggy==1.0.0,py==1.11.0,pycparser==2.21,pyproject-installer==0.5.1,pytest==7.3.2,pytest-mock==3.11.1,python-snappy==0.6.1,six==1.16.0,tomli==2.0.1,tox==3.27.1,tox-console-scripts==0.3.2,tox-no-deps==0.2.0,virtualenv==20.23.1,xxhash==3.1.0 py3 start: run-test-pre py3 run-test-pre: PYTHONHASHSEED='4026845552' py3 finish: run-test-pre after 0.00 seconds py3 start: run-test py3 run-test: commands[0] | py.test -vra setting PATH=/usr/src/RPM/BUILD/python3-module-kafka-2.0.2/.tox/py3/bin:/usr/src/bin:/bin:/usr/bin:/usr/X11R6/bin:/usr/games [2910820] /usr/src/RPM/BUILD/python3-module-kafka-2.0.2$ /usr/src/RPM/BUILD/python3-module-kafka-2.0.2/.tox/py3/bin/py.test -vra ============================= test session starts ============================== platform linux -- Python 3.11.4, pytest-7.3.2, pluggy-1.0.0 -- /usr/src/RPM/BUILD/python3-module-kafka-2.0.2/.tox/py3/bin/python cachedir: .tox/py3/.pytest_cache rootdir: /usr/src/RPM/BUILD/python3-module-kafka-2.0.2 configfile: tox.ini testpaths: kafka, test plugins: mock-3.11.1 collecting ... collected 1245 items test/test_acl_comparisons.py::test_different_acls_are_different PASSED [ 0%] test/test_acl_comparisons.py::test_different_acls_are_different_with_glob_topics PASSED [ 0%] test/test_acl_comparisons.py::test_same_acls_are_same PASSED [ 0%] test/test_admin.py::test_config_resource PASSED [ 0%] test/test_admin.py::test_new_partitions PASSED [ 0%] test/test_admin.py::test_acl_resource PASSED [ 0%] test/test_admin.py::test_new_topic PASSED [ 0%] test/test_admin_integration.py::test_create_describe_delete_acls SKIPPED [ 0%] test/test_admin_integration.py::test_describe_configs_broker_resource_returns_configs SKIPPED [ 0%] test/test_admin_integration.py::test_describe_configs_topic_resource_returns_configs SKIPPED [ 0%] test/test_admin_integration.py::test_describe_configs_mixed_resources_returns_configs SKIPPED [ 0%] test/test_admin_integration.py::test_describe_configs_invalid_broker_id_raises SKIPPED [ 0%] test/test_admin_integration.py::test_describe_consumer_group_does_not_exist SKIPPED [ 1%] test/test_admin_integration.py::test_describe_consumer_group_exists SKIPPED [ 1%] test/test_admin_integration.py::test_delete_consumergroups SKIPPED (...) [ 1%] test/test_admin_integration.py::test_delete_consumergroups_with_errors SKIPPED [ 1%] test/test_api_object_implementation.py::test_request_type_conformance[API_KEY-ApiVersionRequest_v0] PASSED [ 1%] test/test_api_object_implementation.py::test_request_type_conformance[API_KEY-ApiVersionRequest_v1] PASSED [ 1%] test/test_api_object_implementation.py::test_request_type_conformance[API_KEY-ApiVersionRequest_v2] PASSED [ 1%] test/test_api_object_implementation.py::test_request_type_conformance[API_KEY-CreateTopicsRequest_v0] PASSED [ 1%] test/test_api_object_implementation.py::test_request_type_conformance[API_KEY-CreateTopicsRequest_v1] PASSED [ 1%] test/test_api_object_implementation.py::test_request_type_conformance[API_KEY-CreateTopicsRequest_v2] PASSED [ 1%] test/test_api_object_implementation.py::test_request_type_conformance[API_KEY-CreateTopicsRequest_v3] PASSED [ 1%] test/test_api_object_implementation.py::test_request_type_conformance[API_KEY-DeleteTopicsRequest_v0] PASSED [ 1%] test/test_api_object_implementation.py::test_request_type_conformance[API_KEY-DeleteTopicsRequest_v1] PASSED [ 2%] test/test_api_object_implementation.py::test_request_type_conformance[API_KEY-DeleteTopicsRequest_v2] PASSED [ 2%] test/test_api_object_implementation.py::test_request_type_conformance[API_KEY-DeleteTopicsRequest_v3] PASSED [ 2%] test/test_api_object_implementation.py::test_request_type_conformance[API_KEY-ListGroupsRequest_v0] PASSED [ 2%] test/test_api_object_implementation.py::test_request_type_conformance[API_KEY-ListGroupsRequest_v1] PASSED [ 2%] test/test_api_object_implementation.py::test_request_type_conformance[API_KEY-ListGroupsRequest_v2] PASSED [ 2%] test/test_api_object_implementation.py::test_request_type_conformance[API_KEY-DescribeGroupsRequest_v0] PASSED [ 2%] test/test_api_object_implementation.py::test_request_type_conformance[API_KEY-DescribeGroupsRequest_v1] PASSED [ 2%] test/test_api_object_implementation.py::test_request_type_conformance[API_KEY-DescribeGroupsRequest_v2] PASSED [ 2%] test/test_api_object_implementation.py::test_request_type_conformance[API_KEY-DescribeGroupsRequest_v3] PASSED [ 2%] test/test_api_object_implementation.py::test_request_type_conformance[API_KEY-SaslHandShakeRequest_v0] PASSED [ 2%] test/test_api_object_implementation.py::test_request_type_conformance[API_KEY-SaslHandShakeRequest_v1] PASSED [ 2%] test/test_api_object_implementation.py::test_request_type_conformance[API_KEY-DescribeAclsRequest_v0] PASSED [ 2%] test/test_api_object_implementation.py::test_request_type_conformance[API_KEY-DescribeAclsRequest_v1] PASSED [ 3%] test/test_api_object_implementation.py::test_request_type_conformance[API_KEY-DescribeAclsRequest_v2] PASSED [ 3%] test/test_api_object_implementation.py::test_request_type_conformance[API_KEY-CreateAclsRequest_v0] PASSED [ 3%] test/test_api_object_implementation.py::test_request_type_conformance[API_KEY-CreateAclsRequest_v1] PASSED [ 3%] test/test_api_object_implementation.py::test_request_type_conformance[API_KEY-DeleteAclsRequest_v0] PASSED [ 3%] test/test_api_object_implementation.py::test_request_type_conformance[API_KEY-DeleteAclsRequest_v1] PASSED [ 3%] test/test_api_object_implementation.py::test_request_type_conformance[API_KEY-AlterConfigsRequest_v0] PASSED [ 3%] test/test_api_object_implementation.py::test_request_type_conformance[API_KEY-AlterConfigsRequest_v1] PASSED [ 3%] test/test_api_object_implementation.py::test_request_type_conformance[API_KEY-DescribeConfigsRequest_v0] PASSED [ 3%] test/test_api_object_implementation.py::test_request_type_conformance[API_KEY-DescribeConfigsRequest_v1] PASSED [ 3%] test/test_api_object_implementation.py::test_request_type_conformance[API_KEY-DescribeConfigsRequest_v2] PASSED [ 3%] test/test_api_object_implementation.py::test_request_type_conformance[API_KEY-SaslAuthenticateRequest_v0] PASSED [ 3%] test/test_api_object_implementation.py::test_request_type_conformance[API_KEY-SaslAuthenticateRequest_v1] PASSED [ 4%] test/test_api_object_implementation.py::test_request_type_conformance[API_KEY-CreatePartitionsRequest_v0] PASSED [ 4%] test/test_api_object_implementation.py::test_request_type_conformance[API_KEY-CreatePartitionsRequest_v1] PASSED [ 4%] test/test_api_object_implementation.py::test_request_type_conformance[API_KEY-DeleteGroupsRequest_v0] PASSED [ 4%] test/test_api_object_implementation.py::test_request_type_conformance[API_KEY-DeleteGroupsRequest_v1] PASSED [ 4%] test/test_api_object_implementation.py::test_request_type_conformance[API_KEY-OffsetCommitRequest_v0] PASSED [ 4%] test/test_api_object_implementation.py::test_request_type_conformance[API_KEY-OffsetCommitRequest_v1] PASSED [ 4%] test/test_api_object_implementation.py::test_request_type_conformance[API_KEY-OffsetCommitRequest_v2] PASSED [ 4%] test/test_api_object_implementation.py::test_request_type_conformance[API_KEY-OffsetCommitRequest_v3] PASSED [ 4%] test/test_api_object_implementation.py::test_request_type_conformance[API_KEY-OffsetFetchRequest_v0] PASSED [ 4%] test/test_api_object_implementation.py::test_request_type_conformance[API_KEY-OffsetFetchRequest_v1] PASSED [ 4%] test/test_api_object_implementation.py::test_request_type_conformance[API_KEY-OffsetFetchRequest_v2] PASSED [ 4%] test/test_api_object_implementation.py::test_request_type_conformance[API_KEY-OffsetFetchRequest_v3] PASSED [ 4%] test/test_api_object_implementation.py::test_request_type_conformance[API_KEY-GroupCoordinatorRequest_v0] PASSED [ 5%] test/test_api_object_implementation.py::test_request_type_conformance[API_KEY-GroupCoordinatorRequest_v1] PASSED [ 5%] test/test_api_object_implementation.py::test_request_type_conformance[API_KEY-OffsetRequest_v0] PASSED [ 5%] test/test_api_object_implementation.py::test_request_type_conformance[API_KEY-OffsetRequest_v1] PASSED [ 5%] test/test_api_object_implementation.py::test_request_type_conformance[API_KEY-OffsetRequest_v2] PASSED [ 5%] test/test_api_object_implementation.py::test_request_type_conformance[API_KEY-OffsetRequest_v3] PASSED [ 5%] test/test_api_object_implementation.py::test_request_type_conformance[API_KEY-OffsetRequest_v4] PASSED [ 5%] test/test_api_object_implementation.py::test_request_type_conformance[API_KEY-OffsetRequest_v5] PASSED [ 5%] test/test_api_object_implementation.py::test_request_type_conformance[API_KEY-ProduceRequest] PASSED [ 5%] test/test_api_object_implementation.py::test_request_type_conformance[API_KEY-MetadataRequest_v0] PASSED [ 5%] test/test_api_object_implementation.py::test_request_type_conformance[API_KEY-MetadataRequest_v1] PASSED [ 5%] test/test_api_object_implementation.py::test_request_type_conformance[API_KEY-MetadataRequest_v2] PASSED [ 5%] test/test_api_object_implementation.py::test_request_type_conformance[API_KEY-MetadataRequest_v3] PASSED [ 6%] test/test_api_object_implementation.py::test_request_type_conformance[API_KEY-MetadataRequest_v4] PASSED [ 6%] test/test_api_object_implementation.py::test_request_type_conformance[API_KEY-MetadataRequest_v5] PASSED [ 6%] test/test_api_object_implementation.py::test_request_type_conformance[API_KEY-FetchRequest_v0] PASSED [ 6%] test/test_api_object_implementation.py::test_request_type_conformance[API_KEY-FetchRequest_v1] PASSED [ 6%] test/test_api_object_implementation.py::test_request_type_conformance[API_KEY-FetchRequest_v2] PASSED [ 6%] test/test_api_object_implementation.py::test_request_type_conformance[API_KEY-FetchRequest_v3] PASSED [ 6%] test/test_api_object_implementation.py::test_request_type_conformance[API_KEY-FetchRequest_v4] PASSED [ 6%] test/test_api_object_implementation.py::test_request_type_conformance[API_KEY-FetchRequest_v5] PASSED [ 6%] test/test_api_object_implementation.py::test_request_type_conformance[API_KEY-FetchRequest_v6] PASSED [ 6%] test/test_api_object_implementation.py::test_request_type_conformance[API_KEY-FetchRequest_v7] PASSED [ 6%] test/test_api_object_implementation.py::test_request_type_conformance[API_KEY-FetchRequest_v8] PASSED [ 6%] test/test_api_object_implementation.py::test_request_type_conformance[API_KEY-FetchRequest_v9] PASSED [ 6%] test/test_api_object_implementation.py::test_request_type_conformance[API_KEY-FetchRequest_v10] PASSED [ 7%] test/test_api_object_implementation.py::test_request_type_conformance[API_KEY-FetchRequest_v11] PASSED [ 7%] test/test_api_object_implementation.py::test_request_type_conformance[API_KEY-JoinGroupRequest_v0] PASSED [ 7%] test/test_api_object_implementation.py::test_request_type_conformance[API_KEY-JoinGroupRequest_v1] PASSED [ 7%] test/test_api_object_implementation.py::test_request_type_conformance[API_KEY-JoinGroupRequest_v2] PASSED [ 7%] test/test_api_object_implementation.py::test_request_type_conformance[API_KEY-SyncGroupRequest_v0] PASSED [ 7%] test/test_api_object_implementation.py::test_request_type_conformance[API_KEY-SyncGroupRequest_v1] PASSED [ 7%] test/test_api_object_implementation.py::test_request_type_conformance[API_KEY-HeartbeatRequest_v0] PASSED [ 7%] test/test_api_object_implementation.py::test_request_type_conformance[API_KEY-HeartbeatRequest_v1] PASSED [ 7%] test/test_api_object_implementation.py::test_request_type_conformance[API_KEY-LeaveGroupRequest_v0] PASSED [ 7%] test/test_api_object_implementation.py::test_request_type_conformance[API_KEY-LeaveGroupRequest_v1] PASSED [ 7%] test/test_api_object_implementation.py::test_request_type_conformance[API_VERSION-ApiVersionRequest_v0] PASSED [ 7%] test/test_api_object_implementation.py::test_request_type_conformance[API_VERSION-ApiVersionRequest_v1] PASSED [ 8%] test/test_api_object_implementation.py::test_request_type_conformance[API_VERSION-ApiVersionRequest_v2] PASSED [ 8%] test/test_api_object_implementation.py::test_request_type_conformance[API_VERSION-CreateTopicsRequest_v0] PASSED [ 8%] test/test_api_object_implementation.py::test_request_type_conformance[API_VERSION-CreateTopicsRequest_v1] PASSED [ 8%] test/test_api_object_implementation.py::test_request_type_conformance[API_VERSION-CreateTopicsRequest_v2] PASSED [ 8%] test/test_api_object_implementation.py::test_request_type_conformance[API_VERSION-CreateTopicsRequest_v3] PASSED [ 8%] test/test_api_object_implementation.py::test_request_type_conformance[API_VERSION-DeleteTopicsRequest_v0] PASSED [ 8%] test/test_api_object_implementation.py::test_request_type_conformance[API_VERSION-DeleteTopicsRequest_v1] PASSED [ 8%] test/test_api_object_implementation.py::test_request_type_conformance[API_VERSION-DeleteTopicsRequest_v2] PASSED [ 8%] test/test_api_object_implementation.py::test_request_type_conformance[API_VERSION-DeleteTopicsRequest_v3] PASSED [ 8%] test/test_api_object_implementation.py::test_request_type_conformance[API_VERSION-ListGroupsRequest_v0] PASSED [ 8%] test/test_api_object_implementation.py::test_request_type_conformance[API_VERSION-ListGroupsRequest_v1] PASSED [ 8%] test/test_api_object_implementation.py::test_request_type_conformance[API_VERSION-ListGroupsRequest_v2] PASSED [ 8%] test/test_api_object_implementation.py::test_request_type_conformance[API_VERSION-DescribeGroupsRequest_v0] PASSED [ 9%] test/test_api_object_implementation.py::test_request_type_conformance[API_VERSION-DescribeGroupsRequest_v1] PASSED [ 9%] test/test_api_object_implementation.py::test_request_type_conformance[API_VERSION-DescribeGroupsRequest_v2] PASSED [ 9%] test/test_api_object_implementation.py::test_request_type_conformance[API_VERSION-DescribeGroupsRequest_v3] PASSED [ 9%] test/test_api_object_implementation.py::test_request_type_conformance[API_VERSION-SaslHandShakeRequest_v0] PASSED [ 9%] test/test_api_object_implementation.py::test_request_type_conformance[API_VERSION-SaslHandShakeRequest_v1] PASSED [ 9%] test/test_api_object_implementation.py::test_request_type_conformance[API_VERSION-DescribeAclsRequest_v0] PASSED [ 9%] test/test_api_object_implementation.py::test_request_type_conformance[API_VERSION-DescribeAclsRequest_v1] PASSED [ 9%] test/test_api_object_implementation.py::test_request_type_conformance[API_VERSION-DescribeAclsRequest_v2] PASSED [ 9%] test/test_api_object_implementation.py::test_request_type_conformance[API_VERSION-CreateAclsRequest_v0] PASSED [ 9%] test/test_api_object_implementation.py::test_request_type_conformance[API_VERSION-CreateAclsRequest_v1] PASSED [ 9%] test/test_api_object_implementation.py::test_request_type_conformance[API_VERSION-DeleteAclsRequest_v0] PASSED [ 9%] test/test_api_object_implementation.py::test_request_type_conformance[API_VERSION-DeleteAclsRequest_v1] PASSED [ 10%] test/test_api_object_implementation.py::test_request_type_conformance[API_VERSION-AlterConfigsRequest_v0] PASSED [ 10%] test/test_api_object_implementation.py::test_request_type_conformance[API_VERSION-AlterConfigsRequest_v1] PASSED [ 10%] test/test_api_object_implementation.py::test_request_type_conformance[API_VERSION-DescribeConfigsRequest_v0] PASSED [ 10%] test/test_api_object_implementation.py::test_request_type_conformance[API_VERSION-DescribeConfigsRequest_v1] PASSED [ 10%] test/test_api_object_implementation.py::test_request_type_conformance[API_VERSION-DescribeConfigsRequest_v2] PASSED [ 10%] test/test_api_object_implementation.py::test_request_type_conformance[API_VERSION-SaslAuthenticateRequest_v0] PASSED [ 10%] test/test_api_object_implementation.py::test_request_type_conformance[API_VERSION-SaslAuthenticateRequest_v1] PASSED [ 10%] test/test_api_object_implementation.py::test_request_type_conformance[API_VERSION-CreatePartitionsRequest_v0] PASSED [ 10%] test/test_api_object_implementation.py::test_request_type_conformance[API_VERSION-CreatePartitionsRequest_v1] PASSED [ 10%] test/test_api_object_implementation.py::test_request_type_conformance[API_VERSION-DeleteGroupsRequest_v0] PASSED [ 10%] test/test_api_object_implementation.py::test_request_type_conformance[API_VERSION-DeleteGroupsRequest_v1] PASSED [ 10%] test/test_api_object_implementation.py::test_request_type_conformance[API_VERSION-OffsetCommitRequest_v0] PASSED [ 11%] test/test_api_object_implementation.py::test_request_type_conformance[API_VERSION-OffsetCommitRequest_v1] PASSED [ 11%] test/test_api_object_implementation.py::test_request_type_conformance[API_VERSION-OffsetCommitRequest_v2] PASSED [ 11%] test/test_api_object_implementation.py::test_request_type_conformance[API_VERSION-OffsetCommitRequest_v3] PASSED [ 11%] test/test_api_object_implementation.py::test_request_type_conformance[API_VERSION-OffsetFetchRequest_v0] PASSED [ 11%] test/test_api_object_implementation.py::test_request_type_conformance[API_VERSION-OffsetFetchRequest_v1] PASSED [ 11%] test/test_api_object_implementation.py::test_request_type_conformance[API_VERSION-OffsetFetchRequest_v2] PASSED [ 11%] test/test_api_object_implementation.py::test_request_type_conformance[API_VERSION-OffsetFetchRequest_v3] PASSED [ 11%] test/test_api_object_implementation.py::test_request_type_conformance[API_VERSION-GroupCoordinatorRequest_v0] PASSED [ 11%] test/test_api_object_implementation.py::test_request_type_conformance[API_VERSION-GroupCoordinatorRequest_v1] PASSED [ 11%] test/test_api_object_implementation.py::test_request_type_conformance[API_VERSION-OffsetRequest_v0] PASSED [ 11%] test/test_api_object_implementation.py::test_request_type_conformance[API_VERSION-OffsetRequest_v1] PASSED [ 11%] test/test_api_object_implementation.py::test_request_type_conformance[API_VERSION-OffsetRequest_v2] PASSED [ 11%] test/test_api_object_implementation.py::test_request_type_conformance[API_VERSION-OffsetRequest_v3] PASSED [ 12%] test/test_api_object_implementation.py::test_request_type_conformance[API_VERSION-OffsetRequest_v4] PASSED [ 12%] test/test_api_object_implementation.py::test_request_type_conformance[API_VERSION-OffsetRequest_v5] PASSED [ 12%] test/test_api_object_implementation.py::test_request_type_conformance[API_VERSION-ProduceRequest] PASSED [ 12%] test/test_api_object_implementation.py::test_request_type_conformance[API_VERSION-MetadataRequest_v0] PASSED [ 12%] test/test_api_object_implementation.py::test_request_type_conformance[API_VERSION-MetadataRequest_v1] PASSED [ 12%] test/test_api_object_implementation.py::test_request_type_conformance[API_VERSION-MetadataRequest_v2] PASSED [ 12%] test/test_api_object_implementation.py::test_request_type_conformance[API_VERSION-MetadataRequest_v3] PASSED [ 12%] test/test_api_object_implementation.py::test_request_type_conformance[API_VERSION-MetadataRequest_v4] PASSED [ 12%] test/test_api_object_implementation.py::test_request_type_conformance[API_VERSION-MetadataRequest_v5] PASSED [ 12%] test/test_api_object_implementation.py::test_request_type_conformance[API_VERSION-FetchRequest_v0] PASSED [ 12%] test/test_api_object_implementation.py::test_request_type_conformance[API_VERSION-FetchRequest_v1] PASSED [ 12%] test/test_api_object_implementation.py::test_request_type_conformance[API_VERSION-FetchRequest_v2] PASSED [ 13%] test/test_api_object_implementation.py::test_request_type_conformance[API_VERSION-FetchRequest_v3] PASSED [ 13%] test/test_api_object_implementation.py::test_request_type_conformance[API_VERSION-FetchRequest_v4] PASSED [ 13%] test/test_api_object_implementation.py::test_request_type_conformance[API_VERSION-FetchRequest_v5] PASSED [ 13%] test/test_api_object_implementation.py::test_request_type_conformance[API_VERSION-FetchRequest_v6] PASSED [ 13%] test/test_api_object_implementation.py::test_request_type_conformance[API_VERSION-FetchRequest_v7] PASSED [ 13%] test/test_api_object_implementation.py::test_request_type_conformance[API_VERSION-FetchRequest_v8] PASSED [ 13%] test/test_api_object_implementation.py::test_request_type_conformance[API_VERSION-FetchRequest_v9] PASSED [ 13%] test/test_api_object_implementation.py::test_request_type_conformance[API_VERSION-FetchRequest_v10] PASSED [ 13%] test/test_api_object_implementation.py::test_request_type_conformance[API_VERSION-FetchRequest_v11] PASSED [ 13%] test/test_api_object_implementation.py::test_request_type_conformance[API_VERSION-JoinGroupRequest_v0] PASSED [ 13%] test/test_api_object_implementation.py::test_request_type_conformance[API_VERSION-JoinGroupRequest_v1] PASSED [ 13%] test/test_api_object_implementation.py::test_request_type_conformance[API_VERSION-JoinGroupRequest_v2] PASSED [ 13%] test/test_api_object_implementation.py::test_request_type_conformance[API_VERSION-SyncGroupRequest_v0] PASSED [ 14%] test/test_api_object_implementation.py::test_request_type_conformance[API_VERSION-SyncGroupRequest_v1] PASSED [ 14%] test/test_api_object_implementation.py::test_request_type_conformance[API_VERSION-HeartbeatRequest_v0] PASSED [ 14%] test/test_api_object_implementation.py::test_request_type_conformance[API_VERSION-HeartbeatRequest_v1] PASSED [ 14%] test/test_api_object_implementation.py::test_request_type_conformance[API_VERSION-LeaveGroupRequest_v0] PASSED [ 14%] test/test_api_object_implementation.py::test_request_type_conformance[API_VERSION-LeaveGroupRequest_v1] PASSED [ 14%] test/test_api_object_implementation.py::test_request_type_conformance[RESPONSE_TYPE-ApiVersionRequest_v0] PASSED [ 14%] test/test_api_object_implementation.py::test_request_type_conformance[RESPONSE_TYPE-ApiVersionRequest_v1] PASSED [ 14%] test/test_api_object_implementation.py::test_request_type_conformance[RESPONSE_TYPE-ApiVersionRequest_v2] PASSED [ 14%] test/test_api_object_implementation.py::test_request_type_conformance[RESPONSE_TYPE-CreateTopicsRequest_v0] PASSED [ 14%] test/test_api_object_implementation.py::test_request_type_conformance[RESPONSE_TYPE-CreateTopicsRequest_v1] PASSED [ 14%] test/test_api_object_implementation.py::test_request_type_conformance[RESPONSE_TYPE-CreateTopicsRequest_v2] PASSED [ 14%] test/test_api_object_implementation.py::test_request_type_conformance[RESPONSE_TYPE-CreateTopicsRequest_v3] PASSED [ 15%] test/test_api_object_implementation.py::test_request_type_conformance[RESPONSE_TYPE-DeleteTopicsRequest_v0] PASSED [ 15%] test/test_api_object_implementation.py::test_request_type_conformance[RESPONSE_TYPE-DeleteTopicsRequest_v1] PASSED [ 15%] test/test_api_object_implementation.py::test_request_type_conformance[RESPONSE_TYPE-DeleteTopicsRequest_v2] PASSED [ 15%] test/test_api_object_implementation.py::test_request_type_conformance[RESPONSE_TYPE-DeleteTopicsRequest_v3] PASSED [ 15%] test/test_api_object_implementation.py::test_request_type_conformance[RESPONSE_TYPE-ListGroupsRequest_v0] PASSED [ 15%] test/test_api_object_implementation.py::test_request_type_conformance[RESPONSE_TYPE-ListGroupsRequest_v1] PASSED [ 15%] test/test_api_object_implementation.py::test_request_type_conformance[RESPONSE_TYPE-ListGroupsRequest_v2] PASSED [ 15%] test/test_api_object_implementation.py::test_request_type_conformance[RESPONSE_TYPE-DescribeGroupsRequest_v0] PASSED [ 15%] test/test_api_object_implementation.py::test_request_type_conformance[RESPONSE_TYPE-DescribeGroupsRequest_v1] PASSED [ 15%] test/test_api_object_implementation.py::test_request_type_conformance[RESPONSE_TYPE-DescribeGroupsRequest_v2] PASSED [ 15%] test/test_api_object_implementation.py::test_request_type_conformance[RESPONSE_TYPE-DescribeGroupsRequest_v3] PASSED [ 15%] test/test_api_object_implementation.py::test_request_type_conformance[RESPONSE_TYPE-SaslHandShakeRequest_v0] PASSED [ 15%] test/test_api_object_implementation.py::test_request_type_conformance[RESPONSE_TYPE-SaslHandShakeRequest_v1] PASSED [ 16%] test/test_api_object_implementation.py::test_request_type_conformance[RESPONSE_TYPE-DescribeAclsRequest_v0] PASSED [ 16%] test/test_api_object_implementation.py::test_request_type_conformance[RESPONSE_TYPE-DescribeAclsRequest_v1] PASSED [ 16%] test/test_api_object_implementation.py::test_request_type_conformance[RESPONSE_TYPE-DescribeAclsRequest_v2] PASSED [ 16%] test/test_api_object_implementation.py::test_request_type_conformance[RESPONSE_TYPE-CreateAclsRequest_v0] PASSED [ 16%] test/test_api_object_implementation.py::test_request_type_conformance[RESPONSE_TYPE-CreateAclsRequest_v1] PASSED [ 16%] test/test_api_object_implementation.py::test_request_type_conformance[RESPONSE_TYPE-DeleteAclsRequest_v0] PASSED [ 16%] test/test_api_object_implementation.py::test_request_type_conformance[RESPONSE_TYPE-DeleteAclsRequest_v1] PASSED [ 16%] test/test_api_object_implementation.py::test_request_type_conformance[RESPONSE_TYPE-AlterConfigsRequest_v0] PASSED [ 16%] test/test_api_object_implementation.py::test_request_type_conformance[RESPONSE_TYPE-AlterConfigsRequest_v1] PASSED [ 16%] test/test_api_object_implementation.py::test_request_type_conformance[RESPONSE_TYPE-DescribeConfigsRequest_v0] PASSED [ 16%] test/test_api_object_implementation.py::test_request_type_conformance[RESPONSE_TYPE-DescribeConfigsRequest_v1] PASSED [ 16%] test/test_api_object_implementation.py::test_request_type_conformance[RESPONSE_TYPE-DescribeConfigsRequest_v2] PASSED [ 17%] test/test_api_object_implementation.py::test_request_type_conformance[RESPONSE_TYPE-SaslAuthenticateRequest_v0] PASSED [ 17%] test/test_api_object_implementation.py::test_request_type_conformance[RESPONSE_TYPE-SaslAuthenticateRequest_v1] PASSED [ 17%] test/test_api_object_implementation.py::test_request_type_conformance[RESPONSE_TYPE-CreatePartitionsRequest_v0] PASSED [ 17%] test/test_api_object_implementation.py::test_request_type_conformance[RESPONSE_TYPE-CreatePartitionsRequest_v1] PASSED [ 17%] test/test_api_object_implementation.py::test_request_type_conformance[RESPONSE_TYPE-DeleteGroupsRequest_v0] PASSED [ 17%] test/test_api_object_implementation.py::test_request_type_conformance[RESPONSE_TYPE-DeleteGroupsRequest_v1] PASSED [ 17%] test/test_api_object_implementation.py::test_request_type_conformance[RESPONSE_TYPE-OffsetCommitRequest_v0] PASSED [ 17%] test/test_api_object_implementation.py::test_request_type_conformance[RESPONSE_TYPE-OffsetCommitRequest_v1] PASSED [ 17%] test/test_api_object_implementation.py::test_request_type_conformance[RESPONSE_TYPE-OffsetCommitRequest_v2] PASSED [ 17%] test/test_api_object_implementation.py::test_request_type_conformance[RESPONSE_TYPE-OffsetCommitRequest_v3] PASSED [ 17%] test/test_api_object_implementation.py::test_request_type_conformance[RESPONSE_TYPE-OffsetFetchRequest_v0] PASSED [ 17%] test/test_api_object_implementation.py::test_request_type_conformance[RESPONSE_TYPE-OffsetFetchRequest_v1] PASSED [ 17%] test/test_api_object_implementation.py::test_request_type_conformance[RESPONSE_TYPE-OffsetFetchRequest_v2] PASSED [ 18%] test/test_api_object_implementation.py::test_request_type_conformance[RESPONSE_TYPE-OffsetFetchRequest_v3] PASSED [ 18%] test/test_api_object_implementation.py::test_request_type_conformance[RESPONSE_TYPE-GroupCoordinatorRequest_v0] PASSED [ 18%] test/test_api_object_implementation.py::test_request_type_conformance[RESPONSE_TYPE-GroupCoordinatorRequest_v1] PASSED [ 18%] test/test_api_object_implementation.py::test_request_type_conformance[RESPONSE_TYPE-OffsetRequest_v0] PASSED [ 18%] test/test_api_object_implementation.py::test_request_type_conformance[RESPONSE_TYPE-OffsetRequest_v1] PASSED [ 18%] test/test_api_object_implementation.py::test_request_type_conformance[RESPONSE_TYPE-OffsetRequest_v2] PASSED [ 18%] test/test_api_object_implementation.py::test_request_type_conformance[RESPONSE_TYPE-OffsetRequest_v3] PASSED [ 18%] test/test_api_object_implementation.py::test_request_type_conformance[RESPONSE_TYPE-OffsetRequest_v4] PASSED [ 18%] test/test_api_object_implementation.py::test_request_type_conformance[RESPONSE_TYPE-OffsetRequest_v5] PASSED [ 18%] test/test_api_object_implementation.py::test_request_type_conformance[RESPONSE_TYPE-ProduceRequest] PASSED [ 18%] test/test_api_object_implementation.py::test_request_type_conformance[RESPONSE_TYPE-MetadataRequest_v0] PASSED [ 18%] test/test_api_object_implementation.py::test_request_type_conformance[RESPONSE_TYPE-MetadataRequest_v1] PASSED [ 19%] test/test_api_object_implementation.py::test_request_type_conformance[RESPONSE_TYPE-MetadataRequest_v2] PASSED [ 19%] test/test_api_object_implementation.py::test_request_type_conformance[RESPONSE_TYPE-MetadataRequest_v3] PASSED [ 19%] test/test_api_object_implementation.py::test_request_type_conformance[RESPONSE_TYPE-MetadataRequest_v4] PASSED [ 19%] test/test_api_object_implementation.py::test_request_type_conformance[RESPONSE_TYPE-MetadataRequest_v5] PASSED [ 19%] test/test_api_object_implementation.py::test_request_type_conformance[RESPONSE_TYPE-FetchRequest_v0] PASSED [ 19%] test/test_api_object_implementation.py::test_request_type_conformance[RESPONSE_TYPE-FetchRequest_v1] PASSED [ 19%] test/test_api_object_implementation.py::test_request_type_conformance[RESPONSE_TYPE-FetchRequest_v2] PASSED [ 19%] test/test_api_object_implementation.py::test_request_type_conformance[RESPONSE_TYPE-FetchRequest_v3] PASSED [ 19%] test/test_api_object_implementation.py::test_request_type_conformance[RESPONSE_TYPE-FetchRequest_v4] PASSED [ 19%] test/test_api_object_implementation.py::test_request_type_conformance[RESPONSE_TYPE-FetchRequest_v5] PASSED [ 19%] test/test_api_object_implementation.py::test_request_type_conformance[RESPONSE_TYPE-FetchRequest_v6] PASSED [ 19%] test/test_api_object_implementation.py::test_request_type_conformance[RESPONSE_TYPE-FetchRequest_v7] PASSED [ 20%] test/test_api_object_implementation.py::test_request_type_conformance[RESPONSE_TYPE-FetchRequest_v8] PASSED [ 20%] test/test_api_object_implementation.py::test_request_type_conformance[RESPONSE_TYPE-FetchRequest_v9] PASSED [ 20%] test/test_api_object_implementation.py::test_request_type_conformance[RESPONSE_TYPE-FetchRequest_v10] PASSED [ 20%] test/test_api_object_implementation.py::test_request_type_conformance[RESPONSE_TYPE-FetchRequest_v11] PASSED [ 20%] test/test_api_object_implementation.py::test_request_type_conformance[RESPONSE_TYPE-JoinGroupRequest_v0] PASSED [ 20%] test/test_api_object_implementation.py::test_request_type_conformance[RESPONSE_TYPE-JoinGroupRequest_v1] PASSED [ 20%] test/test_api_object_implementation.py::test_request_type_conformance[RESPONSE_TYPE-JoinGroupRequest_v2] PASSED [ 20%] test/test_api_object_implementation.py::test_request_type_conformance[RESPONSE_TYPE-SyncGroupRequest_v0] PASSED [ 20%] test/test_api_object_implementation.py::test_request_type_conformance[RESPONSE_TYPE-SyncGroupRequest_v1] PASSED [ 20%] test/test_api_object_implementation.py::test_request_type_conformance[RESPONSE_TYPE-HeartbeatRequest_v0] PASSED [ 20%] test/test_api_object_implementation.py::test_request_type_conformance[RESPONSE_TYPE-HeartbeatRequest_v1] PASSED [ 20%] test/test_api_object_implementation.py::test_request_type_conformance[RESPONSE_TYPE-LeaveGroupRequest_v0] PASSED [ 20%] test/test_api_object_implementation.py::test_request_type_conformance[RESPONSE_TYPE-LeaveGroupRequest_v1] PASSED [ 21%] test/test_api_object_implementation.py::test_request_type_conformance[SCHEMA-ApiVersionRequest_v0] PASSED [ 21%] test/test_api_object_implementation.py::test_request_type_conformance[SCHEMA-ApiVersionRequest_v1] PASSED [ 21%] test/test_api_object_implementation.py::test_request_type_conformance[SCHEMA-ApiVersionRequest_v2] PASSED [ 21%] test/test_api_object_implementation.py::test_request_type_conformance[SCHEMA-CreateTopicsRequest_v0] PASSED [ 21%] test/test_api_object_implementation.py::test_request_type_conformance[SCHEMA-CreateTopicsRequest_v1] PASSED [ 21%] test/test_api_object_implementation.py::test_request_type_conformance[SCHEMA-CreateTopicsRequest_v2] PASSED [ 21%] test/test_api_object_implementation.py::test_request_type_conformance[SCHEMA-CreateTopicsRequest_v3] PASSED [ 21%] test/test_api_object_implementation.py::test_request_type_conformance[SCHEMA-DeleteTopicsRequest_v0] PASSED [ 21%] test/test_api_object_implementation.py::test_request_type_conformance[SCHEMA-DeleteTopicsRequest_v1] PASSED [ 21%] test/test_api_object_implementation.py::test_request_type_conformance[SCHEMA-DeleteTopicsRequest_v2] PASSED [ 21%] test/test_api_object_implementation.py::test_request_type_conformance[SCHEMA-DeleteTopicsRequest_v3] PASSED [ 21%] test/test_api_object_implementation.py::test_request_type_conformance[SCHEMA-ListGroupsRequest_v0] PASSED [ 22%] test/test_api_object_implementation.py::test_request_type_conformance[SCHEMA-ListGroupsRequest_v1] PASSED [ 22%] test/test_api_object_implementation.py::test_request_type_conformance[SCHEMA-ListGroupsRequest_v2] PASSED [ 22%] test/test_api_object_implementation.py::test_request_type_conformance[SCHEMA-DescribeGroupsRequest_v0] PASSED [ 22%] test/test_api_object_implementation.py::test_request_type_conformance[SCHEMA-DescribeGroupsRequest_v1] PASSED [ 22%] test/test_api_object_implementation.py::test_request_type_conformance[SCHEMA-DescribeGroupsRequest_v2] PASSED [ 22%] test/test_api_object_implementation.py::test_request_type_conformance[SCHEMA-DescribeGroupsRequest_v3] PASSED [ 22%] test/test_api_object_implementation.py::test_request_type_conformance[SCHEMA-SaslHandShakeRequest_v0] PASSED [ 22%] test/test_api_object_implementation.py::test_request_type_conformance[SCHEMA-SaslHandShakeRequest_v1] PASSED [ 22%] test/test_api_object_implementation.py::test_request_type_conformance[SCHEMA-DescribeAclsRequest_v0] PASSED [ 22%] test/test_api_object_implementation.py::test_request_type_conformance[SCHEMA-DescribeAclsRequest_v1] PASSED [ 22%] test/test_api_object_implementation.py::test_request_type_conformance[SCHEMA-DescribeAclsRequest_v2] PASSED [ 22%] test/test_api_object_implementation.py::test_request_type_conformance[SCHEMA-CreateAclsRequest_v0] PASSED [ 22%] test/test_api_object_implementation.py::test_request_type_conformance[SCHEMA-CreateAclsRequest_v1] PASSED [ 23%] test/test_api_object_implementation.py::test_request_type_conformance[SCHEMA-DeleteAclsRequest_v0] PASSED [ 23%] test/test_api_object_implementation.py::test_request_type_conformance[SCHEMA-DeleteAclsRequest_v1] PASSED [ 23%] test/test_api_object_implementation.py::test_request_type_conformance[SCHEMA-AlterConfigsRequest_v0] PASSED [ 23%] test/test_api_object_implementation.py::test_request_type_conformance[SCHEMA-AlterConfigsRequest_v1] PASSED [ 23%] test/test_api_object_implementation.py::test_request_type_conformance[SCHEMA-DescribeConfigsRequest_v0] PASSED [ 23%] test/test_api_object_implementation.py::test_request_type_conformance[SCHEMA-DescribeConfigsRequest_v1] PASSED [ 23%] test/test_api_object_implementation.py::test_request_type_conformance[SCHEMA-DescribeConfigsRequest_v2] PASSED [ 23%] test/test_api_object_implementation.py::test_request_type_conformance[SCHEMA-SaslAuthenticateRequest_v0] PASSED [ 23%] test/test_api_object_implementation.py::test_request_type_conformance[SCHEMA-SaslAuthenticateRequest_v1] PASSED [ 23%] test/test_api_object_implementation.py::test_request_type_conformance[SCHEMA-CreatePartitionsRequest_v0] PASSED [ 23%] test/test_api_object_implementation.py::test_request_type_conformance[SCHEMA-CreatePartitionsRequest_v1] PASSED [ 23%] test/test_api_object_implementation.py::test_request_type_conformance[SCHEMA-DeleteGroupsRequest_v0] PASSED [ 24%] test/test_api_object_implementation.py::test_request_type_conformance[SCHEMA-DeleteGroupsRequest_v1] PASSED [ 24%] test/test_api_object_implementation.py::test_request_type_conformance[SCHEMA-OffsetCommitRequest_v0] PASSED [ 24%] test/test_api_object_implementation.py::test_request_type_conformance[SCHEMA-OffsetCommitRequest_v1] PASSED [ 24%] test/test_api_object_implementation.py::test_request_type_conformance[SCHEMA-OffsetCommitRequest_v2] PASSED [ 24%] test/test_api_object_implementation.py::test_request_type_conformance[SCHEMA-OffsetCommitRequest_v3] PASSED [ 24%] test/test_api_object_implementation.py::test_request_type_conformance[SCHEMA-OffsetFetchRequest_v0] PASSED [ 24%] test/test_api_object_implementation.py::test_request_type_conformance[SCHEMA-OffsetFetchRequest_v1] PASSED [ 24%] test/test_api_object_implementation.py::test_request_type_conformance[SCHEMA-OffsetFetchRequest_v2] PASSED [ 24%] test/test_api_object_implementation.py::test_request_type_conformance[SCHEMA-OffsetFetchRequest_v3] PASSED [ 24%] test/test_api_object_implementation.py::test_request_type_conformance[SCHEMA-GroupCoordinatorRequest_v0] PASSED [ 24%] test/test_api_object_implementation.py::test_request_type_conformance[SCHEMA-GroupCoordinatorRequest_v1] PASSED [ 24%] test/test_api_object_implementation.py::test_request_type_conformance[SCHEMA-OffsetRequest_v0] PASSED [ 24%] test/test_api_object_implementation.py::test_request_type_conformance[SCHEMA-OffsetRequest_v1] PASSED [ 25%] test/test_api_object_implementation.py::test_request_type_conformance[SCHEMA-OffsetRequest_v2] PASSED [ 25%] test/test_api_object_implementation.py::test_request_type_conformance[SCHEMA-OffsetRequest_v3] PASSED [ 25%] test/test_api_object_implementation.py::test_request_type_conformance[SCHEMA-OffsetRequest_v4] PASSED [ 25%] test/test_api_object_implementation.py::test_request_type_conformance[SCHEMA-OffsetRequest_v5] PASSED [ 25%] test/test_api_object_implementation.py::test_request_type_conformance[SCHEMA-ProduceRequest] PASSED [ 25%] test/test_api_object_implementation.py::test_request_type_conformance[SCHEMA-MetadataRequest_v0] PASSED [ 25%] test/test_api_object_implementation.py::test_request_type_conformance[SCHEMA-MetadataRequest_v1] PASSED [ 25%] test/test_api_object_implementation.py::test_request_type_conformance[SCHEMA-MetadataRequest_v2] PASSED [ 25%] test/test_api_object_implementation.py::test_request_type_conformance[SCHEMA-MetadataRequest_v3] PASSED [ 25%] test/test_api_object_implementation.py::test_request_type_conformance[SCHEMA-MetadataRequest_v4] PASSED [ 25%] test/test_api_object_implementation.py::test_request_type_conformance[SCHEMA-MetadataRequest_v5] PASSED [ 25%] test/test_api_object_implementation.py::test_request_type_conformance[SCHEMA-FetchRequest_v0] PASSED [ 26%] test/test_api_object_implementation.py::test_request_type_conformance[SCHEMA-FetchRequest_v1] PASSED [ 26%] test/test_api_object_implementation.py::test_request_type_conformance[SCHEMA-FetchRequest_v2] PASSED [ 26%] test/test_api_object_implementation.py::test_request_type_conformance[SCHEMA-FetchRequest_v3] PASSED [ 26%] test/test_api_object_implementation.py::test_request_type_conformance[SCHEMA-FetchRequest_v4] PASSED [ 26%] test/test_api_object_implementation.py::test_request_type_conformance[SCHEMA-FetchRequest_v5] PASSED [ 26%] test/test_api_object_implementation.py::test_request_type_conformance[SCHEMA-FetchRequest_v6] PASSED [ 26%] test/test_api_object_implementation.py::test_request_type_conformance[SCHEMA-FetchRequest_v7] PASSED [ 26%] test/test_api_object_implementation.py::test_request_type_conformance[SCHEMA-FetchRequest_v8] PASSED [ 26%] test/test_api_object_implementation.py::test_request_type_conformance[SCHEMA-FetchRequest_v9] PASSED [ 26%] test/test_api_object_implementation.py::test_request_type_conformance[SCHEMA-FetchRequest_v10] PASSED [ 26%] test/test_api_object_implementation.py::test_request_type_conformance[SCHEMA-FetchRequest_v11] PASSED [ 26%] test/test_api_object_implementation.py::test_request_type_conformance[SCHEMA-JoinGroupRequest_v0] PASSED [ 26%] test/test_api_object_implementation.py::test_request_type_conformance[SCHEMA-JoinGroupRequest_v1] PASSED [ 27%] test/test_api_object_implementation.py::test_request_type_conformance[SCHEMA-JoinGroupRequest_v2] PASSED [ 27%] test/test_api_object_implementation.py::test_request_type_conformance[SCHEMA-SyncGroupRequest_v0] PASSED [ 27%] test/test_api_object_implementation.py::test_request_type_conformance[SCHEMA-SyncGroupRequest_v1] PASSED [ 27%] test/test_api_object_implementation.py::test_request_type_conformance[SCHEMA-HeartbeatRequest_v0] PASSED [ 27%] test/test_api_object_implementation.py::test_request_type_conformance[SCHEMA-HeartbeatRequest_v1] PASSED [ 27%] test/test_api_object_implementation.py::test_request_type_conformance[SCHEMA-LeaveGroupRequest_v0] PASSED [ 27%] test/test_api_object_implementation.py::test_request_type_conformance[SCHEMA-LeaveGroupRequest_v1] PASSED [ 27%] test/test_api_object_implementation.py::test_response_type_conformance[API_KEY-ApiVersionResponse_v0] PASSED [ 27%] test/test_api_object_implementation.py::test_response_type_conformance[API_KEY-ApiVersionResponse_v1] PASSED [ 27%] test/test_api_object_implementation.py::test_response_type_conformance[API_KEY-ApiVersionResponse_v2] PASSED [ 27%] test/test_api_object_implementation.py::test_response_type_conformance[API_KEY-CreateTopicsResponse_v0] PASSED [ 27%] test/test_api_object_implementation.py::test_response_type_conformance[API_KEY-CreateTopicsResponse_v1] PASSED [ 28%] test/test_api_object_implementation.py::test_response_type_conformance[API_KEY-CreateTopicsResponse_v2] PASSED [ 28%] test/test_api_object_implementation.py::test_response_type_conformance[API_KEY-CreateTopicsResponse_v3] PASSED [ 28%] test/test_api_object_implementation.py::test_response_type_conformance[API_KEY-DeleteTopicsResponse_v0] PASSED [ 28%] test/test_api_object_implementation.py::test_response_type_conformance[API_KEY-DeleteTopicsResponse_v1] PASSED [ 28%] test/test_api_object_implementation.py::test_response_type_conformance[API_KEY-DeleteTopicsResponse_v2] PASSED [ 28%] test/test_api_object_implementation.py::test_response_type_conformance[API_KEY-DeleteTopicsResponse_v3] PASSED [ 28%] test/test_api_object_implementation.py::test_response_type_conformance[API_KEY-ListGroupsResponse_v0] PASSED [ 28%] test/test_api_object_implementation.py::test_response_type_conformance[API_KEY-ListGroupsResponse_v1] PASSED [ 28%] test/test_api_object_implementation.py::test_response_type_conformance[API_KEY-ListGroupsResponse_v2] PASSED [ 28%] test/test_api_object_implementation.py::test_response_type_conformance[API_KEY-DescribeGroupsResponse_v0] PASSED [ 28%] test/test_api_object_implementation.py::test_response_type_conformance[API_KEY-DescribeGroupsResponse_v1] PASSED [ 28%] test/test_api_object_implementation.py::test_response_type_conformance[API_KEY-DescribeGroupsResponse_v2] PASSED [ 28%] test/test_api_object_implementation.py::test_response_type_conformance[API_KEY-DescribeGroupsResponse_v3] PASSED [ 29%] test/test_api_object_implementation.py::test_response_type_conformance[API_KEY-SaslHandShakeResponse_v0] PASSED [ 29%] test/test_api_object_implementation.py::test_response_type_conformance[API_KEY-SaslHandShakeResponse_v1] PASSED [ 29%] test/test_api_object_implementation.py::test_response_type_conformance[API_KEY-DescribeAclsResponse_v0] PASSED [ 29%] test/test_api_object_implementation.py::test_response_type_conformance[API_KEY-DescribeAclsResponse_v1] PASSED [ 29%] test/test_api_object_implementation.py::test_response_type_conformance[API_KEY-DescribeAclsResponse_v2] PASSED [ 29%] test/test_api_object_implementation.py::test_response_type_conformance[API_KEY-CreateAclsResponse_v0] PASSED [ 29%] test/test_api_object_implementation.py::test_response_type_conformance[API_KEY-CreateAclsResponse_v1] PASSED [ 29%] test/test_api_object_implementation.py::test_response_type_conformance[API_KEY-DeleteAclsResponse_v0] PASSED [ 29%] test/test_api_object_implementation.py::test_response_type_conformance[API_KEY-DeleteAclsResponse_v1] PASSED [ 29%] test/test_api_object_implementation.py::test_response_type_conformance[API_KEY-AlterConfigsResponse_v0] PASSED [ 29%] test/test_api_object_implementation.py::test_response_type_conformance[API_KEY-AlterConfigsResponse_v1] PASSED [ 29%] test/test_api_object_implementation.py::test_response_type_conformance[API_KEY-DescribeConfigsResponse_v0] PASSED [ 30%] test/test_api_object_implementation.py::test_response_type_conformance[API_KEY-DescribeConfigsResponse_v1] PASSED [ 30%] test/test_api_object_implementation.py::test_response_type_conformance[API_KEY-DescribeConfigsResponse_v2] PASSED [ 30%] test/test_api_object_implementation.py::test_response_type_conformance[API_KEY-SaslAuthenticateResponse_v0] PASSED [ 30%] test/test_api_object_implementation.py::test_response_type_conformance[API_KEY-SaslAuthenticateResponse_v1] PASSED [ 30%] test/test_api_object_implementation.py::test_response_type_conformance[API_KEY-CreatePartitionsResponse_v0] PASSED [ 30%] test/test_api_object_implementation.py::test_response_type_conformance[API_KEY-CreatePartitionsResponse_v1] PASSED [ 30%] test/test_api_object_implementation.py::test_response_type_conformance[API_KEY-DeleteGroupsResponse_v0] PASSED [ 30%] test/test_api_object_implementation.py::test_response_type_conformance[API_KEY-DeleteGroupsResponse_v1] PASSED [ 30%] test/test_api_object_implementation.py::test_response_type_conformance[API_KEY-OffsetCommitResponse_v0] PASSED [ 30%] test/test_api_object_implementation.py::test_response_type_conformance[API_KEY-OffsetCommitResponse_v1] PASSED [ 30%] test/test_api_object_implementation.py::test_response_type_conformance[API_KEY-OffsetCommitResponse_v2] PASSED [ 30%] test/test_api_object_implementation.py::test_response_type_conformance[API_KEY-OffsetCommitResponse_v3] PASSED [ 31%] test/test_api_object_implementation.py::test_response_type_conformance[API_KEY-OffsetFetchResponse_v0] PASSED [ 31%] test/test_api_object_implementation.py::test_response_type_conformance[API_KEY-OffsetFetchResponse_v1] PASSED [ 31%] test/test_api_object_implementation.py::test_response_type_conformance[API_KEY-OffsetFetchResponse_v2] PASSED [ 31%] test/test_api_object_implementation.py::test_response_type_conformance[API_KEY-OffsetFetchResponse_v3] PASSED [ 31%] test/test_api_object_implementation.py::test_response_type_conformance[API_KEY-GroupCoordinatorResponse_v0] PASSED [ 31%] test/test_api_object_implementation.py::test_response_type_conformance[API_KEY-GroupCoordinatorResponse_v1] PASSED [ 31%] test/test_api_object_implementation.py::test_response_type_conformance[API_KEY-OffsetResponse_v0] PASSED [ 31%] test/test_api_object_implementation.py::test_response_type_conformance[API_KEY-OffsetResponse_v1] PASSED [ 31%] test/test_api_object_implementation.py::test_response_type_conformance[API_KEY-OffsetResponse_v2] PASSED [ 31%] test/test_api_object_implementation.py::test_response_type_conformance[API_KEY-OffsetResponse_v3] PASSED [ 31%] test/test_api_object_implementation.py::test_response_type_conformance[API_KEY-OffsetResponse_v4] PASSED [ 31%] test/test_api_object_implementation.py::test_response_type_conformance[API_KEY-OffsetResponse_v5] PASSED [ 31%] test/test_api_object_implementation.py::test_response_type_conformance[API_KEY-ProduceResponse_v0] PASSED [ 32%] test/test_api_object_implementation.py::test_response_type_conformance[API_KEY-ProduceResponse_v1] PASSED [ 32%] test/test_api_object_implementation.py::test_response_type_conformance[API_KEY-ProduceResponse_v2] PASSED [ 32%] test/test_api_object_implementation.py::test_response_type_conformance[API_KEY-ProduceResponse_v3] PASSED [ 32%] test/test_api_object_implementation.py::test_response_type_conformance[API_KEY-ProduceResponse_v4] PASSED [ 32%] test/test_api_object_implementation.py::test_response_type_conformance[API_KEY-ProduceResponse_v5] PASSED [ 32%] test/test_api_object_implementation.py::test_response_type_conformance[API_KEY-ProduceResponse_v6] PASSED [ 32%] test/test_api_object_implementation.py::test_response_type_conformance[API_KEY-ProduceResponse_v7] PASSED [ 32%] test/test_api_object_implementation.py::test_response_type_conformance[API_KEY-ProduceResponse_v8] PASSED [ 32%] test/test_api_object_implementation.py::test_response_type_conformance[API_KEY-MetadataResponse_v0] PASSED [ 32%] test/test_api_object_implementation.py::test_response_type_conformance[API_KEY-MetadataResponse_v1] PASSED [ 32%] test/test_api_object_implementation.py::test_response_type_conformance[API_KEY-MetadataResponse_v2] PASSED [ 32%] test/test_api_object_implementation.py::test_response_type_conformance[API_KEY-MetadataResponse_v3] PASSED [ 33%] test/test_api_object_implementation.py::test_response_type_conformance[API_KEY-MetadataResponse_v4] PASSED [ 33%] test/test_api_object_implementation.py::test_response_type_conformance[API_KEY-MetadataResponse_v5] PASSED [ 33%] test/test_api_object_implementation.py::test_response_type_conformance[API_KEY-FetchResponse_v0] PASSED [ 33%] test/test_api_object_implementation.py::test_response_type_conformance[API_KEY-FetchResponse_v1] PASSED [ 33%] test/test_api_object_implementation.py::test_response_type_conformance[API_KEY-FetchResponse_v2] PASSED [ 33%] test/test_api_object_implementation.py::test_response_type_conformance[API_KEY-FetchResponse_v3] PASSED [ 33%] test/test_api_object_implementation.py::test_response_type_conformance[API_KEY-FetchResponse_v4] PASSED [ 33%] test/test_api_object_implementation.py::test_response_type_conformance[API_KEY-FetchResponse_v5] PASSED [ 33%] test/test_api_object_implementation.py::test_response_type_conformance[API_KEY-FetchResponse_v6] PASSED [ 33%] test/test_api_object_implementation.py::test_response_type_conformance[API_KEY-FetchResponse_v7] PASSED [ 33%] test/test_api_object_implementation.py::test_response_type_conformance[API_KEY-FetchResponse_v8] PASSED [ 33%] test/test_api_object_implementation.py::test_response_type_conformance[API_KEY-FetchResponse_v9] PASSED [ 33%] test/test_api_object_implementation.py::test_response_type_conformance[API_KEY-FetchResponse_v10] PASSED [ 34%] test/test_api_object_implementation.py::test_response_type_conformance[API_KEY-FetchResponse_v11] PASSED [ 34%] test/test_api_object_implementation.py::test_response_type_conformance[API_KEY-JoinGroupResponse_v0] PASSED [ 34%] test/test_api_object_implementation.py::test_response_type_conformance[API_KEY-JoinGroupResponse_v1] PASSED [ 34%] test/test_api_object_implementation.py::test_response_type_conformance[API_KEY-JoinGroupResponse_v2] PASSED [ 34%] test/test_api_object_implementation.py::test_response_type_conformance[API_KEY-SyncGroupResponse_v0] PASSED [ 34%] test/test_api_object_implementation.py::test_response_type_conformance[API_KEY-SyncGroupResponse_v1] PASSED [ 34%] test/test_api_object_implementation.py::test_response_type_conformance[API_KEY-HeartbeatResponse_v0] PASSED [ 34%] test/test_api_object_implementation.py::test_response_type_conformance[API_KEY-HeartbeatResponse_v1] PASSED [ 34%] test/test_api_object_implementation.py::test_response_type_conformance[API_KEY-LeaveGroupResponse_v0] PASSED [ 34%] test/test_api_object_implementation.py::test_response_type_conformance[API_KEY-LeaveGroupResponse_v1] PASSED [ 34%] test/test_api_object_implementation.py::test_response_type_conformance[API_VERSION-ApiVersionResponse_v0] PASSED [ 34%] test/test_api_object_implementation.py::test_response_type_conformance[API_VERSION-ApiVersionResponse_v1] PASSED [ 35%] test/test_api_object_implementation.py::test_response_type_conformance[API_VERSION-ApiVersionResponse_v2] PASSED [ 35%] test/test_api_object_implementation.py::test_response_type_conformance[API_VERSION-CreateTopicsResponse_v0] PASSED [ 35%] test/test_api_object_implementation.py::test_response_type_conformance[API_VERSION-CreateTopicsResponse_v1] PASSED [ 35%] test/test_api_object_implementation.py::test_response_type_conformance[API_VERSION-CreateTopicsResponse_v2] PASSED [ 35%] test/test_api_object_implementation.py::test_response_type_conformance[API_VERSION-CreateTopicsResponse_v3] PASSED [ 35%] test/test_api_object_implementation.py::test_response_type_conformance[API_VERSION-DeleteTopicsResponse_v0] PASSED [ 35%] test/test_api_object_implementation.py::test_response_type_conformance[API_VERSION-DeleteTopicsResponse_v1] PASSED [ 35%] test/test_api_object_implementation.py::test_response_type_conformance[API_VERSION-DeleteTopicsResponse_v2] PASSED [ 35%] test/test_api_object_implementation.py::test_response_type_conformance[API_VERSION-DeleteTopicsResponse_v3] PASSED [ 35%] test/test_api_object_implementation.py::test_response_type_conformance[API_VERSION-ListGroupsResponse_v0] PASSED [ 35%] test/test_api_object_implementation.py::test_response_type_conformance[API_VERSION-ListGroupsResponse_v1] PASSED [ 35%] test/test_api_object_implementation.py::test_response_type_conformance[API_VERSION-ListGroupsResponse_v2] PASSED [ 35%] test/test_api_object_implementation.py::test_response_type_conformance[API_VERSION-DescribeGroupsResponse_v0] PASSED [ 36%] test/test_api_object_implementation.py::test_response_type_conformance[API_VERSION-DescribeGroupsResponse_v1] PASSED [ 36%] test/test_api_object_implementation.py::test_response_type_conformance[API_VERSION-DescribeGroupsResponse_v2] PASSED [ 36%] test/test_api_object_implementation.py::test_response_type_conformance[API_VERSION-DescribeGroupsResponse_v3] PASSED [ 36%] test/test_api_object_implementation.py::test_response_type_conformance[API_VERSION-SaslHandShakeResponse_v0] PASSED [ 36%] test/test_api_object_implementation.py::test_response_type_conformance[API_VERSION-SaslHandShakeResponse_v1] PASSED [ 36%] test/test_api_object_implementation.py::test_response_type_conformance[API_VERSION-DescribeAclsResponse_v0] PASSED [ 36%] test/test_api_object_implementation.py::test_response_type_conformance[API_VERSION-DescribeAclsResponse_v1] PASSED [ 36%] test/test_api_object_implementation.py::test_response_type_conformance[API_VERSION-DescribeAclsResponse_v2] PASSED [ 36%] test/test_api_object_implementation.py::test_response_type_conformance[API_VERSION-CreateAclsResponse_v0] PASSED [ 36%] test/test_api_object_implementation.py::test_response_type_conformance[API_VERSION-CreateAclsResponse_v1] PASSED [ 36%] test/test_api_object_implementation.py::test_response_type_conformance[API_VERSION-DeleteAclsResponse_v0] PASSED [ 36%] test/test_api_object_implementation.py::test_response_type_conformance[API_VERSION-DeleteAclsResponse_v1] PASSED [ 37%] test/test_api_object_implementation.py::test_response_type_conformance[API_VERSION-AlterConfigsResponse_v0] PASSED [ 37%] test/test_api_object_implementation.py::test_response_type_conformance[API_VERSION-AlterConfigsResponse_v1] PASSED [ 37%] test/test_api_object_implementation.py::test_response_type_conformance[API_VERSION-DescribeConfigsResponse_v0] PASSED [ 37%] test/test_api_object_implementation.py::test_response_type_conformance[API_VERSION-DescribeConfigsResponse_v1] PASSED [ 37%] test/test_api_object_implementation.py::test_response_type_conformance[API_VERSION-DescribeConfigsResponse_v2] PASSED [ 37%] test/test_api_object_implementation.py::test_response_type_conformance[API_VERSION-SaslAuthenticateResponse_v0] PASSED [ 37%] test/test_api_object_implementation.py::test_response_type_conformance[API_VERSION-SaslAuthenticateResponse_v1] PASSED [ 37%] test/test_api_object_implementation.py::test_response_type_conformance[API_VERSION-CreatePartitionsResponse_v0] PASSED [ 37%] test/test_api_object_implementation.py::test_response_type_conformance[API_VERSION-CreatePartitionsResponse_v1] PASSED [ 37%] test/test_api_object_implementation.py::test_response_type_conformance[API_VERSION-DeleteGroupsResponse_v0] PASSED [ 37%] test/test_api_object_implementation.py::test_response_type_conformance[API_VERSION-DeleteGroupsResponse_v1] PASSED [ 37%] test/test_api_object_implementation.py::test_response_type_conformance[API_VERSION-OffsetCommitResponse_v0] PASSED [ 37%] test/test_api_object_implementation.py::test_response_type_conformance[API_VERSION-OffsetCommitResponse_v1] PASSED [ 38%] test/test_api_object_implementation.py::test_response_type_conformance[API_VERSION-OffsetCommitResponse_v2] PASSED [ 38%] test/test_api_object_implementation.py::test_response_type_conformance[API_VERSION-OffsetCommitResponse_v3] PASSED [ 38%] test/test_api_object_implementation.py::test_response_type_conformance[API_VERSION-OffsetFetchResponse_v0] PASSED [ 38%] test/test_api_object_implementation.py::test_response_type_conformance[API_VERSION-OffsetFetchResponse_v1] PASSED [ 38%] test/test_api_object_implementation.py::test_response_type_conformance[API_VERSION-OffsetFetchResponse_v2] PASSED [ 38%] test/test_api_object_implementation.py::test_response_type_conformance[API_VERSION-OffsetFetchResponse_v3] PASSED [ 38%] test/test_api_object_implementation.py::test_response_type_conformance[API_VERSION-GroupCoordinatorResponse_v0] PASSED [ 38%] test/test_api_object_implementation.py::test_response_type_conformance[API_VERSION-GroupCoordinatorResponse_v1] PASSED [ 38%] test/test_api_object_implementation.py::test_response_type_conformance[API_VERSION-OffsetResponse_v0] PASSED [ 38%] test/test_api_object_implementation.py::test_response_type_conformance[API_VERSION-OffsetResponse_v1] PASSED [ 38%] test/test_api_object_implementation.py::test_response_type_conformance[API_VERSION-OffsetResponse_v2] PASSED [ 38%] test/test_api_object_implementation.py::test_response_type_conformance[API_VERSION-OffsetResponse_v3] PASSED [ 39%] test/test_api_object_implementation.py::test_response_type_conformance[API_VERSION-OffsetResponse_v4] PASSED [ 39%] test/test_api_object_implementation.py::test_response_type_conformance[API_VERSION-OffsetResponse_v5] PASSED [ 39%] test/test_api_object_implementation.py::test_response_type_conformance[API_VERSION-ProduceResponse_v0] PASSED [ 39%] test/test_api_object_implementation.py::test_response_type_conformance[API_VERSION-ProduceResponse_v1] PASSED [ 39%] test/test_api_object_implementation.py::test_response_type_conformance[API_VERSION-ProduceResponse_v2] PASSED [ 39%] test/test_api_object_implementation.py::test_response_type_conformance[API_VERSION-ProduceResponse_v3] PASSED [ 39%] test/test_api_object_implementation.py::test_response_type_conformance[API_VERSION-ProduceResponse_v4] PASSED [ 39%] test/test_api_object_implementation.py::test_response_type_conformance[API_VERSION-ProduceResponse_v5] PASSED [ 39%] test/test_api_object_implementation.py::test_response_type_conformance[API_VERSION-ProduceResponse_v6] PASSED [ 39%] test/test_api_object_implementation.py::test_response_type_conformance[API_VERSION-ProduceResponse_v7] PASSED [ 39%] test/test_api_object_implementation.py::test_response_type_conformance[API_VERSION-ProduceResponse_v8] PASSED [ 39%] test/test_api_object_implementation.py::test_response_type_conformance[API_VERSION-MetadataResponse_v0] PASSED [ 40%] test/test_api_object_implementation.py::test_response_type_conformance[API_VERSION-MetadataResponse_v1] PASSED [ 40%] test/test_api_object_implementation.py::test_response_type_conformance[API_VERSION-MetadataResponse_v2] PASSED [ 40%] test/test_api_object_implementation.py::test_response_type_conformance[API_VERSION-MetadataResponse_v3] PASSED [ 40%] test/test_api_object_implementation.py::test_response_type_conformance[API_VERSION-MetadataResponse_v4] PASSED [ 40%] test/test_api_object_implementation.py::test_response_type_conformance[API_VERSION-MetadataResponse_v5] PASSED [ 40%] test/test_api_object_implementation.py::test_response_type_conformance[API_VERSION-FetchResponse_v0] PASSED [ 40%] test/test_api_object_implementation.py::test_response_type_conformance[API_VERSION-FetchResponse_v1] PASSED [ 40%] test/test_api_object_implementation.py::test_response_type_conformance[API_VERSION-FetchResponse_v2] PASSED [ 40%] test/test_api_object_implementation.py::test_response_type_conformance[API_VERSION-FetchResponse_v3] PASSED [ 40%] test/test_api_object_implementation.py::test_response_type_conformance[API_VERSION-FetchResponse_v4] PASSED [ 40%] test/test_api_object_implementation.py::test_response_type_conformance[API_VERSION-FetchResponse_v5] PASSED [ 40%] test/test_api_object_implementation.py::test_response_type_conformance[API_VERSION-FetchResponse_v6] PASSED [ 40%] test/test_api_object_implementation.py::test_response_type_conformance[API_VERSION-FetchResponse_v7] PASSED [ 41%] test/test_api_object_implementation.py::test_response_type_conformance[API_VERSION-FetchResponse_v8] PASSED [ 41%] test/test_api_object_implementation.py::test_response_type_conformance[API_VERSION-FetchResponse_v9] PASSED [ 41%] test/test_api_object_implementation.py::test_response_type_conformance[API_VERSION-FetchResponse_v10] PASSED [ 41%] test/test_api_object_implementation.py::test_response_type_conformance[API_VERSION-FetchResponse_v11] PASSED [ 41%] test/test_api_object_implementation.py::test_response_type_conformance[API_VERSION-JoinGroupResponse_v0] PASSED [ 41%] test/test_api_object_implementation.py::test_response_type_conformance[API_VERSION-JoinGroupResponse_v1] PASSED [ 41%] test/test_api_object_implementation.py::test_response_type_conformance[API_VERSION-JoinGroupResponse_v2] PASSED [ 41%] test/test_api_object_implementation.py::test_response_type_conformance[API_VERSION-SyncGroupResponse_v0] PASSED [ 41%] test/test_api_object_implementation.py::test_response_type_conformance[API_VERSION-SyncGroupResponse_v1] PASSED [ 41%] test/test_api_object_implementation.py::test_response_type_conformance[API_VERSION-HeartbeatResponse_v0] PASSED [ 41%] test/test_api_object_implementation.py::test_response_type_conformance[API_VERSION-HeartbeatResponse_v1] PASSED [ 41%] test/test_api_object_implementation.py::test_response_type_conformance[API_VERSION-LeaveGroupResponse_v0] PASSED [ 42%] test/test_api_object_implementation.py::test_response_type_conformance[API_VERSION-LeaveGroupResponse_v1] PASSED [ 42%] test/test_api_object_implementation.py::test_response_type_conformance[SCHEMA-ApiVersionResponse_v0] PASSED [ 42%] test/test_api_object_implementation.py::test_response_type_conformance[SCHEMA-ApiVersionResponse_v1] PASSED [ 42%] test/test_api_object_implementation.py::test_response_type_conformance[SCHEMA-ApiVersionResponse_v2] PASSED [ 42%] test/test_api_object_implementation.py::test_response_type_conformance[SCHEMA-CreateTopicsResponse_v0] PASSED [ 42%] test/test_api_object_implementation.py::test_response_type_conformance[SCHEMA-CreateTopicsResponse_v1] PASSED [ 42%] test/test_api_object_implementation.py::test_response_type_conformance[SCHEMA-CreateTopicsResponse_v2] PASSED [ 42%] test/test_api_object_implementation.py::test_response_type_conformance[SCHEMA-CreateTopicsResponse_v3] PASSED [ 42%] test/test_api_object_implementation.py::test_response_type_conformance[SCHEMA-DeleteTopicsResponse_v0] PASSED [ 42%] test/test_api_object_implementation.py::test_response_type_conformance[SCHEMA-DeleteTopicsResponse_v1] PASSED [ 42%] test/test_api_object_implementation.py::test_response_type_conformance[SCHEMA-DeleteTopicsResponse_v2] PASSED [ 42%] test/test_api_object_implementation.py::test_response_type_conformance[SCHEMA-DeleteTopicsResponse_v3] PASSED [ 42%] test/test_api_object_implementation.py::test_response_type_conformance[SCHEMA-ListGroupsResponse_v0] PASSED [ 43%] test/test_api_object_implementation.py::test_response_type_conformance[SCHEMA-ListGroupsResponse_v1] PASSED [ 43%] test/test_api_object_implementation.py::test_response_type_conformance[SCHEMA-ListGroupsResponse_v2] PASSED [ 43%] test/test_api_object_implementation.py::test_response_type_conformance[SCHEMA-DescribeGroupsResponse_v0] PASSED [ 43%] test/test_api_object_implementation.py::test_response_type_conformance[SCHEMA-DescribeGroupsResponse_v1] PASSED [ 43%] test/test_api_object_implementation.py::test_response_type_conformance[SCHEMA-DescribeGroupsResponse_v2] PASSED [ 43%] test/test_api_object_implementation.py::test_response_type_conformance[SCHEMA-DescribeGroupsResponse_v3] PASSED [ 43%] test/test_api_object_implementation.py::test_response_type_conformance[SCHEMA-SaslHandShakeResponse_v0] PASSED [ 43%] test/test_api_object_implementation.py::test_response_type_conformance[SCHEMA-SaslHandShakeResponse_v1] PASSED [ 43%] test/test_api_object_implementation.py::test_response_type_conformance[SCHEMA-DescribeAclsResponse_v0] PASSED [ 43%] test/test_api_object_implementation.py::test_response_type_conformance[SCHEMA-DescribeAclsResponse_v1] PASSED [ 43%] test/test_api_object_implementation.py::test_response_type_conformance[SCHEMA-DescribeAclsResponse_v2] PASSED [ 43%] test/test_api_object_implementation.py::test_response_type_conformance[SCHEMA-CreateAclsResponse_v0] PASSED [ 44%] test/test_api_object_implementation.py::test_response_type_conformance[SCHEMA-CreateAclsResponse_v1] PASSED [ 44%] test/test_api_object_implementation.py::test_response_type_conformance[SCHEMA-DeleteAclsResponse_v0] PASSED [ 44%] test/test_api_object_implementation.py::test_response_type_conformance[SCHEMA-DeleteAclsResponse_v1] PASSED [ 44%] test/test_api_object_implementation.py::test_response_type_conformance[SCHEMA-AlterConfigsResponse_v0] PASSED [ 44%] test/test_api_object_implementation.py::test_response_type_conformance[SCHEMA-AlterConfigsResponse_v1] PASSED [ 44%] test/test_api_object_implementation.py::test_response_type_conformance[SCHEMA-DescribeConfigsResponse_v0] PASSED [ 44%] test/test_api_object_implementation.py::test_response_type_conformance[SCHEMA-DescribeConfigsResponse_v1] PASSED [ 44%] test/test_api_object_implementation.py::test_response_type_conformance[SCHEMA-DescribeConfigsResponse_v2] PASSED [ 44%] test/test_api_object_implementation.py::test_response_type_conformance[SCHEMA-SaslAuthenticateResponse_v0] PASSED [ 44%] test/test_api_object_implementation.py::test_response_type_conformance[SCHEMA-SaslAuthenticateResponse_v1] PASSED [ 44%] test/test_api_object_implementation.py::test_response_type_conformance[SCHEMA-CreatePartitionsResponse_v0] PASSED [ 44%] test/test_api_object_implementation.py::test_response_type_conformance[SCHEMA-CreatePartitionsResponse_v1] PASSED [ 44%] test/test_api_object_implementation.py::test_response_type_conformance[SCHEMA-DeleteGroupsResponse_v0] PASSED [ 45%] test/test_api_object_implementation.py::test_response_type_conformance[SCHEMA-DeleteGroupsResponse_v1] PASSED [ 45%] test/test_api_object_implementation.py::test_response_type_conformance[SCHEMA-OffsetCommitResponse_v0] PASSED [ 45%] test/test_api_object_implementation.py::test_response_type_conformance[SCHEMA-OffsetCommitResponse_v1] PASSED [ 45%] test/test_api_object_implementation.py::test_response_type_conformance[SCHEMA-OffsetCommitResponse_v2] PASSED [ 45%] test/test_api_object_implementation.py::test_response_type_conformance[SCHEMA-OffsetCommitResponse_v3] PASSED [ 45%] test/test_api_object_implementation.py::test_response_type_conformance[SCHEMA-OffsetFetchResponse_v0] PASSED [ 45%] test/test_api_object_implementation.py::test_response_type_conformance[SCHEMA-OffsetFetchResponse_v1] PASSED [ 45%] test/test_api_object_implementation.py::test_response_type_conformance[SCHEMA-OffsetFetchResponse_v2] PASSED [ 45%] test/test_api_object_implementation.py::test_response_type_conformance[SCHEMA-OffsetFetchResponse_v3] PASSED [ 45%] test/test_api_object_implementation.py::test_response_type_conformance[SCHEMA-GroupCoordinatorResponse_v0] PASSED [ 45%] test/test_api_object_implementation.py::test_response_type_conformance[SCHEMA-GroupCoordinatorResponse_v1] PASSED [ 45%] test/test_api_object_implementation.py::test_response_type_conformance[SCHEMA-OffsetResponse_v0] PASSED [ 46%] test/test_api_object_implementation.py::test_response_type_conformance[SCHEMA-OffsetResponse_v1] PASSED [ 46%] test/test_api_object_implementation.py::test_response_type_conformance[SCHEMA-OffsetResponse_v2] PASSED [ 46%] test/test_api_object_implementation.py::test_response_type_conformance[SCHEMA-OffsetResponse_v3] PASSED [ 46%] test/test_api_object_implementation.py::test_response_type_conformance[SCHEMA-OffsetResponse_v4] PASSED [ 46%] test/test_api_object_implementation.py::test_response_type_conformance[SCHEMA-OffsetResponse_v5] PASSED [ 46%] test/test_api_object_implementation.py::test_response_type_conformance[SCHEMA-ProduceResponse_v0] PASSED [ 46%] test/test_api_object_implementation.py::test_response_type_conformance[SCHEMA-ProduceResponse_v1] PASSED [ 46%] test/test_api_object_implementation.py::test_response_type_conformance[SCHEMA-ProduceResponse_v2] PASSED [ 46%] test/test_api_object_implementation.py::test_response_type_conformance[SCHEMA-ProduceResponse_v3] PASSED [ 46%] test/test_api_object_implementation.py::test_response_type_conformance[SCHEMA-ProduceResponse_v4] PASSED [ 46%] test/test_api_object_implementation.py::test_response_type_conformance[SCHEMA-ProduceResponse_v5] PASSED [ 46%] test/test_api_object_implementation.py::test_response_type_conformance[SCHEMA-ProduceResponse_v6] PASSED [ 46%] test/test_api_object_implementation.py::test_response_type_conformance[SCHEMA-ProduceResponse_v7] PASSED [ 47%] test/test_api_object_implementation.py::test_response_type_conformance[SCHEMA-ProduceResponse_v8] PASSED [ 47%] test/test_api_object_implementation.py::test_response_type_conformance[SCHEMA-MetadataResponse_v0] PASSED [ 47%] test/test_api_object_implementation.py::test_response_type_conformance[SCHEMA-MetadataResponse_v1] PASSED [ 47%] test/test_api_object_implementation.py::test_response_type_conformance[SCHEMA-MetadataResponse_v2] PASSED [ 47%] test/test_api_object_implementation.py::test_response_type_conformance[SCHEMA-MetadataResponse_v3] PASSED [ 47%] test/test_api_object_implementation.py::test_response_type_conformance[SCHEMA-MetadataResponse_v4] PASSED [ 47%] test/test_api_object_implementation.py::test_response_type_conformance[SCHEMA-MetadataResponse_v5] PASSED [ 47%] test/test_api_object_implementation.py::test_response_type_conformance[SCHEMA-FetchResponse_v0] PASSED [ 47%] test/test_api_object_implementation.py::test_response_type_conformance[SCHEMA-FetchResponse_v1] PASSED [ 47%] test/test_api_object_implementation.py::test_response_type_conformance[SCHEMA-FetchResponse_v2] PASSED [ 47%] test/test_api_object_implementation.py::test_response_type_conformance[SCHEMA-FetchResponse_v3] PASSED [ 47%] test/test_api_object_implementation.py::test_response_type_conformance[SCHEMA-FetchResponse_v4] PASSED [ 48%] test/test_api_object_implementation.py::test_response_type_conformance[SCHEMA-FetchResponse_v5] PASSED [ 48%] test/test_api_object_implementation.py::test_response_type_conformance[SCHEMA-FetchResponse_v6] PASSED [ 48%] test/test_api_object_implementation.py::test_response_type_conformance[SCHEMA-FetchResponse_v7] PASSED [ 48%] test/test_api_object_implementation.py::test_response_type_conformance[SCHEMA-FetchResponse_v8] PASSED [ 48%] test/test_api_object_implementation.py::test_response_type_conformance[SCHEMA-FetchResponse_v9] PASSED [ 48%] test/test_api_object_implementation.py::test_response_type_conformance[SCHEMA-FetchResponse_v10] PASSED [ 48%] test/test_api_object_implementation.py::test_response_type_conformance[SCHEMA-FetchResponse_v11] PASSED [ 48%] test/test_api_object_implementation.py::test_response_type_conformance[SCHEMA-JoinGroupResponse_v0] PASSED [ 48%] test/test_api_object_implementation.py::test_response_type_conformance[SCHEMA-JoinGroupResponse_v1] PASSED [ 48%] test/test_api_object_implementation.py::test_response_type_conformance[SCHEMA-JoinGroupResponse_v2] PASSED [ 48%] test/test_api_object_implementation.py::test_response_type_conformance[SCHEMA-SyncGroupResponse_v0] PASSED [ 48%] test/test_api_object_implementation.py::test_response_type_conformance[SCHEMA-SyncGroupResponse_v1] PASSED [ 48%] test/test_api_object_implementation.py::test_response_type_conformance[SCHEMA-HeartbeatResponse_v0] PASSED [ 49%] test/test_api_object_implementation.py::test_response_type_conformance[SCHEMA-HeartbeatResponse_v1] PASSED [ 49%] test/test_api_object_implementation.py::test_response_type_conformance[SCHEMA-LeaveGroupResponse_v0] PASSED [ 49%] test/test_api_object_implementation.py::test_response_type_conformance[SCHEMA-LeaveGroupResponse_v1] PASSED [ 49%] test/test_assignors.py::test_assignor_roundrobin PASSED [ 49%] test/test_assignors.py::test_assignor_range PASSED [ 49%] test/test_assignors.py::test_sticky_assignor1 PASSED [ 49%] test/test_assignors.py::test_sticky_assignor2 PASSED [ 49%] test/test_assignors.py::test_sticky_one_consumer_no_topic PASSED [ 49%] test/test_assignors.py::test_sticky_one_consumer_nonexisting_topic PASSED [ 49%] test/test_assignors.py::test_sticky_one_consumer_one_topic PASSED [ 49%] test/test_assignors.py::test_sticky_should_only_assign_partitions_from_subscribed_topics PASSED [ 49%] test/test_assignors.py::test_sticky_one_consumer_multiple_topics PASSED [ 50%] test/test_assignors.py::test_sticky_two_consumers_one_topic_one_partition PASSED [ 50%] test/test_assignors.py::test_sticky_two_consumers_one_topic_two_partitions PASSED [ 50%] test/test_assignors.py::test_sticky_multiple_consumers_mixed_topic_subscriptions PASSED [ 50%] test/test_assignors.py::test_sticky_add_remove_consumer_one_topic PASSED [ 50%] test/test_assignors.py::test_sticky_add_remove_topic_two_consumers PASSED [ 50%] test/test_assignors.py::test_sticky_reassignment_after_one_consumer_leaves PASSED [ 50%] test/test_assignors.py::test_sticky_reassignment_after_one_consumer_added PASSED [ 50%] test/test_assignors.py::test_sticky_same_subscriptions PASSED [ 50%] test/test_assignors.py::test_sticky_large_assignment_with_multiple_consumers_leaving PASSED [ 50%] test/test_assignors.py::test_new_subscription PASSED [ 50%] test/test_assignors.py::test_move_existing_assignments PASSED [ 50%] test/test_assignors.py::test_stickiness PASSED [ 51%] test/test_assignors.py::test_assignment_updated_for_deleted_topic PASSED [ 51%] test/test_assignors.py::test_no_exceptions_when_only_subscribed_topic_is_deleted PASSED [ 51%] test/test_assignors.py::test_conflicting_previous_assignments PASSED [ 51%] test/test_assignors.py::test_reassignment_with_random_subscriptions_and_changes[0-16-38] FAILED [ 51%] test/test_assignors.py::test_reassignment_with_random_subscriptions_and_changes[1-16-25] FAILED [ 51%] test/test_assignors.py::test_reassignment_with_random_subscriptions_and_changes[2-10-21] FAILED [ 51%] test/test_assignors.py::test_reassignment_with_random_subscriptions_and_changes[3-18-36] FAILED [ 51%] test/test_assignors.py::test_reassignment_with_random_subscriptions_and_changes[4-13-34] FAILED [ 51%] test/test_assignors.py::test_reassignment_with_random_subscriptions_and_changes[5-11-27] FAILED [ 51%] test/test_assignors.py::test_reassignment_with_random_subscriptions_and_changes[6-15-37] FAILED [ 51%] test/test_assignors.py::test_reassignment_with_random_subscriptions_and_changes[7-17-40] FAILED [ 51%] test/test_assignors.py::test_reassignment_with_random_subscriptions_and_changes[8-15-30] FAILED [ 51%] test/test_assignors.py::test_reassignment_with_random_subscriptions_and_changes[9-18-22] FAILED [ 52%] test/test_assignors.py::test_reassignment_with_random_subscriptions_and_changes[10-17-28] FAILED [ 52%] test/test_assignors.py::test_reassignment_with_random_subscriptions_and_changes[11-10-31] FAILED [ 52%] test/test_assignors.py::test_reassignment_with_random_subscriptions_and_changes[12-13-39] FAILED [ 52%] test/test_assignors.py::test_reassignment_with_random_subscriptions_and_changes[13-14-23] FAILED [ 52%] test/test_assignors.py::test_reassignment_with_random_subscriptions_and_changes[14-17-35] FAILED [ 52%] test/test_assignors.py::test_reassignment_with_random_subscriptions_and_changes[15-20-35] FAILED [ 52%] test/test_assignors.py::test_reassignment_with_random_subscriptions_and_changes[16-18-26] FAILED [ 52%] test/test_assignors.py::test_reassignment_with_random_subscriptions_and_changes[17-10-29] FAILED [ 52%] test/test_assignors.py::test_reassignment_with_random_subscriptions_and_changes[18-11-29] FAILED [ 52%] test/test_assignors.py::test_reassignment_with_random_subscriptions_and_changes[19-16-37] FAILED [ 52%] test/test_assignors.py::test_reassignment_with_random_subscriptions_and_changes[20-14-35] FAILED [ 52%] test/test_assignors.py::test_reassignment_with_random_subscriptions_and_changes[21-19-36] FAILED [ 53%] test/test_assignors.py::test_reassignment_with_random_subscriptions_and_changes[22-14-30] FAILED [ 53%] test/test_assignors.py::test_reassignment_with_random_subscriptions_and_changes[23-14-29] FAILED [ 53%] test/test_assignors.py::test_reassignment_with_random_subscriptions_and_changes[24-14-20] FAILED [ 53%] test/test_assignors.py::test_reassignment_with_random_subscriptions_and_changes[25-18-36] FAILED [ 53%] test/test_assignors.py::test_reassignment_with_random_subscriptions_and_changes[26-10-33] FAILED [ 53%] test/test_assignors.py::test_reassignment_with_random_subscriptions_and_changes[27-13-27] FAILED [ 53%] test/test_assignors.py::test_reassignment_with_random_subscriptions_and_changes[28-12-40] FAILED [ 53%] test/test_assignors.py::test_reassignment_with_random_subscriptions_and_changes[29-18-33] FAILED [ 53%] test/test_assignors.py::test_reassignment_with_random_subscriptions_and_changes[30-18-21] FAILED [ 53%] test/test_assignors.py::test_reassignment_with_random_subscriptions_and_changes[31-19-22] FAILED [ 53%] test/test_assignors.py::test_reassignment_with_random_subscriptions_and_changes[32-18-20] FAILED [ 53%] test/test_assignors.py::test_reassignment_with_random_subscriptions_and_changes[33-11-24] FAILED [ 53%] test/test_assignors.py::test_reassignment_with_random_subscriptions_and_changes[34-19-34] FAILED [ 54%] test/test_assignors.py::test_reassignment_with_random_subscriptions_and_changes[35-18-35] FAILED [ 54%] test/test_assignors.py::test_reassignment_with_random_subscriptions_and_changes[36-16-26] FAILED [ 54%] test/test_assignors.py::test_reassignment_with_random_subscriptions_and_changes[37-19-36] FAILED [ 54%] test/test_assignors.py::test_reassignment_with_random_subscriptions_and_changes[38-20-32] FAILED [ 54%] test/test_assignors.py::test_reassignment_with_random_subscriptions_and_changes[39-12-31] FAILED [ 54%] test/test_assignors.py::test_reassignment_with_random_subscriptions_and_changes[40-20-37] FAILED [ 54%] test/test_assignors.py::test_reassignment_with_random_subscriptions_and_changes[41-12-32] FAILED [ 54%] test/test_assignors.py::test_reassignment_with_random_subscriptions_and_changes[42-14-26] FAILED [ 54%] test/test_assignors.py::test_reassignment_with_random_subscriptions_and_changes[43-12-20] FAILED [ 54%] test/test_assignors.py::test_reassignment_with_random_subscriptions_and_changes[44-15-34] FAILED [ 54%] test/test_assignors.py::test_reassignment_with_random_subscriptions_and_changes[45-15-27] FAILED [ 54%] test/test_assignors.py::test_reassignment_with_random_subscriptions_and_changes[46-16-37] FAILED [ 55%] test/test_assignors.py::test_reassignment_with_random_subscriptions_and_changes[47-20-37] FAILED [ 55%] test/test_assignors.py::test_reassignment_with_random_subscriptions_and_changes[48-11-37] FAILED [ 55%] test/test_assignors.py::test_reassignment_with_random_subscriptions_and_changes[49-10-35] FAILED [ 55%] test/test_assignors.py::test_reassignment_with_random_subscriptions_and_changes[50-19-32] FAILED [ 55%] test/test_assignors.py::test_reassignment_with_random_subscriptions_and_changes[51-10-33] FAILED [ 55%] test/test_assignors.py::test_reassignment_with_random_subscriptions_and_changes[52-20-35] FAILED [ 55%] test/test_assignors.py::test_reassignment_with_random_subscriptions_and_changes[53-10-29] FAILED [ 55%] test/test_assignors.py::test_reassignment_with_random_subscriptions_and_changes[54-18-37] FAILED [ 55%] test/test_assignors.py::test_reassignment_with_random_subscriptions_and_changes[55-19-39] FAILED [ 55%] test/test_assignors.py::test_reassignment_with_random_subscriptions_and_changes[56-11-22] FAILED [ 55%] test/test_assignors.py::test_reassignment_with_random_subscriptions_and_changes[57-10-35] FAILED [ 55%] test/test_assignors.py::test_reassignment_with_random_subscriptions_and_changes[58-18-25] FAILED [ 55%] test/test_assignors.py::test_reassignment_with_random_subscriptions_and_changes[59-20-30] FAILED [ 56%] test/test_assignors.py::test_reassignment_with_random_subscriptions_and_changes[60-12-25] FAILED [ 56%] test/test_assignors.py::test_reassignment_with_random_subscriptions_and_changes[61-15-36] FAILED [ 56%] test/test_assignors.py::test_reassignment_with_random_subscriptions_and_changes[62-12-28] FAILED [ 56%] test/test_assignors.py::test_reassignment_with_random_subscriptions_and_changes[63-19-24] FAILED [ 56%] test/test_assignors.py::test_reassignment_with_random_subscriptions_and_changes[64-20-22] FAILED [ 56%] test/test_assignors.py::test_reassignment_with_random_subscriptions_and_changes[65-19-33] FAILED [ 56%] test/test_assignors.py::test_reassignment_with_random_subscriptions_and_changes[66-10-20] FAILED [ 56%] test/test_assignors.py::test_reassignment_with_random_subscriptions_and_changes[67-18-39] FAILED [ 56%] test/test_assignors.py::test_reassignment_with_random_subscriptions_and_changes[68-11-31] FAILED [ 56%] test/test_assignors.py::test_reassignment_with_random_subscriptions_and_changes[69-19-23] FAILED [ 56%] test/test_assignors.py::test_reassignment_with_random_subscriptions_and_changes[70-12-30] FAILED [ 56%] test/test_assignors.py::test_reassignment_with_random_subscriptions_and_changes[71-16-28] FAILED [ 57%] test/test_assignors.py::test_reassignment_with_random_subscriptions_and_changes[72-17-28] FAILED [ 57%] test/test_assignors.py::test_reassignment_with_random_subscriptions_and_changes[73-12-33] FAILED [ 57%] test/test_assignors.py::test_reassignment_with_random_subscriptions_and_changes[74-18-36] FAILED [ 57%] test/test_assignors.py::test_reassignment_with_random_subscriptions_and_changes[75-18-37] FAILED [ 57%] test/test_assignors.py::test_reassignment_with_random_subscriptions_and_changes[76-11-27] FAILED [ 57%] test/test_assignors.py::test_reassignment_with_random_subscriptions_and_changes[77-15-29] FAILED [ 57%] test/test_assignors.py::test_reassignment_with_random_subscriptions_and_changes[78-11-37] FAILED [ 57%] test/test_assignors.py::test_reassignment_with_random_subscriptions_and_changes[79-18-24] FAILED [ 57%] test/test_assignors.py::test_reassignment_with_random_subscriptions_and_changes[80-19-40] FAILED [ 57%] test/test_assignors.py::test_reassignment_with_random_subscriptions_and_changes[81-20-36] FAILED [ 57%] test/test_assignors.py::test_reassignment_with_random_subscriptions_and_changes[82-20-22] FAILED [ 57%] test/test_assignors.py::test_reassignment_with_random_subscriptions_and_changes[83-15-28] FAILED [ 57%] test/test_assignors.py::test_reassignment_with_random_subscriptions_and_changes[84-16-39] FAILED [ 58%] test/test_assignors.py::test_reassignment_with_random_subscriptions_and_changes[85-10-40] FAILED [ 58%] test/test_assignors.py::test_reassignment_with_random_subscriptions_and_changes[86-15-39] FAILED [ 58%] test/test_assignors.py::test_reassignment_with_random_subscriptions_and_changes[87-11-39] FAILED [ 58%] test/test_assignors.py::test_reassignment_with_random_subscriptions_and_changes[88-20-23] FAILED [ 58%] test/test_assignors.py::test_reassignment_with_random_subscriptions_and_changes[89-10-37] FAILED [ 58%] test/test_assignors.py::test_reassignment_with_random_subscriptions_and_changes[90-12-21] FAILED [ 58%] test/test_assignors.py::test_reassignment_with_random_subscriptions_and_changes[91-13-21] FAILED [ 58%] test/test_assignors.py::test_reassignment_with_random_subscriptions_and_changes[92-19-38] FAILED [ 58%] test/test_assignors.py::test_reassignment_with_random_subscriptions_and_changes[93-17-34] FAILED [ 58%] test/test_assignors.py::test_reassignment_with_random_subscriptions_and_changes[94-12-30] FAILED [ 58%] test/test_assignors.py::test_reassignment_with_random_subscriptions_and_changes[95-11-24] FAILED [ 58%] test/test_assignors.py::test_reassignment_with_random_subscriptions_and_changes[96-12-28] FAILED [ 59%] test/test_assignors.py::test_reassignment_with_random_subscriptions_and_changes[97-20-31] FAILED [ 59%] test/test_assignors.py::test_reassignment_with_random_subscriptions_and_changes[98-10-22] FAILED [ 59%] test/test_assignors.py::test_reassignment_with_random_subscriptions_and_changes[99-18-24] FAILED [ 59%] test/test_assignors.py::test_assignment_with_multiple_generations1 PASSED [ 59%] test/test_assignors.py::test_assignment_with_multiple_generations2 PASSED [ 59%] test/test_assignors.py::test_assignment_with_conflicting_previous_generations[0] PASSED [ 59%] test/test_assignors.py::test_assignment_with_conflicting_previous_generations[1] PASSED [ 59%] test/test_assignors.py::test_assignment_with_conflicting_previous_generations[2] PASSED [ 59%] test/test_assignors.py::test_assignment_with_conflicting_previous_generations[3] PASSED [ 59%] test/test_assignors.py::test_assignment_with_conflicting_previous_generations[4] PASSED [ 59%] test/test_assignors.py::test_assignment_with_conflicting_previous_generations[5] PASSED [ 59%] test/test_assignors.py::test_assignment_with_conflicting_previous_generations[6] PASSED [ 60%] test/test_assignors.py::test_assignment_with_conflicting_previous_generations[7] PASSED [ 60%] test/test_assignors.py::test_assignment_with_conflicting_previous_generations[8] PASSED [ 60%] test/test_assignors.py::test_assignment_with_conflicting_previous_generations[9] PASSED [ 60%] test/test_assignors.py::test_assignment_with_conflicting_previous_generations[10] PASSED [ 60%] test/test_assignors.py::test_assignment_with_conflicting_previous_generations[11] PASSED [ 60%] test/test_assignors.py::test_assignment_with_conflicting_previous_generations[12] PASSED [ 60%] test/test_assignors.py::test_assignment_with_conflicting_previous_generations[13] PASSED [ 60%] test/test_assignors.py::test_assignment_with_conflicting_previous_generations[14] PASSED [ 60%] test/test_assignors.py::test_assignment_with_conflicting_previous_generations[15] PASSED [ 60%] test/test_assignors.py::test_assignment_with_conflicting_previous_generations[16] PASSED [ 60%] test/test_assignors.py::test_assignment_with_conflicting_previous_generations[17] PASSED [ 60%] test/test_assignors.py::test_assignment_with_conflicting_previous_generations[18] PASSED [ 60%] test/test_assignors.py::test_assignment_with_conflicting_previous_generations[19] PASSED [ 61%] test/test_assignors.py::test_assignment_with_conflicting_previous_generations[20] PASSED [ 61%] test/test_assignors.py::test_assignment_with_conflicting_previous_generations[21] PASSED [ 61%] test/test_assignors.py::test_assignment_with_conflicting_previous_generations[22] PASSED [ 61%] test/test_assignors.py::test_assignment_with_conflicting_previous_generations[23] PASSED [ 61%] test/test_assignors.py::test_assignment_with_conflicting_previous_generations[24] PASSED [ 61%] test/test_assignors.py::test_assignment_with_conflicting_previous_generations[25] PASSED [ 61%] test/test_assignors.py::test_assignment_with_conflicting_previous_generations[26] PASSED [ 61%] test/test_assignors.py::test_assignment_with_conflicting_previous_generations[27] PASSED [ 61%] test/test_assignors.py::test_assignment_with_conflicting_previous_generations[28] PASSED [ 61%] test/test_assignors.py::test_assignment_with_conflicting_previous_generations[29] PASSED [ 61%] test/test_assignors.py::test_assignment_with_conflicting_previous_generations[30] PASSED [ 61%] test/test_assignors.py::test_assignment_with_conflicting_previous_generations[31] PASSED [ 62%] test/test_assignors.py::test_assignment_with_conflicting_previous_generations[32] PASSED [ 62%] test/test_assignors.py::test_assignment_with_conflicting_previous_generations[33] PASSED [ 62%] test/test_assignors.py::test_assignment_with_conflicting_previous_generations[34] PASSED [ 62%] test/test_assignors.py::test_assignment_with_conflicting_previous_generations[35] PASSED [ 62%] test/test_assignors.py::test_assignment_with_conflicting_previous_generations[36] PASSED [ 62%] test/test_assignors.py::test_assignment_with_conflicting_previous_generations[37] PASSED [ 62%] test/test_assignors.py::test_assignment_with_conflicting_previous_generations[38] PASSED [ 62%] test/test_assignors.py::test_assignment_with_conflicting_previous_generations[39] PASSED [ 62%] test/test_assignors.py::test_assignment_with_conflicting_previous_generations[40] PASSED [ 62%] test/test_assignors.py::test_assignment_with_conflicting_previous_generations[41] PASSED [ 62%] test/test_assignors.py::test_assignment_with_conflicting_previous_generations[42] PASSED [ 62%] test/test_assignors.py::test_assignment_with_conflicting_previous_generations[43] PASSED [ 62%] test/test_assignors.py::test_assignment_with_conflicting_previous_generations[44] PASSED [ 63%] test/test_assignors.py::test_assignment_with_conflicting_previous_generations[45] PASSED [ 63%] test/test_assignors.py::test_assignment_with_conflicting_previous_generations[46] PASSED [ 63%] test/test_assignors.py::test_assignment_with_conflicting_previous_generations[47] PASSED [ 63%] test/test_assignors.py::test_assignment_with_conflicting_previous_generations[48] PASSED [ 63%] test/test_assignors.py::test_assignment_with_conflicting_previous_generations[49] PASSED [ 63%] test/test_client_async.py::test_bootstrap PASSED [ 63%] test/test_client_async.py::test_can_connect PASSED [ 63%] test/test_client_async.py::test_maybe_connect PASSED [ 63%] test/test_client_async.py::test_conn_state_change PASSED [ 63%] test/test_client_async.py::test_ready PASSED [ 63%] test/test_client_async.py::test_is_ready PASSED [ 63%] test/test_client_async.py::test_close PASSED [ 64%] test/test_client_async.py::test_is_disconnected PASSED [ 64%] test/test_client_async.py::test_send PASSED [ 64%] test/test_client_async.py::test_poll PASSED [ 64%] test/test_client_async.py::test__poll PASSED [ 64%] test/test_client_async.py::test_in_flight_request_count PASSED [ 64%] test/test_client_async.py::test_least_loaded_node PASSED [ 64%] test/test_client_async.py::test_set_topics PASSED [ 64%] test/test_client_async.py::test_maybe_refresh_metadata_ttl PASSED [ 64%] test/test_client_async.py::test_maybe_refresh_metadata_backoff PASSED [ 64%] test/test_client_async.py::test_maybe_refresh_metadata_in_progress PASSED [ 64%] test/test_client_async.py::test_maybe_refresh_metadata_update PASSED [ 64%] test/test_client_async.py::test_maybe_refresh_metadata_cant_send PASSED [ 64%] test/test_client_async.py::test_schedule PASSED [ 65%] test/test_client_async.py::test_unschedule PASSED [ 65%] test/test_client_async.py::test_idle_connection_manager PASSED [ 65%] test/test_cluster.py::test_empty_broker_list PASSED [ 65%] test/test_codec.py::test_gzip PASSED [ 65%] test/test_codec.py::test_snappy PASSED [ 65%] test/test_codec.py::test_snappy_detect_xerial PASSED [ 65%] test/test_codec.py::test_snappy_decode_xerial PASSED [ 65%] test/test_codec.py::test_snappy_encode_xerial PASSED [ 65%] test/test_codec.py::test_lz4 PASSED [ 65%] test/test_codec.py::test_lz4_old PASSED [ 65%] test/test_codec.py::test_lz4_incremental PASSED [ 65%] test/test_codec.py::test_zstd SKIPPED (Zstd not available) [ 66%] test/test_conn.py::test_connect[states0] PASSED [ 66%] test/test_conn.py::test_connect[states1] PASSED [ 66%] test/test_conn.py::test_connect[states2] PASSED [ 66%] test/test_conn.py::test_connect[states3] PASSED [ 66%] test/test_conn.py::test_connect[states4] PASSED [ 66%] test/test_conn.py::test_connect_timeout PASSED [ 66%] test/test_conn.py::test_blacked_out PASSED [ 66%] test/test_conn.py::test_connection_delay PASSED [ 66%] test/test_conn.py::test_connected PASSED [ 66%] test/test_conn.py::test_connecting PASSED [ 66%] test/test_conn.py::test_send_disconnected PASSED [ 66%] test/test_conn.py::test_send_connecting PASSED [ 66%] test/test_conn.py::test_send_max_ifr PASSED [ 67%] test/test_conn.py::test_send_no_response PASSED [ 67%] test/test_conn.py::test_send_response PASSED [ 67%] test/test_conn.py::test_send_error PASSED [ 67%] test/test_conn.py::test_can_send_more PASSED [ 67%] test/test_conn.py::test_recv_disconnected PASSED [ 67%] test/test_conn.py::test_recv PASSED [ 67%] test/test_conn.py::test_close PASSED [ 67%] test/test_conn.py::test_collect_hosts__happy_path PASSED [ 67%] test/test_conn.py::test_collect_hosts__ipv6 PASSED [ 67%] test/test_conn.py::test_collect_hosts__string_list PASSED [ 67%] test/test_conn.py::test_collect_hosts__with_spaces PASSED [ 67%] test/test_conn.py::test_lookup_on_connect PASSED [ 68%] test/test_conn.py::test_relookup_on_failure PASSED [ 68%] test/test_conn.py::test_requests_timed_out PASSED [ 68%] test/test_consumer.py::TestKafkaConsumer::test_session_timeout_larger_than_request_timeout_raises PASSED [ 68%] test/test_consumer.py::TestKafkaConsumer::test_fetch_max_wait_larger_than_request_timeout_raises PASSED [ 68%] test/test_consumer.py::TestKafkaConsumer::test_request_timeout_larger_than_connections_max_idle_ms_raises PASSED [ 68%] test/test_consumer.py::TestKafkaConsumer::test_subscription_copy PASSED [ 68%] test/test_consumer_group.py::test_consumer SKIPPED (No KAFKA_VERSION...) [ 68%] test/test_consumer_group.py::test_consumer_topics SKIPPED (No KAFKA_...) [ 68%] test/test_consumer_group.py::test_group SKIPPED (Unsupported Kafka V...) [ 68%] test/test_consumer_group.py::test_paused SKIPPED (No KAFKA_VERSION set) [ 68%] test/test_consumer_group.py::test_heartbeat_thread SKIPPED (Unsuppor...) [ 68%] test/test_consumer_integration.py::test_kafka_version_infer SKIPPED [ 68%] test/test_consumer_integration.py::test_kafka_consumer SKIPPED (No K...) [ 69%] test/test_consumer_integration.py::test_kafka_consumer_unsupported_encoding SKIPPED [ 69%] test/test_consumer_integration.py::test_kafka_consumer__blocking SKIPPED [ 69%] test/test_consumer_integration.py::test_kafka_consumer__offset_commit_resume SKIPPED [ 69%] test/test_consumer_integration.py::test_kafka_consumer_max_bytes_simple SKIPPED [ 69%] test/test_consumer_integration.py::test_kafka_consumer_max_bytes_one_msg SKIPPED [ 69%] test/test_consumer_integration.py::test_kafka_consumer_offsets_for_time SKIPPED [ 69%] test/test_consumer_integration.py::test_kafka_consumer_offsets_search_many_partitions SKIPPED [ 69%] test/test_consumer_integration.py::test_kafka_consumer_offsets_for_time_old SKIPPED [ 69%] test/test_consumer_integration.py::test_kafka_consumer_offsets_for_times_errors SKIPPED [ 69%] test/test_coordinator.py::test_init PASSED [ 69%] test/test_coordinator.py::test_autocommit_enable_api_version[api_version0] PASSED [ 69%] test/test_coordinator.py::test_autocommit_enable_api_version[api_version1] PASSED [ 70%] test/test_coordinator.py::test_autocommit_enable_api_version[api_version2] PASSED [ 70%] test/test_coordinator.py::test_autocommit_enable_api_version[api_version3] PASSED [ 70%] test/test_coordinator.py::test_protocol_type PASSED [ 70%] test/test_coordinator.py::test_group_protocols PASSED [ 70%] test/test_coordinator.py::test_pattern_subscription[api_version0] PASSED [ 70%] test/test_coordinator.py::test_pattern_subscription[api_version1] PASSED [ 70%] test/test_coordinator.py::test_pattern_subscription[api_version2] PASSED [ 70%] test/test_coordinator.py::test_pattern_subscription[api_version3] PASSED [ 70%] test/test_coordinator.py::test_lookup_assignor PASSED [ 70%] test/test_coordinator.py::test_join_complete PASSED [ 70%] test/test_coordinator.py::test_join_complete_with_sticky_assignor PASSED [ 70%] test/test_coordinator.py::test_subscription_listener PASSED [ 71%] test/test_coordinator.py::test_subscription_listener_failure PASSED [ 71%] test/test_coordinator.py::test_perform_assignment PASSED [ 71%] test/test_coordinator.py::test_on_join_prepare PASSED [ 71%] test/test_coordinator.py::test_need_rejoin PASSED [ 71%] test/test_coordinator.py::test_refresh_committed_offsets_if_needed PASSED [ 71%] test/test_coordinator.py::test_fetch_committed_offsets PASSED [ 71%] test/test_coordinator.py::test_close PASSED [ 71%] test/test_coordinator.py::test_commit_offsets_async PASSED [ 71%] test/test_coordinator.py::test_commit_offsets_sync PASSED [ 71%] test/test_coordinator.py::test_maybe_auto_commit_offsets_sync[api_version0-foobar-True-None-False-False-True-False] PASSED [ 71%] test/test_coordinator.py::test_maybe_auto_commit_offsets_sync[api_version1-foobar-True-None-True-True-False-False] PASSED [ 71%] test/test_coordinator.py::test_maybe_auto_commit_offsets_sync[api_version2-foobar-True-None-True-True-False-False] PASSED [ 71%] test/test_coordinator.py::test_maybe_auto_commit_offsets_sync[api_version3-foobar-False-None-False-False-False-False] PASSED [ 72%] test/test_coordinator.py::test_maybe_auto_commit_offsets_sync[api_version4-foobar-True-error4-True-True-True-False] PASSED [ 72%] test/test_coordinator.py::test_maybe_auto_commit_offsets_sync[api_version5-foobar-True-error5-True-True-True-False] PASSED [ 72%] test/test_coordinator.py::test_maybe_auto_commit_offsets_sync[api_version6-foobar-True-error6-True-True-True-False] PASSED [ 72%] test/test_coordinator.py::test_maybe_auto_commit_offsets_sync[api_version7-foobar-True-error7-True-True-False-True] PASSED [ 72%] test/test_coordinator.py::test_maybe_auto_commit_offsets_sync[api_version8-foobar-True-None-True-True-False-False] PASSED [ 72%] test/test_coordinator.py::test_maybe_auto_commit_offsets_sync[api_version9-None-True-None-False-False-True-False] PASSED [ 72%] test/test_coordinator.py::test_send_offset_commit_request_fail PASSED [ 72%] test/test_coordinator.py::test_send_offset_commit_request_versions[api_version0-OffsetCommitRequest_v0] PASSED [ 72%] test/test_coordinator.py::test_send_offset_commit_request_versions[api_version1-OffsetCommitRequest_v1] PASSED [ 72%] test/test_coordinator.py::test_send_offset_commit_request_versions[api_version2-OffsetCommitRequest_v2] PASSED [ 72%] test/test_coordinator.py::test_send_offset_commit_request_failure PASSED [ 72%] test/test_coordinator.py::test_send_offset_commit_request_success PASSED [ 73%] test/test_coordinator.py::test_handle_offset_commit_response[response0-GroupAuthorizationFailedError-False] PASSED [ 73%] test/test_coordinator.py::test_handle_offset_commit_response[response1-OffsetMetadataTooLargeError-False] PASSED [ 73%] test/test_coordinator.py::test_handle_offset_commit_response[response2-InvalidCommitOffsetSizeError-False] PASSED [ 73%] test/test_coordinator.py::test_handle_offset_commit_response[response3-GroupLoadInProgressError-False] PASSED [ 73%] test/test_coordinator.py::test_handle_offset_commit_response[response4-GroupCoordinatorNotAvailableError-True] PASSED [ 73%] test/test_coordinator.py::test_handle_offset_commit_response[response5-NotCoordinatorForGroupError-True] PASSED [ 73%] test/test_coordinator.py::test_handle_offset_commit_response[response6-RequestTimedOutError-True] PASSED [ 73%] test/test_coordinator.py::test_handle_offset_commit_response[response7-CommitFailedError-False] PASSED [ 73%] test/test_coordinator.py::test_handle_offset_commit_response[response8-CommitFailedError-False] PASSED [ 73%] test/test_coordinator.py::test_handle_offset_commit_response[response9-CommitFailedError-False] PASSED [ 73%] test/test_coordinator.py::test_handle_offset_commit_response[response10-InvalidTopicError-False] PASSED [ 73%] test/test_coordinator.py::test_handle_offset_commit_response[response11-TopicAuthorizationFailedError-False] PASSED [ 73%] test/test_coordinator.py::test_send_offset_fetch_request_fail PASSED [ 74%] test/test_coordinator.py::test_send_offset_fetch_request_versions[api_version0-OffsetFetchRequest_v0] PASSED [ 74%] test/test_coordinator.py::test_send_offset_fetch_request_versions[api_version1-OffsetFetchRequest_v1] PASSED [ 74%] test/test_coordinator.py::test_send_offset_fetch_request_versions[api_version2-OffsetFetchRequest_v1] PASSED [ 74%] test/test_coordinator.py::test_send_offset_fetch_request_failure PASSED [ 74%] test/test_coordinator.py::test_send_offset_fetch_request_success PASSED [ 74%] test/test_coordinator.py::test_handle_offset_fetch_response[response0-GroupLoadInProgressError-False] PASSED [ 74%] test/test_coordinator.py::test_handle_offset_fetch_response[response1-NotCoordinatorForGroupError-True] PASSED [ 74%] test/test_coordinator.py::test_handle_offset_fetch_response[response2-UnknownMemberIdError-False] PASSED [ 74%] test/test_coordinator.py::test_handle_offset_fetch_response[response3-IllegalGenerationError-False] PASSED [ 74%] test/test_coordinator.py::test_handle_offset_fetch_response[response4-TopicAuthorizationFailedError-False] PASSED [ 74%] test/test_coordinator.py::test_handle_offset_fetch_response[response5-None-False] PASSED [ 74%] test/test_coordinator.py::test_heartbeat PASSED [ 75%] test/test_coordinator.py::test_lookup_coordinator_failure PASSED [ 75%] test/test_coordinator.py::test_ensure_active_group PASSED [ 75%] test/test_fetcher.py::test_send_fetches PASSED [ 75%] test/test_fetcher.py::test_create_fetch_requests[api_version0-3] PASSED [ 75%] test/test_fetcher.py::test_create_fetch_requests[api_version1-2] PASSED [ 75%] test/test_fetcher.py::test_create_fetch_requests[api_version2-1] PASSED [ 75%] test/test_fetcher.py::test_create_fetch_requests[api_version3-0] PASSED [ 75%] test/test_fetcher.py::test_update_fetch_positions PASSED [ 75%] test/test_fetcher.py::test__reset_offset PASSED [ 75%] test/test_fetcher.py::test__send_offset_requests PASSED [ 75%] test/test_fetcher.py::test__send_offset_requests_multiple_nodes PASSED [ 75%] test/test_fetcher.py::test__handle_offset_response PASSED [ 75%] test/test_fetcher.py::test_fetched_records PASSED [ 76%] test/test_fetcher.py::test__handle_fetch_response[fetch_request0-fetch_response0-1] PASSED [ 76%] test/test_fetcher.py::test__handle_fetch_response[fetch_request1-fetch_response1-2] PASSED [ 76%] test/test_fetcher.py::test__handle_fetch_response[fetch_request2-fetch_response2-1] PASSED [ 76%] test/test_fetcher.py::test__handle_fetch_response[fetch_request3-fetch_response3-1] PASSED [ 76%] test/test_fetcher.py::test__handle_fetch_response[fetch_request4-fetch_response4-1] PASSED [ 76%] test/test_fetcher.py::test__handle_fetch_response[fetch_request5-fetch_response5-1] PASSED [ 76%] test/test_fetcher.py::test__unpack_message_set PASSED [ 76%] test/test_fetcher.py::test__message_generator PASSED [ 76%] test/test_fetcher.py::test__parse_fetched_data PASSED [ 76%] test/test_fetcher.py::test__parse_fetched_data__paused PASSED [ 76%] test/test_fetcher.py::test__parse_fetched_data__stale_offset PASSED [ 76%] test/test_fetcher.py::test__parse_fetched_data__not_leader PASSED [ 77%] test/test_fetcher.py::test__parse_fetched_data__unknown_tp PASSED [ 77%] test/test_fetcher.py::test__parse_fetched_data__out_of_range PASSED [ 77%] test/test_fetcher.py::test_partition_records_offset PASSED [ 77%] test/test_fetcher.py::test_partition_records_empty PASSED [ 77%] test/test_fetcher.py::test_partition_records_no_fetch_offset PASSED [ 77%] test/test_fetcher.py::test_partition_records_compacted_offset PASSED [ 77%] test/test_metrics.py::test_MetricName PASSED [ 77%] test/test_metrics.py::test_simple_stats PASSED [ 77%] test/test_metrics.py::test_hierarchical_sensors PASSED [ 77%] test/test_metrics.py::test_bad_sensor_hierarchy PASSED [ 77%] test/test_metrics.py::test_remove_sensor PASSED [ 77%] test/test_metrics.py::test_remove_inactive_metrics PASSED [ 77%] test/test_metrics.py::test_remove_metric PASSED [ 78%] test/test_metrics.py::test_event_windowing PASSED [ 78%] test/test_metrics.py::test_time_windowing PASSED [ 78%] test/test_metrics.py::test_old_data_has_no_effect PASSED [ 78%] test/test_metrics.py::test_duplicate_MetricName PASSED [ 78%] test/test_metrics.py::test_Quotas PASSED [ 78%] test/test_metrics.py::test_Quotas_equality PASSED [ 78%] test/test_metrics.py::test_Percentiles PASSED [ 78%] test/test_metrics.py::test_rate_windowing PASSED [ 78%] test/test_metrics.py::test_reporter PASSED [ 78%] test/test_object_conversion.py::TestObjectConversion::test_get_item[Request] PASSED [ 78%] test/test_object_conversion.py::TestObjectConversion::test_get_item[Response] PASSED [ 78%] test/test_object_conversion.py::TestObjectConversion::test_with_empty_schema[Request] PASSED [ 79%] test/test_object_conversion.py::TestObjectConversion::test_with_empty_schema[Response] PASSED [ 79%] test/test_object_conversion.py::TestObjectConversion::test_with_basic_schema[Request] PASSED [ 79%] test/test_object_conversion.py::TestObjectConversion::test_with_basic_schema[Response] PASSED [ 79%] test/test_object_conversion.py::TestObjectConversion::test_with_basic_array_schema[Request] PASSED [ 79%] test/test_object_conversion.py::TestObjectConversion::test_with_basic_array_schema[Response] PASSED [ 79%] test/test_object_conversion.py::TestObjectConversion::test_with_complex_array_schema[Request] PASSED [ 79%] test/test_object_conversion.py::TestObjectConversion::test_with_complex_array_schema[Response] PASSED [ 79%] test/test_object_conversion.py::TestObjectConversion::test_with_array_and_other[Request] PASSED [ 79%] test/test_object_conversion.py::TestObjectConversion::test_with_array_and_other[Response] PASSED [ 79%] test/test_object_conversion.py::TestObjectConversion::test_with_nested_array[Request] PASSED [ 79%] test/test_object_conversion.py::TestObjectConversion::test_with_nested_array[Response] PASSED [ 79%] test/test_object_conversion.py::TestObjectConversion::test_with_complex_nested_array[Request] PASSED [ 80%] test/test_object_conversion.py::TestObjectConversion::test_with_complex_nested_array[Response] PASSED [ 80%] test/test_object_conversion.py::test_with_metadata_response PASSED [ 80%] test/test_package.py::TestPackage::test_top_level_namespace PASSED [ 80%] test/test_package.py::TestPackage::test_submodule_namespace PASSED [ 80%] test/test_partition_movements.py::test_empty_movements_are_sticky PASSED [ 80%] test/test_partition_movements.py::test_sticky_movements PASSED [ 80%] test/test_partition_movements.py::test_should_detect_non_sticky_assignment PASSED [ 80%] test/test_partitioner.py::test_default_partitioner PASSED [ 80%] test/test_partitioner.py::test_murmur2_java_compatibility[-681] PASSED [ 80%] test/test_partitioner.py::test_murmur2_java_compatibility[a-524] PASSED [ 80%] test/test_partitioner.py::test_murmur2_java_compatibility[ab-434] PASSED [ 80%] test/test_partitioner.py::test_murmur2_java_compatibility[abc-107] PASSED [ 80%] test/test_partitioner.py::test_murmur2_java_compatibility[123456789-566] PASSED [ 81%] test/test_partitioner.py::test_murmur2_java_compatibility[\x00 -742] PASSED [ 81%] test/test_partitioner.py::test_murmur2_not_ascii PASSED [ 81%] test/test_producer.py::test_buffer_pool PASSED [ 81%] test/test_producer.py::test_end_to_end[None] SKIPPED (No KAFKA_VERSI...) [ 81%] test/test_producer.py::test_end_to_end[gzip] SKIPPED (No KAFKA_VERSI...) [ 81%] test/test_producer.py::test_end_to_end[snappy] SKIPPED (No KAFKA_VER...) [ 81%] test/test_producer.py::test_end_to_end[lz4] SKIPPED (No KAFKA_VERSIO...) [ 81%] test/test_producer.py::test_end_to_end[zstd] SKIPPED (No KAFKA_VERSI...) [ 81%] test/test_producer.py::test_kafka_producer_gc_cleanup PASSED [ 81%] test/test_producer.py::test_kafka_producer_proper_record_metadata[None] SKIPPED [ 81%] test/test_producer.py::test_kafka_producer_proper_record_metadata[gzip] SKIPPED [ 81%] test/test_producer.py::test_kafka_producer_proper_record_metadata[snappy] SKIPPED [ 82%] test/test_producer.py::test_kafka_producer_proper_record_metadata[lz4] SKIPPED [ 82%] test/test_producer.py::test_kafka_producer_proper_record_metadata[zstd] SKIPPED [ 82%] test/test_protocol.py::test_create_message PASSED [ 82%] test/test_protocol.py::test_encode_message_v0 PASSED [ 82%] test/test_protocol.py::test_encode_message_v1 PASSED [ 82%] test/test_protocol.py::test_decode_message PASSED [ 82%] test/test_protocol.py::test_decode_message_validate_crc PASSED [ 82%] test/test_protocol.py::test_encode_message_set PASSED [ 82%] test/test_protocol.py::test_decode_message_set PASSED [ 82%] test/test_protocol.py::test_encode_message_header PASSED [ 82%] test/test_protocol.py::test_decode_message_set_partial PASSED [ 82%] test/test_protocol.py::test_decode_fetch_response_partial PASSED [ 82%] test/test_protocol.py::test_struct_unrecognized_kwargs PASSED [ 83%] test/test_protocol.py::test_struct_missing_kwargs PASSED [ 83%] test/test_sasl_integration.py::test_admin[PLAIN] SKIPPED (Requires K...) [ 83%] test/test_sasl_integration.py::test_admin[SCRAM-SHA-256] SKIPPED (Re...) [ 83%] test/test_sasl_integration.py::test_admin[SCRAM-SHA-512] SKIPPED (Re...) [ 83%] test/test_sasl_integration.py::test_produce_and_consume[PLAIN] SKIPPED [ 83%] test/test_sasl_integration.py::test_produce_and_consume[SCRAM-SHA-256] SKIPPED [ 83%] test/test_sasl_integration.py::test_produce_and_consume[SCRAM-SHA-512] SKIPPED [ 83%] test/test_sasl_integration.py::test_client[PLAIN] SKIPPED (Requires ...) [ 83%] test/test_sasl_integration.py::test_client[SCRAM-SHA-256] SKIPPED (R...) [ 83%] test/test_sasl_integration.py::test_client[SCRAM-SHA-512] SKIPPED (R...) [ 83%] test/test_sender.py::test_produce_request[api_version0-2] PASSED [ 83%] test/test_sender.py::test_produce_request[api_version1-1] PASSED [ 84%] test/test_sender.py::test_produce_request[api_version2-0] PASSED [ 84%] test/test_subscription_state.py::test_topic_name_validation[0-expectation0] PASSED [ 84%] test/test_subscription_state.py::test_topic_name_validation[None-expectation1] PASSED [ 84%] test/test_subscription_state.py::test_topic_name_validation[-expectation2] PASSED [ 84%] test/test_subscription_state.py::test_topic_name_validation[.-expectation3] PASSED [ 84%] test/test_subscription_state.py::test_topic_name_validation[..-expectation4] PASSED [ 84%] test/test_subscription_state.py::test_topic_name_validation[aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-expectation5] PASSED [ 84%] test/test_subscription_state.py::test_topic_name_validation[abc/123-expectation6] PASSED [ 84%] test/test_subscription_state.py::test_topic_name_validation[/abc/123-expectation7] PASSED [ 84%] test/test_subscription_state.py::test_topic_name_validation[/abc123-expectation8] PASSED [ 84%] test/test_subscription_state.py::test_topic_name_validation[name with space-expectation9] PASSED [ 84%] test/test_subscription_state.py::test_topic_name_validation[name*with*stars-expectation10] PASSED [ 84%] test/test_subscription_state.py::test_topic_name_validation[name+with+plus-expectation11] PASSED [ 85%] test/record/test_default_records.py::test_read_write_serde_v2[0] PASSED [ 85%] test/record/test_default_records.py::test_read_write_serde_v2[1] PASSED [ 85%] test/record/test_default_records.py::test_read_write_serde_v2[2] PASSED [ 85%] test/record/test_default_records.py::test_read_write_serde_v2[3] PASSED [ 85%] test/record/test_default_records.py::test_written_bytes_equals_size_in_bytes_v2 PASSED [ 85%] test/record/test_default_records.py::test_estimate_size_in_bytes_bigger_than_batch_v2 PASSED [ 85%] test/record/test_default_records.py::test_default_batch_builder_validates_arguments PASSED [ 85%] test/record/test_default_records.py::test_default_correct_metadata_response PASSED [ 85%] test/record/test_default_records.py::test_default_batch_size_limit PASSED [ 85%] test/record/test_default_records.py::test_unavailable_codec[0-1-gzip-has_gzip] PASSED [ 85%] test/record/test_default_records.py::test_unavailable_codec[0-2-snappy-has_snappy] PASSED [ 85%] test/record/test_default_records.py::test_unavailable_codec[0-3-lz4-has_lz4] PASSED [ 86%] test/record/test_default_records.py::test_unavailable_codec[1-1-gzip-has_gzip] PASSED [ 86%] test/record/test_default_records.py::test_unavailable_codec[1-2-snappy-has_snappy] PASSED [ 86%] test/record/test_default_records.py::test_unavailable_codec[1-3-lz4-has_lz4] PASSED [ 86%] test/record/test_legacy_records.py::test_read_write_serde_v0_v1_no_compression[0] PASSED [ 86%] test/record/test_legacy_records.py::test_read_write_serde_v0_v1_no_compression[1] PASSED [ 86%] test/record/test_legacy_records.py::test_read_write_serde_v0_v1_with_compression[0-1] PASSED [ 86%] test/record/test_legacy_records.py::test_read_write_serde_v0_v1_with_compression[0-2] PASSED [ 86%] test/record/test_legacy_records.py::test_read_write_serde_v0_v1_with_compression[0-3] PASSED [ 86%] test/record/test_legacy_records.py::test_read_write_serde_v0_v1_with_compression[1-1] PASSED [ 86%] test/record/test_legacy_records.py::test_read_write_serde_v0_v1_with_compression[1-2] PASSED [ 86%] test/record/test_legacy_records.py::test_read_write_serde_v0_v1_with_compression[1-3] PASSED [ 86%] test/record/test_legacy_records.py::test_written_bytes_equals_size_in_bytes[0] PASSED [ 86%] test/record/test_legacy_records.py::test_written_bytes_equals_size_in_bytes[1] PASSED [ 87%] test/record/test_legacy_records.py::test_estimate_size_in_bytes_bigger_than_batch[0] PASSED [ 87%] test/record/test_legacy_records.py::test_estimate_size_in_bytes_bigger_than_batch[1] PASSED [ 87%] test/record/test_legacy_records.py::test_legacy_batch_builder_validates_arguments[0] PASSED [ 87%] test/record/test_legacy_records.py::test_legacy_batch_builder_validates_arguments[1] PASSED [ 87%] test/record/test_legacy_records.py::test_legacy_correct_metadata_response[0] PASSED [ 87%] test/record/test_legacy_records.py::test_legacy_correct_metadata_response[1] PASSED [ 87%] test/record/test_legacy_records.py::test_legacy_batch_size_limit[0] PASSED [ 87%] test/record/test_legacy_records.py::test_legacy_batch_size_limit[1] PASSED [ 87%] test/record/test_legacy_records.py::test_unavailable_codec[0-1-gzip-has_gzip] PASSED [ 87%] test/record/test_legacy_records.py::test_unavailable_codec[0-2-snappy-has_snappy] PASSED [ 87%] test/record/test_legacy_records.py::test_unavailable_codec[0-3-lz4-has_lz4] PASSED [ 87%] test/record/test_legacy_records.py::test_unavailable_codec[1-1-gzip-has_gzip] PASSED [ 88%] test/record/test_legacy_records.py::test_unavailable_codec[1-2-snappy-has_snappy] PASSED [ 88%] test/record/test_legacy_records.py::test_unavailable_codec[1-3-lz4-has_lz4] PASSED [ 88%] test/record/test_records.py::test_memory_records_v2 PASSED [ 88%] test/record/test_records.py::test_memory_records_v1 PASSED [ 88%] test/record/test_records.py::test_memory_records_v0 PASSED [ 88%] test/record/test_records.py::test_memory_records_corrupt PASSED [ 88%] test/record/test_records.py::test_memory_records_builder[0-0] PASSED [ 88%] test/record/test_records.py::test_memory_records_builder[0-1] PASSED [ 88%] test/record/test_records.py::test_memory_records_builder[0-2] PASSED [ 88%] test/record/test_records.py::test_memory_records_builder[0-3] PASSED [ 88%] test/record/test_records.py::test_memory_records_builder[1-0] PASSED [ 88%] test/record/test_records.py::test_memory_records_builder[1-1] PASSED [ 88%] test/record/test_records.py::test_memory_records_builder[1-2] PASSED [ 89%] test/record/test_records.py::test_memory_records_builder[1-3] PASSED [ 89%] test/record/test_records.py::test_memory_records_builder[2-0] PASSED [ 89%] test/record/test_records.py::test_memory_records_builder[2-1] PASSED [ 89%] test/record/test_records.py::test_memory_records_builder[2-2] PASSED [ 89%] test/record/test_records.py::test_memory_records_builder[2-3] PASSED [ 89%] test/record/test_records.py::test_memory_records_builder_full[0-0] PASSED [ 89%] test/record/test_records.py::test_memory_records_builder_full[0-1] PASSED [ 89%] test/record/test_records.py::test_memory_records_builder_full[0-2] PASSED [ 89%] test/record/test_records.py::test_memory_records_builder_full[0-3] PASSED [ 89%] test/record/test_records.py::test_memory_records_builder_full[1-0] PASSED [ 89%] test/record/test_records.py::test_memory_records_builder_full[1-1] PASSED [ 89%] test/record/test_records.py::test_memory_records_builder_full[1-2] PASSED [ 90%] test/record/test_records.py::test_memory_records_builder_full[1-3] PASSED [ 90%] test/record/test_records.py::test_memory_records_builder_full[2-0] PASSED [ 90%] test/record/test_records.py::test_memory_records_builder_full[2-1] PASSED [ 90%] test/record/test_records.py::test_memory_records_builder_full[2-2] PASSED [ 90%] test/record/test_records.py::test_memory_records_builder_full[2-3] PASSED [ 90%] test/record/test_util.py::test_encode_varint[\x00-0] PASSED [ 90%] test/record/test_util.py::test_encode_varint[\x01--1] PASSED [ 90%] test/record/test_util.py::test_encode_varint[\x02-1] PASSED [ 90%] test/record/test_util.py::test_encode_varint[~-63] PASSED [ 90%] test/record/test_util.py::test_encode_varint[\x7f--64] PASSED [ 90%] test/record/test_util.py::test_encode_varint[\x80\x01-64] PASSED [ 90%] test/record/test_util.py::test_encode_varint[\x81\x01--65] PASSED [ 91%] test/record/test_util.py::test_encode_varint[\xfe\x7f-8191] PASSED [ 91%] test/record/test_util.py::test_encode_varint[\xff\x7f--8192] PASSED [ 91%] test/record/test_util.py::test_encode_varint[\x80\x80\x01-8192] PASSED [ 91%] test/record/test_util.py::test_encode_varint[\x81\x80\x01--8193] PASSED [ 91%] test/record/test_util.py::test_encode_varint[\xfe\xff\x7f-1048575] PASSED [ 91%] test/record/test_util.py::test_encode_varint[\xff\xff\x7f--1048576] PASSED [ 91%] test/record/test_util.py::test_encode_varint[\x80\x80\x80\x01-1048576] PASSED [ 91%] test/record/test_util.py::test_encode_varint[\x81\x80\x80\x01--1048577] PASSED [ 91%] test/record/test_util.py::test_encode_varint[\xfe\xff\xff\x7f-134217727] PASSED [ 91%] test/record/test_util.py::test_encode_varint[\xff\xff\xff\x7f--134217728] PASSED [ 91%] test/record/test_util.py::test_encode_varint[\x80\x80\x80\x80\x01-134217728] PASSED [ 91%] test/record/test_util.py::test_encode_varint[\x81\x80\x80\x80\x01--134217729] PASSED [ 91%] test/record/test_util.py::test_encode_varint[\xfe\xff\xff\xff\x7f-17179869183] PASSED [ 92%] test/record/test_util.py::test_encode_varint[\xff\xff\xff\xff\x7f--17179869184] PASSED [ 92%] test/record/test_util.py::test_encode_varint[\x80\x80\x80\x80\x80\x01-17179869184] PASSED [ 92%] test/record/test_util.py::test_encode_varint[\x81\x80\x80\x80\x80\x01--17179869185] PASSED [ 92%] test/record/test_util.py::test_encode_varint[\xfe\xff\xff\xff\xff\x7f-2199023255551] PASSED [ 92%] test/record/test_util.py::test_encode_varint[\xff\xff\xff\xff\xff\x7f--2199023255552] PASSED [ 92%] test/record/test_util.py::test_encode_varint[\x80\x80\x80\x80\x80\x80\x01-2199023255552] PASSED [ 92%] test/record/test_util.py::test_encode_varint[\x81\x80\x80\x80\x80\x80\x01--2199023255553] PASSED [ 92%] test/record/test_util.py::test_encode_varint[\xfe\xff\xff\xff\xff\xff\x7f-281474976710655] PASSED [ 92%] test/record/test_util.py::test_encode_varint[\xff\xff\xff\xff\xff\xff\x7f--281474976710656] PASSED [ 92%] test/record/test_util.py::test_encode_varint[\x80\x80\x80\x80\x80\x80\x80\x01-281474976710656] PASSED [ 92%] test/record/test_util.py::test_encode_varint[\x81\x80\x80\x80\x80\x80\x80\x01--281474976710657] PASSED [ 92%] test/record/test_util.py::test_encode_varint[\xfe\xff\xff\xff\xff\xff\xff\x7f-36028797018963967] PASSED [ 93%] test/record/test_util.py::test_encode_varint[\xff\xff\xff\xff\xff\xff\xff\x7f--36028797018963968] PASSED [ 93%] test/record/test_util.py::test_encode_varint[\x80\x80\x80\x80\x80\x80\x80\x80\x01-36028797018963968] PASSED [ 93%] test/record/test_util.py::test_encode_varint[\x81\x80\x80\x80\x80\x80\x80\x80\x01--36028797018963969] PASSED [ 93%] test/record/test_util.py::test_encode_varint[\xfe\xff\xff\xff\xff\xff\xff\xff\x7f-4611686018427387903] PASSED [ 93%] test/record/test_util.py::test_encode_varint[\xff\xff\xff\xff\xff\xff\xff\xff\x7f--4611686018427387904] PASSED [ 93%] test/record/test_util.py::test_encode_varint[\x80\x80\x80\x80\x80\x80\x80\x80\x80\x01-4611686018427387904] PASSED [ 93%] test/record/test_util.py::test_encode_varint[\x81\x80\x80\x80\x80\x80\x80\x80\x80\x01--4611686018427387905] PASSED [ 93%] test/record/test_util.py::test_decode_varint[\x00-0] PASSED [ 93%] test/record/test_util.py::test_decode_varint[\x01--1] PASSED [ 93%] test/record/test_util.py::test_decode_varint[\x02-1] PASSED [ 93%] test/record/test_util.py::test_decode_varint[~-63] PASSED [ 93%] test/record/test_util.py::test_decode_varint[\x7f--64] PASSED [ 93%] test/record/test_util.py::test_decode_varint[\x80\x01-64] PASSED [ 94%] test/record/test_util.py::test_decode_varint[\x81\x01--65] PASSED [ 94%] test/record/test_util.py::test_decode_varint[\xfe\x7f-8191] PASSED [ 94%] test/record/test_util.py::test_decode_varint[\xff\x7f--8192] PASSED [ 94%] test/record/test_util.py::test_decode_varint[\x80\x80\x01-8192] PASSED [ 94%] test/record/test_util.py::test_decode_varint[\x81\x80\x01--8193] PASSED [ 94%] test/record/test_util.py::test_decode_varint[\xfe\xff\x7f-1048575] PASSED [ 94%] test/record/test_util.py::test_decode_varint[\xff\xff\x7f--1048576] PASSED [ 94%] test/record/test_util.py::test_decode_varint[\x80\x80\x80\x01-1048576] PASSED [ 94%] test/record/test_util.py::test_decode_varint[\x81\x80\x80\x01--1048577] PASSED [ 94%] test/record/test_util.py::test_decode_varint[\xfe\xff\xff\x7f-134217727] PASSED [ 94%] test/record/test_util.py::test_decode_varint[\xff\xff\xff\x7f--134217728] PASSED [ 94%] test/record/test_util.py::test_decode_varint[\x80\x80\x80\x80\x01-134217728] PASSED [ 95%] test/record/test_util.py::test_decode_varint[\x81\x80\x80\x80\x01--134217729] PASSED [ 95%] test/record/test_util.py::test_decode_varint[\xfe\xff\xff\xff\x7f-17179869183] PASSED [ 95%] test/record/test_util.py::test_decode_varint[\xff\xff\xff\xff\x7f--17179869184] PASSED [ 95%] test/record/test_util.py::test_decode_varint[\x80\x80\x80\x80\x80\x01-17179869184] PASSED [ 95%] test/record/test_util.py::test_decode_varint[\x81\x80\x80\x80\x80\x01--17179869185] PASSED [ 95%] test/record/test_util.py::test_decode_varint[\xfe\xff\xff\xff\xff\x7f-2199023255551] PASSED [ 95%] test/record/test_util.py::test_decode_varint[\xff\xff\xff\xff\xff\x7f--2199023255552] PASSED [ 95%] test/record/test_util.py::test_decode_varint[\x80\x80\x80\x80\x80\x80\x01-2199023255552] PASSED [ 95%] test/record/test_util.py::test_decode_varint[\x81\x80\x80\x80\x80\x80\x01--2199023255553] PASSED [ 95%] test/record/test_util.py::test_decode_varint[\xfe\xff\xff\xff\xff\xff\x7f-281474976710655] PASSED [ 95%] test/record/test_util.py::test_decode_varint[\xff\xff\xff\xff\xff\xff\x7f--281474976710656] PASSED [ 95%] test/record/test_util.py::test_decode_varint[\x80\x80\x80\x80\x80\x80\x80\x01-281474976710656] PASSED [ 95%] test/record/test_util.py::test_decode_varint[\x81\x80\x80\x80\x80\x80\x80\x01--281474976710657] PASSED [ 96%] test/record/test_util.py::test_decode_varint[\xfe\xff\xff\xff\xff\xff\xff\x7f-36028797018963967] PASSED [ 96%] test/record/test_util.py::test_decode_varint[\xff\xff\xff\xff\xff\xff\xff\x7f--36028797018963968] PASSED [ 96%] test/record/test_util.py::test_decode_varint[\x80\x80\x80\x80\x80\x80\x80\x80\x01-36028797018963968] PASSED [ 96%] test/record/test_util.py::test_decode_varint[\x81\x80\x80\x80\x80\x80\x80\x80\x01--36028797018963969] PASSED [ 96%] test/record/test_util.py::test_decode_varint[\xfe\xff\xff\xff\xff\xff\xff\xff\x7f-4611686018427387903] PASSED [ 96%] test/record/test_util.py::test_decode_varint[\xff\xff\xff\xff\xff\xff\xff\xff\x7f--4611686018427387904] PASSED [ 96%] test/record/test_util.py::test_decode_varint[\x80\x80\x80\x80\x80\x80\x80\x80\x80\x01-4611686018427387904] PASSED [ 96%] test/record/test_util.py::test_decode_varint[\x81\x80\x80\x80\x80\x80\x80\x80\x80\x01--4611686018427387905] PASSED [ 96%] test/record/test_util.py::test_size_of_varint[\x00-0] PASSED [ 96%] test/record/test_util.py::test_size_of_varint[\x01--1] PASSED [ 96%] test/record/test_util.py::test_size_of_varint[\x02-1] PASSED [ 96%] test/record/test_util.py::test_size_of_varint[~-63] PASSED [ 97%] test/record/test_util.py::test_size_of_varint[\x7f--64] PASSED [ 97%] test/record/test_util.py::test_size_of_varint[\x80\x01-64] PASSED [ 97%] test/record/test_util.py::test_size_of_varint[\x81\x01--65] PASSED [ 97%] test/record/test_util.py::test_size_of_varint[\xfe\x7f-8191] PASSED [ 97%] test/record/test_util.py::test_size_of_varint[\xff\x7f--8192] PASSED [ 97%] test/record/test_util.py::test_size_of_varint[\x80\x80\x01-8192] PASSED [ 97%] test/record/test_util.py::test_size_of_varint[\x81\x80\x01--8193] PASSED [ 97%] test/record/test_util.py::test_size_of_varint[\xfe\xff\x7f-1048575] PASSED [ 97%] test/record/test_util.py::test_size_of_varint[\xff\xff\x7f--1048576] PASSED [ 97%] test/record/test_util.py::test_size_of_varint[\x80\x80\x80\x01-1048576] PASSED [ 97%] test/record/test_util.py::test_size_of_varint[\x81\x80\x80\x01--1048577] PASSED [ 97%] test/record/test_util.py::test_size_of_varint[\xfe\xff\xff\x7f-134217727] PASSED [ 97%] test/record/test_util.py::test_size_of_varint[\xff\xff\xff\x7f--134217728] PASSED [ 98%] test/record/test_util.py::test_size_of_varint[\x80\x80\x80\x80\x01-134217728] PASSED [ 98%] test/record/test_util.py::test_size_of_varint[\x81\x80\x80\x80\x01--134217729] PASSED [ 98%] test/record/test_util.py::test_size_of_varint[\xfe\xff\xff\xff\x7f-17179869183] PASSED [ 98%] test/record/test_util.py::test_size_of_varint[\xff\xff\xff\xff\x7f--17179869184] PASSED [ 98%] test/record/test_util.py::test_size_of_varint[\x80\x80\x80\x80\x80\x01-17179869184] PASSED [ 98%] test/record/test_util.py::test_size_of_varint[\x81\x80\x80\x80\x80\x01--17179869185] PASSED [ 98%] test/record/test_util.py::test_size_of_varint[\xfe\xff\xff\xff\xff\x7f-2199023255551] PASSED [ 98%] test/record/test_util.py::test_size_of_varint[\xff\xff\xff\xff\xff\x7f--2199023255552] PASSED [ 98%] test/record/test_util.py::test_size_of_varint[\x80\x80\x80\x80\x80\x80\x01-2199023255552] PASSED [ 98%] test/record/test_util.py::test_size_of_varint[\x81\x80\x80\x80\x80\x80\x01--2199023255553] PASSED [ 98%] test/record/test_util.py::test_size_of_varint[\xfe\xff\xff\xff\xff\xff\x7f-281474976710655] PASSED [ 98%] test/record/test_util.py::test_size_of_varint[\xff\xff\xff\xff\xff\xff\x7f--281474976710656] PASSED [ 99%] test/record/test_util.py::test_size_of_varint[\x80\x80\x80\x80\x80\x80\x80\x01-281474976710656] PASSED [ 99%] test/record/test_util.py::test_size_of_varint[\x81\x80\x80\x80\x80\x80\x80\x01--281474976710657] PASSED [ 99%] test/record/test_util.py::test_size_of_varint[\xfe\xff\xff\xff\xff\xff\xff\x7f-36028797018963967] PASSED [ 99%] test/record/test_util.py::test_size_of_varint[\xff\xff\xff\xff\xff\xff\xff\x7f--36028797018963968] PASSED [ 99%] test/record/test_util.py::test_size_of_varint[\x80\x80\x80\x80\x80\x80\x80\x80\x01-36028797018963968] PASSED [ 99%] test/record/test_util.py::test_size_of_varint[\x81\x80\x80\x80\x80\x80\x80\x80\x01--36028797018963969] PASSED [ 99%] test/record/test_util.py::test_size_of_varint[\xfe\xff\xff\xff\xff\xff\xff\xff\x7f-4611686018427387903] PASSED [ 99%] test/record/test_util.py::test_size_of_varint[\xff\xff\xff\xff\xff\xff\xff\xff\x7f--4611686018427387904] PASSED [ 99%] test/record/test_util.py::test_size_of_varint[\x80\x80\x80\x80\x80\x80\x80\x80\x80\x01-4611686018427387904] PASSED [ 99%] test/record/test_util.py::test_size_of_varint[\x81\x80\x80\x80\x80\x80\x80\x80\x80\x01--4611686018427387905] PASSED [ 99%] test/record/test_util.py::test_crc32c[crc32c] PASSED [ 99%] test/record/test_util.py::test_crc32c[crc] PASSED [100%] =================================== FAILURES =================================== _______ test_reassignment_with_random_subscriptions_and_changes[0-16-38] _______ mocker = execution_number = 0, n_topics = 16, n_consumers = 38 @pytest.mark.parametrize( 'execution_number,n_topics,n_consumers', [(i, randint(10, 20), randint(20, 40)) for i in range(100)] ) def test_reassignment_with_random_subscriptions_and_changes(mocker, execution_number, n_topics, n_consumers): all_topics = set(['t{}'.format(i) for i in range(1, n_topics + 1)]) partitions = dict([(t, set(range(1, i + 1))) for i, t in enumerate(all_topics)]) cluster = create_cluster(mocker, topics=all_topics, topic_partitions_lambda=lambda t: partitions[t]) subscriptions = defaultdict(set) for i in range(n_consumers): > topics_sample = sample(all_topics, randint(1, len(all_topics) - 1)) test/test_assignors.py:664: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = population = {'t1', 't10', 't11', 't12', 't13', 't14', ...}, k = 8 def sample(self, population, k, *, counts=None): """Chooses k unique random elements from a population sequence. Returns a new list containing elements from the population while leaving the original population unchanged. The resulting list is in selection order so that all sub-slices will also be valid random samples. This allows raffle winners (the sample) to be partitioned into grand prize and second place winners (the subslices). Members of the population need not be hashable or unique. If the population contains repeats, then each occurrence is a possible selection in the sample. Repeated elements can be specified one at a time or with the optional counts parameter. For example: sample(['red', 'blue'], counts=[4, 2], k=5) is equivalent to: sample(['red', 'red', 'red', 'red', 'blue', 'blue'], k=5) To choose a sample from a range of integers, use range() for the population argument. This is especially fast and space efficient for sampling from a large population: sample(range(10000000), 60) """ # Sampling without replacement entails tracking either potential # selections (the pool) in a list or previous selections in a set. # When the number of selections is small compared to the # population, then tracking selections is efficient, requiring # only a small set and an occasional reselection. For # a larger number of selections, the pool tracking method is # preferred since the list takes less space than the # set and it doesn't suffer from frequent reselections. # The number of calls to _randbelow() is kept at or near k, the # theoretical minimum. This is important because running time # is dominated by _randbelow() and because it extracts the # least entropy from the underlying random number generators. # Memory requirements are kept to the smaller of a k-length # set or an n-length list. # There are other sampling algorithms that do not require # auxiliary memory, but they were rejected because they made # too many calls to _randbelow(), making them slower and # causing them to eat more entropy than necessary. if not isinstance(population, _Sequence): > raise TypeError("Population must be a sequence. " "For dicts or sets, use sorted(d).") E TypeError: Population must be a sequence. For dicts or sets, use sorted(d). /usr/lib64/python3.11/random.py:439: TypeError _______ test_reassignment_with_random_subscriptions_and_changes[1-16-25] _______ mocker = execution_number = 1, n_topics = 16, n_consumers = 25 @pytest.mark.parametrize( 'execution_number,n_topics,n_consumers', [(i, randint(10, 20), randint(20, 40)) for i in range(100)] ) def test_reassignment_with_random_subscriptions_and_changes(mocker, execution_number, n_topics, n_consumers): all_topics = set(['t{}'.format(i) for i in range(1, n_topics + 1)]) partitions = dict([(t, set(range(1, i + 1))) for i, t in enumerate(all_topics)]) cluster = create_cluster(mocker, topics=all_topics, topic_partitions_lambda=lambda t: partitions[t]) subscriptions = defaultdict(set) for i in range(n_consumers): > topics_sample = sample(all_topics, randint(1, len(all_topics) - 1)) test/test_assignors.py:664: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = population = {'t1', 't10', 't11', 't12', 't13', 't14', ...}, k = 4 def sample(self, population, k, *, counts=None): """Chooses k unique random elements from a population sequence. Returns a new list containing elements from the population while leaving the original population unchanged. The resulting list is in selection order so that all sub-slices will also be valid random samples. This allows raffle winners (the sample) to be partitioned into grand prize and second place winners (the subslices). Members of the population need not be hashable or unique. If the population contains repeats, then each occurrence is a possible selection in the sample. Repeated elements can be specified one at a time or with the optional counts parameter. For example: sample(['red', 'blue'], counts=[4, 2], k=5) is equivalent to: sample(['red', 'red', 'red', 'red', 'blue', 'blue'], k=5) To choose a sample from a range of integers, use range() for the population argument. This is especially fast and space efficient for sampling from a large population: sample(range(10000000), 60) """ # Sampling without replacement entails tracking either potential # selections (the pool) in a list or previous selections in a set. # When the number of selections is small compared to the # population, then tracking selections is efficient, requiring # only a small set and an occasional reselection. For # a larger number of selections, the pool tracking method is # preferred since the list takes less space than the # set and it doesn't suffer from frequent reselections. # The number of calls to _randbelow() is kept at or near k, the # theoretical minimum. This is important because running time # is dominated by _randbelow() and because it extracts the # least entropy from the underlying random number generators. # Memory requirements are kept to the smaller of a k-length # set or an n-length list. # There are other sampling algorithms that do not require # auxiliary memory, but they were rejected because they made # too many calls to _randbelow(), making them slower and # causing them to eat more entropy than necessary. if not isinstance(population, _Sequence): > raise TypeError("Population must be a sequence. " "For dicts or sets, use sorted(d).") E TypeError: Population must be a sequence. For dicts or sets, use sorted(d). /usr/lib64/python3.11/random.py:439: TypeError _______ test_reassignment_with_random_subscriptions_and_changes[2-10-21] _______ mocker = execution_number = 2, n_topics = 10, n_consumers = 21 @pytest.mark.parametrize( 'execution_number,n_topics,n_consumers', [(i, randint(10, 20), randint(20, 40)) for i in range(100)] ) def test_reassignment_with_random_subscriptions_and_changes(mocker, execution_number, n_topics, n_consumers): all_topics = set(['t{}'.format(i) for i in range(1, n_topics + 1)]) partitions = dict([(t, set(range(1, i + 1))) for i, t in enumerate(all_topics)]) cluster = create_cluster(mocker, topics=all_topics, topic_partitions_lambda=lambda t: partitions[t]) subscriptions = defaultdict(set) for i in range(n_consumers): > topics_sample = sample(all_topics, randint(1, len(all_topics) - 1)) test/test_assignors.py:664: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = population = {'t1', 't10', 't2', 't3', 't4', 't5', ...}, k = 1 def sample(self, population, k, *, counts=None): """Chooses k unique random elements from a population sequence. Returns a new list containing elements from the population while leaving the original population unchanged. The resulting list is in selection order so that all sub-slices will also be valid random samples. This allows raffle winners (the sample) to be partitioned into grand prize and second place winners (the subslices). Members of the population need not be hashable or unique. If the population contains repeats, then each occurrence is a possible selection in the sample. Repeated elements can be specified one at a time or with the optional counts parameter. For example: sample(['red', 'blue'], counts=[4, 2], k=5) is equivalent to: sample(['red', 'red', 'red', 'red', 'blue', 'blue'], k=5) To choose a sample from a range of integers, use range() for the population argument. This is especially fast and space efficient for sampling from a large population: sample(range(10000000), 60) """ # Sampling without replacement entails tracking either potential # selections (the pool) in a list or previous selections in a set. # When the number of selections is small compared to the # population, then tracking selections is efficient, requiring # only a small set and an occasional reselection. For # a larger number of selections, the pool tracking method is # preferred since the list takes less space than the # set and it doesn't suffer from frequent reselections. # The number of calls to _randbelow() is kept at or near k, the # theoretical minimum. This is important because running time # is dominated by _randbelow() and because it extracts the # least entropy from the underlying random number generators. # Memory requirements are kept to the smaller of a k-length # set or an n-length list. # There are other sampling algorithms that do not require # auxiliary memory, but they were rejected because they made # too many calls to _randbelow(), making them slower and # causing them to eat more entropy than necessary. if not isinstance(population, _Sequence): > raise TypeError("Population must be a sequence. " "For dicts or sets, use sorted(d).") E TypeError: Population must be a sequence. For dicts or sets, use sorted(d). /usr/lib64/python3.11/random.py:439: TypeError _______ test_reassignment_with_random_subscriptions_and_changes[3-18-36] _______ mocker = execution_number = 3, n_topics = 18, n_consumers = 36 @pytest.mark.parametrize( 'execution_number,n_topics,n_consumers', [(i, randint(10, 20), randint(20, 40)) for i in range(100)] ) def test_reassignment_with_random_subscriptions_and_changes(mocker, execution_number, n_topics, n_consumers): all_topics = set(['t{}'.format(i) for i in range(1, n_topics + 1)]) partitions = dict([(t, set(range(1, i + 1))) for i, t in enumerate(all_topics)]) cluster = create_cluster(mocker, topics=all_topics, topic_partitions_lambda=lambda t: partitions[t]) subscriptions = defaultdict(set) for i in range(n_consumers): > topics_sample = sample(all_topics, randint(1, len(all_topics) - 1)) test/test_assignors.py:664: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = population = {'t1', 't10', 't11', 't12', 't13', 't14', ...}, k = 15 def sample(self, population, k, *, counts=None): """Chooses k unique random elements from a population sequence. Returns a new list containing elements from the population while leaving the original population unchanged. The resulting list is in selection order so that all sub-slices will also be valid random samples. This allows raffle winners (the sample) to be partitioned into grand prize and second place winners (the subslices). Members of the population need not be hashable or unique. If the population contains repeats, then each occurrence is a possible selection in the sample. Repeated elements can be specified one at a time or with the optional counts parameter. For example: sample(['red', 'blue'], counts=[4, 2], k=5) is equivalent to: sample(['red', 'red', 'red', 'red', 'blue', 'blue'], k=5) To choose a sample from a range of integers, use range() for the population argument. This is especially fast and space efficient for sampling from a large population: sample(range(10000000), 60) """ # Sampling without replacement entails tracking either potential # selections (the pool) in a list or previous selections in a set. # When the number of selections is small compared to the # population, then tracking selections is efficient, requiring # only a small set and an occasional reselection. For # a larger number of selections, the pool tracking method is # preferred since the list takes less space than the # set and it doesn't suffer from frequent reselections. # The number of calls to _randbelow() is kept at or near k, the # theoretical minimum. This is important because running time # is dominated by _randbelow() and because it extracts the # least entropy from the underlying random number generators. # Memory requirements are kept to the smaller of a k-length # set or an n-length list. # There are other sampling algorithms that do not require # auxiliary memory, but they were rejected because they made # too many calls to _randbelow(), making them slower and # causing them to eat more entropy than necessary. if not isinstance(population, _Sequence): > raise TypeError("Population must be a sequence. " "For dicts or sets, use sorted(d).") E TypeError: Population must be a sequence. For dicts or sets, use sorted(d). /usr/lib64/python3.11/random.py:439: TypeError _______ test_reassignment_with_random_subscriptions_and_changes[4-13-34] _______ mocker = execution_number = 4, n_topics = 13, n_consumers = 34 @pytest.mark.parametrize( 'execution_number,n_topics,n_consumers', [(i, randint(10, 20), randint(20, 40)) for i in range(100)] ) def test_reassignment_with_random_subscriptions_and_changes(mocker, execution_number, n_topics, n_consumers): all_topics = set(['t{}'.format(i) for i in range(1, n_topics + 1)]) partitions = dict([(t, set(range(1, i + 1))) for i, t in enumerate(all_topics)]) cluster = create_cluster(mocker, topics=all_topics, topic_partitions_lambda=lambda t: partitions[t]) subscriptions = defaultdict(set) for i in range(n_consumers): > topics_sample = sample(all_topics, randint(1, len(all_topics) - 1)) test/test_assignors.py:664: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = population = {'t1', 't10', 't11', 't12', 't13', 't2', ...}, k = 2 def sample(self, population, k, *, counts=None): """Chooses k unique random elements from a population sequence. Returns a new list containing elements from the population while leaving the original population unchanged. The resulting list is in selection order so that all sub-slices will also be valid random samples. This allows raffle winners (the sample) to be partitioned into grand prize and second place winners (the subslices). Members of the population need not be hashable or unique. If the population contains repeats, then each occurrence is a possible selection in the sample. Repeated elements can be specified one at a time or with the optional counts parameter. For example: sample(['red', 'blue'], counts=[4, 2], k=5) is equivalent to: sample(['red', 'red', 'red', 'red', 'blue', 'blue'], k=5) To choose a sample from a range of integers, use range() for the population argument. This is especially fast and space efficient for sampling from a large population: sample(range(10000000), 60) """ # Sampling without replacement entails tracking either potential # selections (the pool) in a list or previous selections in a set. # When the number of selections is small compared to the # population, then tracking selections is efficient, requiring # only a small set and an occasional reselection. For # a larger number of selections, the pool tracking method is # preferred since the list takes less space than the # set and it doesn't suffer from frequent reselections. # The number of calls to _randbelow() is kept at or near k, the # theoretical minimum. This is important because running time # is dominated by _randbelow() and because it extracts the # least entropy from the underlying random number generators. # Memory requirements are kept to the smaller of a k-length # set or an n-length list. # There are other sampling algorithms that do not require # auxiliary memory, but they were rejected because they made # too many calls to _randbelow(), making them slower and # causing them to eat more entropy than necessary. if not isinstance(population, _Sequence): > raise TypeError("Population must be a sequence. " "For dicts or sets, use sorted(d).") E TypeError: Population must be a sequence. For dicts or sets, use sorted(d). /usr/lib64/python3.11/random.py:439: TypeError _______ test_reassignment_with_random_subscriptions_and_changes[5-11-27] _______ mocker = execution_number = 5, n_topics = 11, n_consumers = 27 @pytest.mark.parametrize( 'execution_number,n_topics,n_consumers', [(i, randint(10, 20), randint(20, 40)) for i in range(100)] ) def test_reassignment_with_random_subscriptions_and_changes(mocker, execution_number, n_topics, n_consumers): all_topics = set(['t{}'.format(i) for i in range(1, n_topics + 1)]) partitions = dict([(t, set(range(1, i + 1))) for i, t in enumerate(all_topics)]) cluster = create_cluster(mocker, topics=all_topics, topic_partitions_lambda=lambda t: partitions[t]) subscriptions = defaultdict(set) for i in range(n_consumers): > topics_sample = sample(all_topics, randint(1, len(all_topics) - 1)) test/test_assignors.py:664: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = population = {'t1', 't10', 't11', 't2', 't3', 't4', ...}, k = 9 def sample(self, population, k, *, counts=None): """Chooses k unique random elements from a population sequence. Returns a new list containing elements from the population while leaving the original population unchanged. The resulting list is in selection order so that all sub-slices will also be valid random samples. This allows raffle winners (the sample) to be partitioned into grand prize and second place winners (the subslices). Members of the population need not be hashable or unique. If the population contains repeats, then each occurrence is a possible selection in the sample. Repeated elements can be specified one at a time or with the optional counts parameter. For example: sample(['red', 'blue'], counts=[4, 2], k=5) is equivalent to: sample(['red', 'red', 'red', 'red', 'blue', 'blue'], k=5) To choose a sample from a range of integers, use range() for the population argument. This is especially fast and space efficient for sampling from a large population: sample(range(10000000), 60) """ # Sampling without replacement entails tracking either potential # selections (the pool) in a list or previous selections in a set. # When the number of selections is small compared to the # population, then tracking selections is efficient, requiring # only a small set and an occasional reselection. For # a larger number of selections, the pool tracking method is # preferred since the list takes less space than the # set and it doesn't suffer from frequent reselections. # The number of calls to _randbelow() is kept at or near k, the # theoretical minimum. This is important because running time # is dominated by _randbelow() and because it extracts the # least entropy from the underlying random number generators. # Memory requirements are kept to the smaller of a k-length # set or an n-length list. # There are other sampling algorithms that do not require # auxiliary memory, but they were rejected because they made # too many calls to _randbelow(), making them slower and # causing them to eat more entropy than necessary. if not isinstance(population, _Sequence): > raise TypeError("Population must be a sequence. " "For dicts or sets, use sorted(d).") E TypeError: Population must be a sequence. For dicts or sets, use sorted(d). /usr/lib64/python3.11/random.py:439: TypeError _______ test_reassignment_with_random_subscriptions_and_changes[6-15-37] _______ mocker = execution_number = 6, n_topics = 15, n_consumers = 37 @pytest.mark.parametrize( 'execution_number,n_topics,n_consumers', [(i, randint(10, 20), randint(20, 40)) for i in range(100)] ) def test_reassignment_with_random_subscriptions_and_changes(mocker, execution_number, n_topics, n_consumers): all_topics = set(['t{}'.format(i) for i in range(1, n_topics + 1)]) partitions = dict([(t, set(range(1, i + 1))) for i, t in enumerate(all_topics)]) cluster = create_cluster(mocker, topics=all_topics, topic_partitions_lambda=lambda t: partitions[t]) subscriptions = defaultdict(set) for i in range(n_consumers): > topics_sample = sample(all_topics, randint(1, len(all_topics) - 1)) test/test_assignors.py:664: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = population = {'t1', 't10', 't11', 't12', 't13', 't14', ...}, k = 6 def sample(self, population, k, *, counts=None): """Chooses k unique random elements from a population sequence. Returns a new list containing elements from the population while leaving the original population unchanged. The resulting list is in selection order so that all sub-slices will also be valid random samples. This allows raffle winners (the sample) to be partitioned into grand prize and second place winners (the subslices). Members of the population need not be hashable or unique. If the population contains repeats, then each occurrence is a possible selection in the sample. Repeated elements can be specified one at a time or with the optional counts parameter. For example: sample(['red', 'blue'], counts=[4, 2], k=5) is equivalent to: sample(['red', 'red', 'red', 'red', 'blue', 'blue'], k=5) To choose a sample from a range of integers, use range() for the population argument. This is especially fast and space efficient for sampling from a large population: sample(range(10000000), 60) """ # Sampling without replacement entails tracking either potential # selections (the pool) in a list or previous selections in a set. # When the number of selections is small compared to the # population, then tracking selections is efficient, requiring # only a small set and an occasional reselection. For # a larger number of selections, the pool tracking method is # preferred since the list takes less space than the # set and it doesn't suffer from frequent reselections. # The number of calls to _randbelow() is kept at or near k, the # theoretical minimum. This is important because running time # is dominated by _randbelow() and because it extracts the # least entropy from the underlying random number generators. # Memory requirements are kept to the smaller of a k-length # set or an n-length list. # There are other sampling algorithms that do not require # auxiliary memory, but they were rejected because they made # too many calls to _randbelow(), making them slower and # causing them to eat more entropy than necessary. if not isinstance(population, _Sequence): > raise TypeError("Population must be a sequence. " "For dicts or sets, use sorted(d).") E TypeError: Population must be a sequence. For dicts or sets, use sorted(d). /usr/lib64/python3.11/random.py:439: TypeError _______ test_reassignment_with_random_subscriptions_and_changes[7-17-40] _______ mocker = execution_number = 7, n_topics = 17, n_consumers = 40 @pytest.mark.parametrize( 'execution_number,n_topics,n_consumers', [(i, randint(10, 20), randint(20, 40)) for i in range(100)] ) def test_reassignment_with_random_subscriptions_and_changes(mocker, execution_number, n_topics, n_consumers): all_topics = set(['t{}'.format(i) for i in range(1, n_topics + 1)]) partitions = dict([(t, set(range(1, i + 1))) for i, t in enumerate(all_topics)]) cluster = create_cluster(mocker, topics=all_topics, topic_partitions_lambda=lambda t: partitions[t]) subscriptions = defaultdict(set) for i in range(n_consumers): > topics_sample = sample(all_topics, randint(1, len(all_topics) - 1)) test/test_assignors.py:664: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = population = {'t1', 't10', 't11', 't12', 't13', 't14', ...}, k = 4 def sample(self, population, k, *, counts=None): """Chooses k unique random elements from a population sequence. Returns a new list containing elements from the population while leaving the original population unchanged. The resulting list is in selection order so that all sub-slices will also be valid random samples. This allows raffle winners (the sample) to be partitioned into grand prize and second place winners (the subslices). Members of the population need not be hashable or unique. If the population contains repeats, then each occurrence is a possible selection in the sample. Repeated elements can be specified one at a time or with the optional counts parameter. For example: sample(['red', 'blue'], counts=[4, 2], k=5) is equivalent to: sample(['red', 'red', 'red', 'red', 'blue', 'blue'], k=5) To choose a sample from a range of integers, use range() for the population argument. This is especially fast and space efficient for sampling from a large population: sample(range(10000000), 60) """ # Sampling without replacement entails tracking either potential # selections (the pool) in a list or previous selections in a set. # When the number of selections is small compared to the # population, then tracking selections is efficient, requiring # only a small set and an occasional reselection. For # a larger number of selections, the pool tracking method is # preferred since the list takes less space than the # set and it doesn't suffer from frequent reselections. # The number of calls to _randbelow() is kept at or near k, the # theoretical minimum. This is important because running time # is dominated by _randbelow() and because it extracts the # least entropy from the underlying random number generators. # Memory requirements are kept to the smaller of a k-length # set or an n-length list. # There are other sampling algorithms that do not require # auxiliary memory, but they were rejected because they made # too many calls to _randbelow(), making them slower and # causing them to eat more entropy than necessary. if not isinstance(population, _Sequence): > raise TypeError("Population must be a sequence. " "For dicts or sets, use sorted(d).") E TypeError: Population must be a sequence. For dicts or sets, use sorted(d). /usr/lib64/python3.11/random.py:439: TypeError _______ test_reassignment_with_random_subscriptions_and_changes[8-15-30] _______ mocker = execution_number = 8, n_topics = 15, n_consumers = 30 @pytest.mark.parametrize( 'execution_number,n_topics,n_consumers', [(i, randint(10, 20), randint(20, 40)) for i in range(100)] ) def test_reassignment_with_random_subscriptions_and_changes(mocker, execution_number, n_topics, n_consumers): all_topics = set(['t{}'.format(i) for i in range(1, n_topics + 1)]) partitions = dict([(t, set(range(1, i + 1))) for i, t in enumerate(all_topics)]) cluster = create_cluster(mocker, topics=all_topics, topic_partitions_lambda=lambda t: partitions[t]) subscriptions = defaultdict(set) for i in range(n_consumers): > topics_sample = sample(all_topics, randint(1, len(all_topics) - 1)) test/test_assignors.py:664: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = population = {'t1', 't10', 't11', 't12', 't13', 't14', ...}, k = 5 def sample(self, population, k, *, counts=None): """Chooses k unique random elements from a population sequence. Returns a new list containing elements from the population while leaving the original population unchanged. The resulting list is in selection order so that all sub-slices will also be valid random samples. This allows raffle winners (the sample) to be partitioned into grand prize and second place winners (the subslices). Members of the population need not be hashable or unique. If the population contains repeats, then each occurrence is a possible selection in the sample. Repeated elements can be specified one at a time or with the optional counts parameter. For example: sample(['red', 'blue'], counts=[4, 2], k=5) is equivalent to: sample(['red', 'red', 'red', 'red', 'blue', 'blue'], k=5) To choose a sample from a range of integers, use range() for the population argument. This is especially fast and space efficient for sampling from a large population: sample(range(10000000), 60) """ # Sampling without replacement entails tracking either potential # selections (the pool) in a list or previous selections in a set. # When the number of selections is small compared to the # population, then tracking selections is efficient, requiring # only a small set and an occasional reselection. For # a larger number of selections, the pool tracking method is # preferred since the list takes less space than the # set and it doesn't suffer from frequent reselections. # The number of calls to _randbelow() is kept at or near k, the # theoretical minimum. This is important because running time # is dominated by _randbelow() and because it extracts the # least entropy from the underlying random number generators. # Memory requirements are kept to the smaller of a k-length # set or an n-length list. # There are other sampling algorithms that do not require # auxiliary memory, but they were rejected because they made # too many calls to _randbelow(), making them slower and # causing them to eat more entropy than necessary. if not isinstance(population, _Sequence): > raise TypeError("Population must be a sequence. " "For dicts or sets, use sorted(d).") E TypeError: Population must be a sequence. For dicts or sets, use sorted(d). /usr/lib64/python3.11/random.py:439: TypeError _______ test_reassignment_with_random_subscriptions_and_changes[9-18-22] _______ mocker = execution_number = 9, n_topics = 18, n_consumers = 22 @pytest.mark.parametrize( 'execution_number,n_topics,n_consumers', [(i, randint(10, 20), randint(20, 40)) for i in range(100)] ) def test_reassignment_with_random_subscriptions_and_changes(mocker, execution_number, n_topics, n_consumers): all_topics = set(['t{}'.format(i) for i in range(1, n_topics + 1)]) partitions = dict([(t, set(range(1, i + 1))) for i, t in enumerate(all_topics)]) cluster = create_cluster(mocker, topics=all_topics, topic_partitions_lambda=lambda t: partitions[t]) subscriptions = defaultdict(set) for i in range(n_consumers): > topics_sample = sample(all_topics, randint(1, len(all_topics) - 1)) test/test_assignors.py:664: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = population = {'t1', 't10', 't11', 't12', 't13', 't14', ...}, k = 3 def sample(self, population, k, *, counts=None): """Chooses k unique random elements from a population sequence. Returns a new list containing elements from the population while leaving the original population unchanged. The resulting list is in selection order so that all sub-slices will also be valid random samples. This allows raffle winners (the sample) to be partitioned into grand prize and second place winners (the subslices). Members of the population need not be hashable or unique. If the population contains repeats, then each occurrence is a possible selection in the sample. Repeated elements can be specified one at a time or with the optional counts parameter. For example: sample(['red', 'blue'], counts=[4, 2], k=5) is equivalent to: sample(['red', 'red', 'red', 'red', 'blue', 'blue'], k=5) To choose a sample from a range of integers, use range() for the population argument. This is especially fast and space efficient for sampling from a large population: sample(range(10000000), 60) """ # Sampling without replacement entails tracking either potential # selections (the pool) in a list or previous selections in a set. # When the number of selections is small compared to the # population, then tracking selections is efficient, requiring # only a small set and an occasional reselection. For # a larger number of selections, the pool tracking method is # preferred since the list takes less space than the # set and it doesn't suffer from frequent reselections. # The number of calls to _randbelow() is kept at or near k, the # theoretical minimum. This is important because running time # is dominated by _randbelow() and because it extracts the # least entropy from the underlying random number generators. # Memory requirements are kept to the smaller of a k-length # set or an n-length list. # There are other sampling algorithms that do not require # auxiliary memory, but they were rejected because they made # too many calls to _randbelow(), making them slower and # causing them to eat more entropy than necessary. if not isinstance(population, _Sequence): > raise TypeError("Population must be a sequence. " "For dicts or sets, use sorted(d).") E TypeError: Population must be a sequence. For dicts or sets, use sorted(d). /usr/lib64/python3.11/random.py:439: TypeError ______ test_reassignment_with_random_subscriptions_and_changes[10-17-28] _______ mocker = execution_number = 10, n_topics = 17, n_consumers = 28 @pytest.mark.parametrize( 'execution_number,n_topics,n_consumers', [(i, randint(10, 20), randint(20, 40)) for i in range(100)] ) def test_reassignment_with_random_subscriptions_and_changes(mocker, execution_number, n_topics, n_consumers): all_topics = set(['t{}'.format(i) for i in range(1, n_topics + 1)]) partitions = dict([(t, set(range(1, i + 1))) for i, t in enumerate(all_topics)]) cluster = create_cluster(mocker, topics=all_topics, topic_partitions_lambda=lambda t: partitions[t]) subscriptions = defaultdict(set) for i in range(n_consumers): > topics_sample = sample(all_topics, randint(1, len(all_topics) - 1)) test/test_assignors.py:664: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = population = {'t1', 't10', 't11', 't12', 't13', 't14', ...}, k = 14 def sample(self, population, k, *, counts=None): """Chooses k unique random elements from a population sequence. Returns a new list containing elements from the population while leaving the original population unchanged. The resulting list is in selection order so that all sub-slices will also be valid random samples. This allows raffle winners (the sample) to be partitioned into grand prize and second place winners (the subslices). Members of the population need not be hashable or unique. If the population contains repeats, then each occurrence is a possible selection in the sample. Repeated elements can be specified one at a time or with the optional counts parameter. For example: sample(['red', 'blue'], counts=[4, 2], k=5) is equivalent to: sample(['red', 'red', 'red', 'red', 'blue', 'blue'], k=5) To choose a sample from a range of integers, use range() for the population argument. This is especially fast and space efficient for sampling from a large population: sample(range(10000000), 60) """ # Sampling without replacement entails tracking either potential # selections (the pool) in a list or previous selections in a set. # When the number of selections is small compared to the # population, then tracking selections is efficient, requiring # only a small set and an occasional reselection. For # a larger number of selections, the pool tracking method is # preferred since the list takes less space than the # set and it doesn't suffer from frequent reselections. # The number of calls to _randbelow() is kept at or near k, the # theoretical minimum. This is important because running time # is dominated by _randbelow() and because it extracts the # least entropy from the underlying random number generators. # Memory requirements are kept to the smaller of a k-length # set or an n-length list. # There are other sampling algorithms that do not require # auxiliary memory, but they were rejected because they made # too many calls to _randbelow(), making them slower and # causing them to eat more entropy than necessary. if not isinstance(population, _Sequence): > raise TypeError("Population must be a sequence. " "For dicts or sets, use sorted(d).") E TypeError: Population must be a sequence. For dicts or sets, use sorted(d). /usr/lib64/python3.11/random.py:439: TypeError ______ test_reassignment_with_random_subscriptions_and_changes[11-10-31] _______ mocker = execution_number = 11, n_topics = 10, n_consumers = 31 @pytest.mark.parametrize( 'execution_number,n_topics,n_consumers', [(i, randint(10, 20), randint(20, 40)) for i in range(100)] ) def test_reassignment_with_random_subscriptions_and_changes(mocker, execution_number, n_topics, n_consumers): all_topics = set(['t{}'.format(i) for i in range(1, n_topics + 1)]) partitions = dict([(t, set(range(1, i + 1))) for i, t in enumerate(all_topics)]) cluster = create_cluster(mocker, topics=all_topics, topic_partitions_lambda=lambda t: partitions[t]) subscriptions = defaultdict(set) for i in range(n_consumers): > topics_sample = sample(all_topics, randint(1, len(all_topics) - 1)) test/test_assignors.py:664: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = population = {'t1', 't10', 't2', 't3', 't4', 't5', ...}, k = 6 def sample(self, population, k, *, counts=None): """Chooses k unique random elements from a population sequence. Returns a new list containing elements from the population while leaving the original population unchanged. The resulting list is in selection order so that all sub-slices will also be valid random samples. This allows raffle winners (the sample) to be partitioned into grand prize and second place winners (the subslices). Members of the population need not be hashable or unique. If the population contains repeats, then each occurrence is a possible selection in the sample. Repeated elements can be specified one at a time or with the optional counts parameter. For example: sample(['red', 'blue'], counts=[4, 2], k=5) is equivalent to: sample(['red', 'red', 'red', 'red', 'blue', 'blue'], k=5) To choose a sample from a range of integers, use range() for the population argument. This is especially fast and space efficient for sampling from a large population: sample(range(10000000), 60) """ # Sampling without replacement entails tracking either potential # selections (the pool) in a list or previous selections in a set. # When the number of selections is small compared to the # population, then tracking selections is efficient, requiring # only a small set and an occasional reselection. For # a larger number of selections, the pool tracking method is # preferred since the list takes less space than the # set and it doesn't suffer from frequent reselections. # The number of calls to _randbelow() is kept at or near k, the # theoretical minimum. This is important because running time # is dominated by _randbelow() and because it extracts the # least entropy from the underlying random number generators. # Memory requirements are kept to the smaller of a k-length # set or an n-length list. # There are other sampling algorithms that do not require # auxiliary memory, but they were rejected because they made # too many calls to _randbelow(), making them slower and # causing them to eat more entropy than necessary. if not isinstance(population, _Sequence): > raise TypeError("Population must be a sequence. " "For dicts or sets, use sorted(d).") E TypeError: Population must be a sequence. For dicts or sets, use sorted(d). /usr/lib64/python3.11/random.py:439: TypeError ______ test_reassignment_with_random_subscriptions_and_changes[12-13-39] _______ mocker = execution_number = 12, n_topics = 13, n_consumers = 39 @pytest.mark.parametrize( 'execution_number,n_topics,n_consumers', [(i, randint(10, 20), randint(20, 40)) for i in range(100)] ) def test_reassignment_with_random_subscriptions_and_changes(mocker, execution_number, n_topics, n_consumers): all_topics = set(['t{}'.format(i) for i in range(1, n_topics + 1)]) partitions = dict([(t, set(range(1, i + 1))) for i, t in enumerate(all_topics)]) cluster = create_cluster(mocker, topics=all_topics, topic_partitions_lambda=lambda t: partitions[t]) subscriptions = defaultdict(set) for i in range(n_consumers): > topics_sample = sample(all_topics, randint(1, len(all_topics) - 1)) test/test_assignors.py:664: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = population = {'t1', 't10', 't11', 't12', 't13', 't2', ...}, k = 2 def sample(self, population, k, *, counts=None): """Chooses k unique random elements from a population sequence. Returns a new list containing elements from the population while leaving the original population unchanged. The resulting list is in selection order so that all sub-slices will also be valid random samples. This allows raffle winners (the sample) to be partitioned into grand prize and second place winners (the subslices). Members of the population need not be hashable or unique. If the population contains repeats, then each occurrence is a possible selection in the sample. Repeated elements can be specified one at a time or with the optional counts parameter. For example: sample(['red', 'blue'], counts=[4, 2], k=5) is equivalent to: sample(['red', 'red', 'red', 'red', 'blue', 'blue'], k=5) To choose a sample from a range of integers, use range() for the population argument. This is especially fast and space efficient for sampling from a large population: sample(range(10000000), 60) """ # Sampling without replacement entails tracking either potential # selections (the pool) in a list or previous selections in a set. # When the number of selections is small compared to the # population, then tracking selections is efficient, requiring # only a small set and an occasional reselection. For # a larger number of selections, the pool tracking method is # preferred since the list takes less space than the # set and it doesn't suffer from frequent reselections. # The number of calls to _randbelow() is kept at or near k, the # theoretical minimum. This is important because running time # is dominated by _randbelow() and because it extracts the # least entropy from the underlying random number generators. # Memory requirements are kept to the smaller of a k-length # set or an n-length list. # There are other sampling algorithms that do not require # auxiliary memory, but they were rejected because they made # too many calls to _randbelow(), making them slower and # causing them to eat more entropy than necessary. if not isinstance(population, _Sequence): > raise TypeError("Population must be a sequence. " "For dicts or sets, use sorted(d).") E TypeError: Population must be a sequence. For dicts or sets, use sorted(d). /usr/lib64/python3.11/random.py:439: TypeError ______ test_reassignment_with_random_subscriptions_and_changes[13-14-23] _______ mocker = execution_number = 13, n_topics = 14, n_consumers = 23 @pytest.mark.parametrize( 'execution_number,n_topics,n_consumers', [(i, randint(10, 20), randint(20, 40)) for i in range(100)] ) def test_reassignment_with_random_subscriptions_and_changes(mocker, execution_number, n_topics, n_consumers): all_topics = set(['t{}'.format(i) for i in range(1, n_topics + 1)]) partitions = dict([(t, set(range(1, i + 1))) for i, t in enumerate(all_topics)]) cluster = create_cluster(mocker, topics=all_topics, topic_partitions_lambda=lambda t: partitions[t]) subscriptions = defaultdict(set) for i in range(n_consumers): > topics_sample = sample(all_topics, randint(1, len(all_topics) - 1)) test/test_assignors.py:664: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = population = {'t1', 't10', 't11', 't12', 't13', 't14', ...}, k = 1 def sample(self, population, k, *, counts=None): """Chooses k unique random elements from a population sequence. Returns a new list containing elements from the population while leaving the original population unchanged. The resulting list is in selection order so that all sub-slices will also be valid random samples. This allows raffle winners (the sample) to be partitioned into grand prize and second place winners (the subslices). Members of the population need not be hashable or unique. If the population contains repeats, then each occurrence is a possible selection in the sample. Repeated elements can be specified one at a time or with the optional counts parameter. For example: sample(['red', 'blue'], counts=[4, 2], k=5) is equivalent to: sample(['red', 'red', 'red', 'red', 'blue', 'blue'], k=5) To choose a sample from a range of integers, use range() for the population argument. This is especially fast and space efficient for sampling from a large population: sample(range(10000000), 60) """ # Sampling without replacement entails tracking either potential # selections (the pool) in a list or previous selections in a set. # When the number of selections is small compared to the # population, then tracking selections is efficient, requiring # only a small set and an occasional reselection. For # a larger number of selections, the pool tracking method is # preferred since the list takes less space than the # set and it doesn't suffer from frequent reselections. # The number of calls to _randbelow() is kept at or near k, the # theoretical minimum. This is important because running time # is dominated by _randbelow() and because it extracts the # least entropy from the underlying random number generators. # Memory requirements are kept to the smaller of a k-length # set or an n-length list. # There are other sampling algorithms that do not require # auxiliary memory, but they were rejected because they made # too many calls to _randbelow(), making them slower and # causing them to eat more entropy than necessary. if not isinstance(population, _Sequence): > raise TypeError("Population must be a sequence. " "For dicts or sets, use sorted(d).") E TypeError: Population must be a sequence. For dicts or sets, use sorted(d). /usr/lib64/python3.11/random.py:439: TypeError ______ test_reassignment_with_random_subscriptions_and_changes[14-17-35] _______ mocker = execution_number = 14, n_topics = 17, n_consumers = 35 @pytest.mark.parametrize( 'execution_number,n_topics,n_consumers', [(i, randint(10, 20), randint(20, 40)) for i in range(100)] ) def test_reassignment_with_random_subscriptions_and_changes(mocker, execution_number, n_topics, n_consumers): all_topics = set(['t{}'.format(i) for i in range(1, n_topics + 1)]) partitions = dict([(t, set(range(1, i + 1))) for i, t in enumerate(all_topics)]) cluster = create_cluster(mocker, topics=all_topics, topic_partitions_lambda=lambda t: partitions[t]) subscriptions = defaultdict(set) for i in range(n_consumers): > topics_sample = sample(all_topics, randint(1, len(all_topics) - 1)) test/test_assignors.py:664: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = population = {'t1', 't10', 't11', 't12', 't13', 't14', ...}, k = 9 def sample(self, population, k, *, counts=None): """Chooses k unique random elements from a population sequence. Returns a new list containing elements from the population while leaving the original population unchanged. The resulting list is in selection order so that all sub-slices will also be valid random samples. This allows raffle winners (the sample) to be partitioned into grand prize and second place winners (the subslices). Members of the population need not be hashable or unique. If the population contains repeats, then each occurrence is a possible selection in the sample. Repeated elements can be specified one at a time or with the optional counts parameter. For example: sample(['red', 'blue'], counts=[4, 2], k=5) is equivalent to: sample(['red', 'red', 'red', 'red', 'blue', 'blue'], k=5) To choose a sample from a range of integers, use range() for the population argument. This is especially fast and space efficient for sampling from a large population: sample(range(10000000), 60) """ # Sampling without replacement entails tracking either potential # selections (the pool) in a list or previous selections in a set. # When the number of selections is small compared to the # population, then tracking selections is efficient, requiring # only a small set and an occasional reselection. For # a larger number of selections, the pool tracking method is # preferred since the list takes less space than the # set and it doesn't suffer from frequent reselections. # The number of calls to _randbelow() is kept at or near k, the # theoretical minimum. This is important because running time # is dominated by _randbelow() and because it extracts the # least entropy from the underlying random number generators. # Memory requirements are kept to the smaller of a k-length # set or an n-length list. # There are other sampling algorithms that do not require # auxiliary memory, but they were rejected because they made # too many calls to _randbelow(), making them slower and # causing them to eat more entropy than necessary. if not isinstance(population, _Sequence): > raise TypeError("Population must be a sequence. " "For dicts or sets, use sorted(d).") E TypeError: Population must be a sequence. For dicts or sets, use sorted(d). /usr/lib64/python3.11/random.py:439: TypeError ______ test_reassignment_with_random_subscriptions_and_changes[15-20-35] _______ mocker = execution_number = 15, n_topics = 20, n_consumers = 35 @pytest.mark.parametrize( 'execution_number,n_topics,n_consumers', [(i, randint(10, 20), randint(20, 40)) for i in range(100)] ) def test_reassignment_with_random_subscriptions_and_changes(mocker, execution_number, n_topics, n_consumers): all_topics = set(['t{}'.format(i) for i in range(1, n_topics + 1)]) partitions = dict([(t, set(range(1, i + 1))) for i, t in enumerate(all_topics)]) cluster = create_cluster(mocker, topics=all_topics, topic_partitions_lambda=lambda t: partitions[t]) subscriptions = defaultdict(set) for i in range(n_consumers): > topics_sample = sample(all_topics, randint(1, len(all_topics) - 1)) test/test_assignors.py:664: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = population = {'t1', 't10', 't11', 't12', 't13', 't14', ...}, k = 4 def sample(self, population, k, *, counts=None): """Chooses k unique random elements from a population sequence. Returns a new list containing elements from the population while leaving the original population unchanged. The resulting list is in selection order so that all sub-slices will also be valid random samples. This allows raffle winners (the sample) to be partitioned into grand prize and second place winners (the subslices). Members of the population need not be hashable or unique. If the population contains repeats, then each occurrence is a possible selection in the sample. Repeated elements can be specified one at a time or with the optional counts parameter. For example: sample(['red', 'blue'], counts=[4, 2], k=5) is equivalent to: sample(['red', 'red', 'red', 'red', 'blue', 'blue'], k=5) To choose a sample from a range of integers, use range() for the population argument. This is especially fast and space efficient for sampling from a large population: sample(range(10000000), 60) """ # Sampling without replacement entails tracking either potential # selections (the pool) in a list or previous selections in a set. # When the number of selections is small compared to the # population, then tracking selections is efficient, requiring # only a small set and an occasional reselection. For # a larger number of selections, the pool tracking method is # preferred since the list takes less space than the # set and it doesn't suffer from frequent reselections. # The number of calls to _randbelow() is kept at or near k, the # theoretical minimum. This is important because running time # is dominated by _randbelow() and because it extracts the # least entropy from the underlying random number generators. # Memory requirements are kept to the smaller of a k-length # set or an n-length list. # There are other sampling algorithms that do not require # auxiliary memory, but they were rejected because they made # too many calls to _randbelow(), making them slower and # causing them to eat more entropy than necessary. if not isinstance(population, _Sequence): > raise TypeError("Population must be a sequence. " "For dicts or sets, use sorted(d).") E TypeError: Population must be a sequence. For dicts or sets, use sorted(d). /usr/lib64/python3.11/random.py:439: TypeError ______ test_reassignment_with_random_subscriptions_and_changes[16-18-26] _______ mocker = execution_number = 16, n_topics = 18, n_consumers = 26 @pytest.mark.parametrize( 'execution_number,n_topics,n_consumers', [(i, randint(10, 20), randint(20, 40)) for i in range(100)] ) def test_reassignment_with_random_subscriptions_and_changes(mocker, execution_number, n_topics, n_consumers): all_topics = set(['t{}'.format(i) for i in range(1, n_topics + 1)]) partitions = dict([(t, set(range(1, i + 1))) for i, t in enumerate(all_topics)]) cluster = create_cluster(mocker, topics=all_topics, topic_partitions_lambda=lambda t: partitions[t]) subscriptions = defaultdict(set) for i in range(n_consumers): > topics_sample = sample(all_topics, randint(1, len(all_topics) - 1)) test/test_assignors.py:664: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = population = {'t1', 't10', 't11', 't12', 't13', 't14', ...}, k = 7 def sample(self, population, k, *, counts=None): """Chooses k unique random elements from a population sequence. Returns a new list containing elements from the population while leaving the original population unchanged. The resulting list is in selection order so that all sub-slices will also be valid random samples. This allows raffle winners (the sample) to be partitioned into grand prize and second place winners (the subslices). Members of the population need not be hashable or unique. If the population contains repeats, then each occurrence is a possible selection in the sample. Repeated elements can be specified one at a time or with the optional counts parameter. For example: sample(['red', 'blue'], counts=[4, 2], k=5) is equivalent to: sample(['red', 'red', 'red', 'red', 'blue', 'blue'], k=5) To choose a sample from a range of integers, use range() for the population argument. This is especially fast and space efficient for sampling from a large population: sample(range(10000000), 60) """ # Sampling without replacement entails tracking either potential # selections (the pool) in a list or previous selections in a set. # When the number of selections is small compared to the # population, then tracking selections is efficient, requiring # only a small set and an occasional reselection. For # a larger number of selections, the pool tracking method is # preferred since the list takes less space than the # set and it doesn't suffer from frequent reselections. # The number of calls to _randbelow() is kept at or near k, the # theoretical minimum. This is important because running time # is dominated by _randbelow() and because it extracts the # least entropy from the underlying random number generators. # Memory requirements are kept to the smaller of a k-length # set or an n-length list. # There are other sampling algorithms that do not require # auxiliary memory, but they were rejected because they made # too many calls to _randbelow(), making them slower and # causing them to eat more entropy than necessary. if not isinstance(population, _Sequence): > raise TypeError("Population must be a sequence. " "For dicts or sets, use sorted(d).") E TypeError: Population must be a sequence. For dicts or sets, use sorted(d). /usr/lib64/python3.11/random.py:439: TypeError ______ test_reassignment_with_random_subscriptions_and_changes[17-10-29] _______ mocker = execution_number = 17, n_topics = 10, n_consumers = 29 @pytest.mark.parametrize( 'execution_number,n_topics,n_consumers', [(i, randint(10, 20), randint(20, 40)) for i in range(100)] ) def test_reassignment_with_random_subscriptions_and_changes(mocker, execution_number, n_topics, n_consumers): all_topics = set(['t{}'.format(i) for i in range(1, n_topics + 1)]) partitions = dict([(t, set(range(1, i + 1))) for i, t in enumerate(all_topics)]) cluster = create_cluster(mocker, topics=all_topics, topic_partitions_lambda=lambda t: partitions[t]) subscriptions = defaultdict(set) for i in range(n_consumers): > topics_sample = sample(all_topics, randint(1, len(all_topics) - 1)) test/test_assignors.py:664: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = population = {'t1', 't10', 't2', 't3', 't4', 't5', ...}, k = 8 def sample(self, population, k, *, counts=None): """Chooses k unique random elements from a population sequence. Returns a new list containing elements from the population while leaving the original population unchanged. The resulting list is in selection order so that all sub-slices will also be valid random samples. This allows raffle winners (the sample) to be partitioned into grand prize and second place winners (the subslices). Members of the population need not be hashable or unique. If the population contains repeats, then each occurrence is a possible selection in the sample. Repeated elements can be specified one at a time or with the optional counts parameter. For example: sample(['red', 'blue'], counts=[4, 2], k=5) is equivalent to: sample(['red', 'red', 'red', 'red', 'blue', 'blue'], k=5) To choose a sample from a range of integers, use range() for the population argument. This is especially fast and space efficient for sampling from a large population: sample(range(10000000), 60) """ # Sampling without replacement entails tracking either potential # selections (the pool) in a list or previous selections in a set. # When the number of selections is small compared to the # population, then tracking selections is efficient, requiring # only a small set and an occasional reselection. For # a larger number of selections, the pool tracking method is # preferred since the list takes less space than the # set and it doesn't suffer from frequent reselections. # The number of calls to _randbelow() is kept at or near k, the # theoretical minimum. This is important because running time # is dominated by _randbelow() and because it extracts the # least entropy from the underlying random number generators. # Memory requirements are kept to the smaller of a k-length # set or an n-length list. # There are other sampling algorithms that do not require # auxiliary memory, but they were rejected because they made # too many calls to _randbelow(), making them slower and # causing them to eat more entropy than necessary. if not isinstance(population, _Sequence): > raise TypeError("Population must be a sequence. " "For dicts or sets, use sorted(d).") E TypeError: Population must be a sequence. For dicts or sets, use sorted(d). /usr/lib64/python3.11/random.py:439: TypeError ______ test_reassignment_with_random_subscriptions_and_changes[18-11-29] _______ mocker = execution_number = 18, n_topics = 11, n_consumers = 29 @pytest.mark.parametrize( 'execution_number,n_topics,n_consumers', [(i, randint(10, 20), randint(20, 40)) for i in range(100)] ) def test_reassignment_with_random_subscriptions_and_changes(mocker, execution_number, n_topics, n_consumers): all_topics = set(['t{}'.format(i) for i in range(1, n_topics + 1)]) partitions = dict([(t, set(range(1, i + 1))) for i, t in enumerate(all_topics)]) cluster = create_cluster(mocker, topics=all_topics, topic_partitions_lambda=lambda t: partitions[t]) subscriptions = defaultdict(set) for i in range(n_consumers): > topics_sample = sample(all_topics, randint(1, len(all_topics) - 1)) test/test_assignors.py:664: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = population = {'t1', 't10', 't11', 't2', 't3', 't4', ...}, k = 7 def sample(self, population, k, *, counts=None): """Chooses k unique random elements from a population sequence. Returns a new list containing elements from the population while leaving the original population unchanged. The resulting list is in selection order so that all sub-slices will also be valid random samples. This allows raffle winners (the sample) to be partitioned into grand prize and second place winners (the subslices). Members of the population need not be hashable or unique. If the population contains repeats, then each occurrence is a possible selection in the sample. Repeated elements can be specified one at a time or with the optional counts parameter. For example: sample(['red', 'blue'], counts=[4, 2], k=5) is equivalent to: sample(['red', 'red', 'red', 'red', 'blue', 'blue'], k=5) To choose a sample from a range of integers, use range() for the population argument. This is especially fast and space efficient for sampling from a large population: sample(range(10000000), 60) """ # Sampling without replacement entails tracking either potential # selections (the pool) in a list or previous selections in a set. # When the number of selections is small compared to the # population, then tracking selections is efficient, requiring # only a small set and an occasional reselection. For # a larger number of selections, the pool tracking method is # preferred since the list takes less space than the # set and it doesn't suffer from frequent reselections. # The number of calls to _randbelow() is kept at or near k, the # theoretical minimum. This is important because running time # is dominated by _randbelow() and because it extracts the # least entropy from the underlying random number generators. # Memory requirements are kept to the smaller of a k-length # set or an n-length list. # There are other sampling algorithms that do not require # auxiliary memory, but they were rejected because they made # too many calls to _randbelow(), making them slower and # causing them to eat more entropy than necessary. if not isinstance(population, _Sequence): > raise TypeError("Population must be a sequence. " "For dicts or sets, use sorted(d).") E TypeError: Population must be a sequence. For dicts or sets, use sorted(d). /usr/lib64/python3.11/random.py:439: TypeError ______ test_reassignment_with_random_subscriptions_and_changes[19-16-37] _______ mocker = execution_number = 19, n_topics = 16, n_consumers = 37 @pytest.mark.parametrize( 'execution_number,n_topics,n_consumers', [(i, randint(10, 20), randint(20, 40)) for i in range(100)] ) def test_reassignment_with_random_subscriptions_and_changes(mocker, execution_number, n_topics, n_consumers): all_topics = set(['t{}'.format(i) for i in range(1, n_topics + 1)]) partitions = dict([(t, set(range(1, i + 1))) for i, t in enumerate(all_topics)]) cluster = create_cluster(mocker, topics=all_topics, topic_partitions_lambda=lambda t: partitions[t]) subscriptions = defaultdict(set) for i in range(n_consumers): > topics_sample = sample(all_topics, randint(1, len(all_topics) - 1)) test/test_assignors.py:664: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = population = {'t1', 't10', 't11', 't12', 't13', 't14', ...}, k = 15 def sample(self, population, k, *, counts=None): """Chooses k unique random elements from a population sequence. Returns a new list containing elements from the population while leaving the original population unchanged. The resulting list is in selection order so that all sub-slices will also be valid random samples. This allows raffle winners (the sample) to be partitioned into grand prize and second place winners (the subslices). Members of the population need not be hashable or unique. If the population contains repeats, then each occurrence is a possible selection in the sample. Repeated elements can be specified one at a time or with the optional counts parameter. For example: sample(['red', 'blue'], counts=[4, 2], k=5) is equivalent to: sample(['red', 'red', 'red', 'red', 'blue', 'blue'], k=5) To choose a sample from a range of integers, use range() for the population argument. This is especially fast and space efficient for sampling from a large population: sample(range(10000000), 60) """ # Sampling without replacement entails tracking either potential # selections (the pool) in a list or previous selections in a set. # When the number of selections is small compared to the # population, then tracking selections is efficient, requiring # only a small set and an occasional reselection. For # a larger number of selections, the pool tracking method is # preferred since the list takes less space than the # set and it doesn't suffer from frequent reselections. # The number of calls to _randbelow() is kept at or near k, the # theoretical minimum. This is important because running time # is dominated by _randbelow() and because it extracts the # least entropy from the underlying random number generators. # Memory requirements are kept to the smaller of a k-length # set or an n-length list. # There are other sampling algorithms that do not require # auxiliary memory, but they were rejected because they made # too many calls to _randbelow(), making them slower and # causing them to eat more entropy than necessary. if not isinstance(population, _Sequence): > raise TypeError("Population must be a sequence. " "For dicts or sets, use sorted(d).") E TypeError: Population must be a sequence. For dicts or sets, use sorted(d). /usr/lib64/python3.11/random.py:439: TypeError ______ test_reassignment_with_random_subscriptions_and_changes[20-14-35] _______ mocker = execution_number = 20, n_topics = 14, n_consumers = 35 @pytest.mark.parametrize( 'execution_number,n_topics,n_consumers', [(i, randint(10, 20), randint(20, 40)) for i in range(100)] ) def test_reassignment_with_random_subscriptions_and_changes(mocker, execution_number, n_topics, n_consumers): all_topics = set(['t{}'.format(i) for i in range(1, n_topics + 1)]) partitions = dict([(t, set(range(1, i + 1))) for i, t in enumerate(all_topics)]) cluster = create_cluster(mocker, topics=all_topics, topic_partitions_lambda=lambda t: partitions[t]) subscriptions = defaultdict(set) for i in range(n_consumers): > topics_sample = sample(all_topics, randint(1, len(all_topics) - 1)) test/test_assignors.py:664: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = population = {'t1', 't10', 't11', 't12', 't13', 't14', ...}, k = 10 def sample(self, population, k, *, counts=None): """Chooses k unique random elements from a population sequence. Returns a new list containing elements from the population while leaving the original population unchanged. The resulting list is in selection order so that all sub-slices will also be valid random samples. This allows raffle winners (the sample) to be partitioned into grand prize and second place winners (the subslices). Members of the population need not be hashable or unique. If the population contains repeats, then each occurrence is a possible selection in the sample. Repeated elements can be specified one at a time or with the optional counts parameter. For example: sample(['red', 'blue'], counts=[4, 2], k=5) is equivalent to: sample(['red', 'red', 'red', 'red', 'blue', 'blue'], k=5) To choose a sample from a range of integers, use range() for the population argument. This is especially fast and space efficient for sampling from a large population: sample(range(10000000), 60) """ # Sampling without replacement entails tracking either potential # selections (the pool) in a list or previous selections in a set. # When the number of selections is small compared to the # population, then tracking selections is efficient, requiring # only a small set and an occasional reselection. For # a larger number of selections, the pool tracking method is # preferred since the list takes less space than the # set and it doesn't suffer from frequent reselections. # The number of calls to _randbelow() is kept at or near k, the # theoretical minimum. This is important because running time # is dominated by _randbelow() and because it extracts the # least entropy from the underlying random number generators. # Memory requirements are kept to the smaller of a k-length # set or an n-length list. # There are other sampling algorithms that do not require # auxiliary memory, but they were rejected because they made # too many calls to _randbelow(), making them slower and # causing them to eat more entropy than necessary. if not isinstance(population, _Sequence): > raise TypeError("Population must be a sequence. " "For dicts or sets, use sorted(d).") E TypeError: Population must be a sequence. For dicts or sets, use sorted(d). /usr/lib64/python3.11/random.py:439: TypeError ______ test_reassignment_with_random_subscriptions_and_changes[21-19-36] _______ mocker = execution_number = 21, n_topics = 19, n_consumers = 36 @pytest.mark.parametrize( 'execution_number,n_topics,n_consumers', [(i, randint(10, 20), randint(20, 40)) for i in range(100)] ) def test_reassignment_with_random_subscriptions_and_changes(mocker, execution_number, n_topics, n_consumers): all_topics = set(['t{}'.format(i) for i in range(1, n_topics + 1)]) partitions = dict([(t, set(range(1, i + 1))) for i, t in enumerate(all_topics)]) cluster = create_cluster(mocker, topics=all_topics, topic_partitions_lambda=lambda t: partitions[t]) subscriptions = defaultdict(set) for i in range(n_consumers): > topics_sample = sample(all_topics, randint(1, len(all_topics) - 1)) test/test_assignors.py:664: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = population = {'t1', 't10', 't11', 't12', 't13', 't14', ...}, k = 15 def sample(self, population, k, *, counts=None): """Chooses k unique random elements from a population sequence. Returns a new list containing elements from the population while leaving the original population unchanged. The resulting list is in selection order so that all sub-slices will also be valid random samples. This allows raffle winners (the sample) to be partitioned into grand prize and second place winners (the subslices). Members of the population need not be hashable or unique. If the population contains repeats, then each occurrence is a possible selection in the sample. Repeated elements can be specified one at a time or with the optional counts parameter. For example: sample(['red', 'blue'], counts=[4, 2], k=5) is equivalent to: sample(['red', 'red', 'red', 'red', 'blue', 'blue'], k=5) To choose a sample from a range of integers, use range() for the population argument. This is especially fast and space efficient for sampling from a large population: sample(range(10000000), 60) """ # Sampling without replacement entails tracking either potential # selections (the pool) in a list or previous selections in a set. # When the number of selections is small compared to the # population, then tracking selections is efficient, requiring # only a small set and an occasional reselection. For # a larger number of selections, the pool tracking method is # preferred since the list takes less space than the # set and it doesn't suffer from frequent reselections. # The number of calls to _randbelow() is kept at or near k, the # theoretical minimum. This is important because running time # is dominated by _randbelow() and because it extracts the # least entropy from the underlying random number generators. # Memory requirements are kept to the smaller of a k-length # set or an n-length list. # There are other sampling algorithms that do not require # auxiliary memory, but they were rejected because they made # too many calls to _randbelow(), making them slower and # causing them to eat more entropy than necessary. if not isinstance(population, _Sequence): > raise TypeError("Population must be a sequence. " "For dicts or sets, use sorted(d).") E TypeError: Population must be a sequence. For dicts or sets, use sorted(d). /usr/lib64/python3.11/random.py:439: TypeError ______ test_reassignment_with_random_subscriptions_and_changes[22-14-30] _______ mocker = execution_number = 22, n_topics = 14, n_consumers = 30 @pytest.mark.parametrize( 'execution_number,n_topics,n_consumers', [(i, randint(10, 20), randint(20, 40)) for i in range(100)] ) def test_reassignment_with_random_subscriptions_and_changes(mocker, execution_number, n_topics, n_consumers): all_topics = set(['t{}'.format(i) for i in range(1, n_topics + 1)]) partitions = dict([(t, set(range(1, i + 1))) for i, t in enumerate(all_topics)]) cluster = create_cluster(mocker, topics=all_topics, topic_partitions_lambda=lambda t: partitions[t]) subscriptions = defaultdict(set) for i in range(n_consumers): > topics_sample = sample(all_topics, randint(1, len(all_topics) - 1)) test/test_assignors.py:664: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = population = {'t1', 't10', 't11', 't12', 't13', 't14', ...}, k = 5 def sample(self, population, k, *, counts=None): """Chooses k unique random elements from a population sequence. Returns a new list containing elements from the population while leaving the original population unchanged. The resulting list is in selection order so that all sub-slices will also be valid random samples. This allows raffle winners (the sample) to be partitioned into grand prize and second place winners (the subslices). Members of the population need not be hashable or unique. If the population contains repeats, then each occurrence is a possible selection in the sample. Repeated elements can be specified one at a time or with the optional counts parameter. For example: sample(['red', 'blue'], counts=[4, 2], k=5) is equivalent to: sample(['red', 'red', 'red', 'red', 'blue', 'blue'], k=5) To choose a sample from a range of integers, use range() for the population argument. This is especially fast and space efficient for sampling from a large population: sample(range(10000000), 60) """ # Sampling without replacement entails tracking either potential # selections (the pool) in a list or previous selections in a set. # When the number of selections is small compared to the # population, then tracking selections is efficient, requiring # only a small set and an occasional reselection. For # a larger number of selections, the pool tracking method is # preferred since the list takes less space than the # set and it doesn't suffer from frequent reselections. # The number of calls to _randbelow() is kept at or near k, the # theoretical minimum. This is important because running time # is dominated by _randbelow() and because it extracts the # least entropy from the underlying random number generators. # Memory requirements are kept to the smaller of a k-length # set or an n-length list. # There are other sampling algorithms that do not require # auxiliary memory, but they were rejected because they made # too many calls to _randbelow(), making them slower and # causing them to eat more entropy than necessary. if not isinstance(population, _Sequence): > raise TypeError("Population must be a sequence. " "For dicts or sets, use sorted(d).") E TypeError: Population must be a sequence. For dicts or sets, use sorted(d). /usr/lib64/python3.11/random.py:439: TypeError ______ test_reassignment_with_random_subscriptions_and_changes[23-14-29] _______ mocker = execution_number = 23, n_topics = 14, n_consumers = 29 @pytest.mark.parametrize( 'execution_number,n_topics,n_consumers', [(i, randint(10, 20), randint(20, 40)) for i in range(100)] ) def test_reassignment_with_random_subscriptions_and_changes(mocker, execution_number, n_topics, n_consumers): all_topics = set(['t{}'.format(i) for i in range(1, n_topics + 1)]) partitions = dict([(t, set(range(1, i + 1))) for i, t in enumerate(all_topics)]) cluster = create_cluster(mocker, topics=all_topics, topic_partitions_lambda=lambda t: partitions[t]) subscriptions = defaultdict(set) for i in range(n_consumers): > topics_sample = sample(all_topics, randint(1, len(all_topics) - 1)) test/test_assignors.py:664: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = population = {'t1', 't10', 't11', 't12', 't13', 't14', ...}, k = 2 def sample(self, population, k, *, counts=None): """Chooses k unique random elements from a population sequence. Returns a new list containing elements from the population while leaving the original population unchanged. The resulting list is in selection order so that all sub-slices will also be valid random samples. This allows raffle winners (the sample) to be partitioned into grand prize and second place winners (the subslices). Members of the population need not be hashable or unique. If the population contains repeats, then each occurrence is a possible selection in the sample. Repeated elements can be specified one at a time or with the optional counts parameter. For example: sample(['red', 'blue'], counts=[4, 2], k=5) is equivalent to: sample(['red', 'red', 'red', 'red', 'blue', 'blue'], k=5) To choose a sample from a range of integers, use range() for the population argument. This is especially fast and space efficient for sampling from a large population: sample(range(10000000), 60) """ # Sampling without replacement entails tracking either potential # selections (the pool) in a list or previous selections in a set. # When the number of selections is small compared to the # population, then tracking selections is efficient, requiring # only a small set and an occasional reselection. For # a larger number of selections, the pool tracking method is # preferred since the list takes less space than the # set and it doesn't suffer from frequent reselections. # The number of calls to _randbelow() is kept at or near k, the # theoretical minimum. This is important because running time # is dominated by _randbelow() and because it extracts the # least entropy from the underlying random number generators. # Memory requirements are kept to the smaller of a k-length # set or an n-length list. # There are other sampling algorithms that do not require # auxiliary memory, but they were rejected because they made # too many calls to _randbelow(), making them slower and # causing them to eat more entropy than necessary. if not isinstance(population, _Sequence): > raise TypeError("Population must be a sequence. " "For dicts or sets, use sorted(d).") E TypeError: Population must be a sequence. For dicts or sets, use sorted(d). /usr/lib64/python3.11/random.py:439: TypeError ______ test_reassignment_with_random_subscriptions_and_changes[24-14-20] _______ mocker = execution_number = 24, n_topics = 14, n_consumers = 20 @pytest.mark.parametrize( 'execution_number,n_topics,n_consumers', [(i, randint(10, 20), randint(20, 40)) for i in range(100)] ) def test_reassignment_with_random_subscriptions_and_changes(mocker, execution_number, n_topics, n_consumers): all_topics = set(['t{}'.format(i) for i in range(1, n_topics + 1)]) partitions = dict([(t, set(range(1, i + 1))) for i, t in enumerate(all_topics)]) cluster = create_cluster(mocker, topics=all_topics, topic_partitions_lambda=lambda t: partitions[t]) subscriptions = defaultdict(set) for i in range(n_consumers): > topics_sample = sample(all_topics, randint(1, len(all_topics) - 1)) test/test_assignors.py:664: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = population = {'t1', 't10', 't11', 't12', 't13', 't14', ...}, k = 8 def sample(self, population, k, *, counts=None): """Chooses k unique random elements from a population sequence. Returns a new list containing elements from the population while leaving the original population unchanged. The resulting list is in selection order so that all sub-slices will also be valid random samples. This allows raffle winners (the sample) to be partitioned into grand prize and second place winners (the subslices). Members of the population need not be hashable or unique. If the population contains repeats, then each occurrence is a possible selection in the sample. Repeated elements can be specified one at a time or with the optional counts parameter. For example: sample(['red', 'blue'], counts=[4, 2], k=5) is equivalent to: sample(['red', 'red', 'red', 'red', 'blue', 'blue'], k=5) To choose a sample from a range of integers, use range() for the population argument. This is especially fast and space efficient for sampling from a large population: sample(range(10000000), 60) """ # Sampling without replacement entails tracking either potential # selections (the pool) in a list or previous selections in a set. # When the number of selections is small compared to the # population, then tracking selections is efficient, requiring # only a small set and an occasional reselection. For # a larger number of selections, the pool tracking method is # preferred since the list takes less space than the # set and it doesn't suffer from frequent reselections. # The number of calls to _randbelow() is kept at or near k, the # theoretical minimum. This is important because running time # is dominated by _randbelow() and because it extracts the # least entropy from the underlying random number generators. # Memory requirements are kept to the smaller of a k-length # set or an n-length list. # There are other sampling algorithms that do not require # auxiliary memory, but they were rejected because they made # too many calls to _randbelow(), making them slower and # causing them to eat more entropy than necessary. if not isinstance(population, _Sequence): > raise TypeError("Population must be a sequence. " "For dicts or sets, use sorted(d).") E TypeError: Population must be a sequence. For dicts or sets, use sorted(d). /usr/lib64/python3.11/random.py:439: TypeError ______ test_reassignment_with_random_subscriptions_and_changes[25-18-36] _______ mocker = execution_number = 25, n_topics = 18, n_consumers = 36 @pytest.mark.parametrize( 'execution_number,n_topics,n_consumers', [(i, randint(10, 20), randint(20, 40)) for i in range(100)] ) def test_reassignment_with_random_subscriptions_and_changes(mocker, execution_number, n_topics, n_consumers): all_topics = set(['t{}'.format(i) for i in range(1, n_topics + 1)]) partitions = dict([(t, set(range(1, i + 1))) for i, t in enumerate(all_topics)]) cluster = create_cluster(mocker, topics=all_topics, topic_partitions_lambda=lambda t: partitions[t]) subscriptions = defaultdict(set) for i in range(n_consumers): > topics_sample = sample(all_topics, randint(1, len(all_topics) - 1)) test/test_assignors.py:664: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = population = {'t1', 't10', 't11', 't12', 't13', 't14', ...}, k = 11 def sample(self, population, k, *, counts=None): """Chooses k unique random elements from a population sequence. Returns a new list containing elements from the population while leaving the original population unchanged. The resulting list is in selection order so that all sub-slices will also be valid random samples. This allows raffle winners (the sample) to be partitioned into grand prize and second place winners (the subslices). Members of the population need not be hashable or unique. If the population contains repeats, then each occurrence is a possible selection in the sample. Repeated elements can be specified one at a time or with the optional counts parameter. For example: sample(['red', 'blue'], counts=[4, 2], k=5) is equivalent to: sample(['red', 'red', 'red', 'red', 'blue', 'blue'], k=5) To choose a sample from a range of integers, use range() for the population argument. This is especially fast and space efficient for sampling from a large population: sample(range(10000000), 60) """ # Sampling without replacement entails tracking either potential # selections (the pool) in a list or previous selections in a set. # When the number of selections is small compared to the # population, then tracking selections is efficient, requiring # only a small set and an occasional reselection. For # a larger number of selections, the pool tracking method is # preferred since the list takes less space than the # set and it doesn't suffer from frequent reselections. # The number of calls to _randbelow() is kept at or near k, the # theoretical minimum. This is important because running time # is dominated by _randbelow() and because it extracts the # least entropy from the underlying random number generators. # Memory requirements are kept to the smaller of a k-length # set or an n-length list. # There are other sampling algorithms that do not require # auxiliary memory, but they were rejected because they made # too many calls to _randbelow(), making them slower and # causing them to eat more entropy than necessary. if not isinstance(population, _Sequence): > raise TypeError("Population must be a sequence. " "For dicts or sets, use sorted(d).") E TypeError: Population must be a sequence. For dicts or sets, use sorted(d). /usr/lib64/python3.11/random.py:439: TypeError ______ test_reassignment_with_random_subscriptions_and_changes[26-10-33] _______ mocker = execution_number = 26, n_topics = 10, n_consumers = 33 @pytest.mark.parametrize( 'execution_number,n_topics,n_consumers', [(i, randint(10, 20), randint(20, 40)) for i in range(100)] ) def test_reassignment_with_random_subscriptions_and_changes(mocker, execution_number, n_topics, n_consumers): all_topics = set(['t{}'.format(i) for i in range(1, n_topics + 1)]) partitions = dict([(t, set(range(1, i + 1))) for i, t in enumerate(all_topics)]) cluster = create_cluster(mocker, topics=all_topics, topic_partitions_lambda=lambda t: partitions[t]) subscriptions = defaultdict(set) for i in range(n_consumers): > topics_sample = sample(all_topics, randint(1, len(all_topics) - 1)) test/test_assignors.py:664: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = population = {'t1', 't10', 't2', 't3', 't4', 't5', ...}, k = 8 def sample(self, population, k, *, counts=None): """Chooses k unique random elements from a population sequence. Returns a new list containing elements from the population while leaving the original population unchanged. The resulting list is in selection order so that all sub-slices will also be valid random samples. This allows raffle winners (the sample) to be partitioned into grand prize and second place winners (the subslices). Members of the population need not be hashable or unique. If the population contains repeats, then each occurrence is a possible selection in the sample. Repeated elements can be specified one at a time or with the optional counts parameter. For example: sample(['red', 'blue'], counts=[4, 2], k=5) is equivalent to: sample(['red', 'red', 'red', 'red', 'blue', 'blue'], k=5) To choose a sample from a range of integers, use range() for the population argument. This is especially fast and space efficient for sampling from a large population: sample(range(10000000), 60) """ # Sampling without replacement entails tracking either potential # selections (the pool) in a list or previous selections in a set. # When the number of selections is small compared to the # population, then tracking selections is efficient, requiring # only a small set and an occasional reselection. For # a larger number of selections, the pool tracking method is # preferred since the list takes less space than the # set and it doesn't suffer from frequent reselections. # The number of calls to _randbelow() is kept at or near k, the # theoretical minimum. This is important because running time # is dominated by _randbelow() and because it extracts the # least entropy from the underlying random number generators. # Memory requirements are kept to the smaller of a k-length # set or an n-length list. # There are other sampling algorithms that do not require # auxiliary memory, but they were rejected because they made # too many calls to _randbelow(), making them slower and # causing them to eat more entropy than necessary. if not isinstance(population, _Sequence): > raise TypeError("Population must be a sequence. " "For dicts or sets, use sorted(d).") E TypeError: Population must be a sequence. For dicts or sets, use sorted(d). /usr/lib64/python3.11/random.py:439: TypeError ______ test_reassignment_with_random_subscriptions_and_changes[27-13-27] _______ mocker = execution_number = 27, n_topics = 13, n_consumers = 27 @pytest.mark.parametrize( 'execution_number,n_topics,n_consumers', [(i, randint(10, 20), randint(20, 40)) for i in range(100)] ) def test_reassignment_with_random_subscriptions_and_changes(mocker, execution_number, n_topics, n_consumers): all_topics = set(['t{}'.format(i) for i in range(1, n_topics + 1)]) partitions = dict([(t, set(range(1, i + 1))) for i, t in enumerate(all_topics)]) cluster = create_cluster(mocker, topics=all_topics, topic_partitions_lambda=lambda t: partitions[t]) subscriptions = defaultdict(set) for i in range(n_consumers): > topics_sample = sample(all_topics, randint(1, len(all_topics) - 1)) test/test_assignors.py:664: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = population = {'t1', 't10', 't11', 't12', 't13', 't2', ...}, k = 9 def sample(self, population, k, *, counts=None): """Chooses k unique random elements from a population sequence. Returns a new list containing elements from the population while leaving the original population unchanged. The resulting list is in selection order so that all sub-slices will also be valid random samples. This allows raffle winners (the sample) to be partitioned into grand prize and second place winners (the subslices). Members of the population need not be hashable or unique. If the population contains repeats, then each occurrence is a possible selection in the sample. Repeated elements can be specified one at a time or with the optional counts parameter. For example: sample(['red', 'blue'], counts=[4, 2], k=5) is equivalent to: sample(['red', 'red', 'red', 'red', 'blue', 'blue'], k=5) To choose a sample from a range of integers, use range() for the population argument. This is especially fast and space efficient for sampling from a large population: sample(range(10000000), 60) """ # Sampling without replacement entails tracking either potential # selections (the pool) in a list or previous selections in a set. # When the number of selections is small compared to the # population, then tracking selections is efficient, requiring # only a small set and an occasional reselection. For # a larger number of selections, the pool tracking method is # preferred since the list takes less space than the # set and it doesn't suffer from frequent reselections. # The number of calls to _randbelow() is kept at or near k, the # theoretical minimum. This is important because running time # is dominated by _randbelow() and because it extracts the # least entropy from the underlying random number generators. # Memory requirements are kept to the smaller of a k-length # set or an n-length list. # There are other sampling algorithms that do not require # auxiliary memory, but they were rejected because they made # too many calls to _randbelow(), making them slower and # causing them to eat more entropy than necessary. if not isinstance(population, _Sequence): > raise TypeError("Population must be a sequence. " "For dicts or sets, use sorted(d).") E TypeError: Population must be a sequence. For dicts or sets, use sorted(d). /usr/lib64/python3.11/random.py:439: TypeError ______ test_reassignment_with_random_subscriptions_and_changes[28-12-40] _______ mocker = execution_number = 28, n_topics = 12, n_consumers = 40 @pytest.mark.parametrize( 'execution_number,n_topics,n_consumers', [(i, randint(10, 20), randint(20, 40)) for i in range(100)] ) def test_reassignment_with_random_subscriptions_and_changes(mocker, execution_number, n_topics, n_consumers): all_topics = set(['t{}'.format(i) for i in range(1, n_topics + 1)]) partitions = dict([(t, set(range(1, i + 1))) for i, t in enumerate(all_topics)]) cluster = create_cluster(mocker, topics=all_topics, topic_partitions_lambda=lambda t: partitions[t]) subscriptions = defaultdict(set) for i in range(n_consumers): > topics_sample = sample(all_topics, randint(1, len(all_topics) - 1)) test/test_assignors.py:664: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = population = {'t1', 't10', 't11', 't12', 't2', 't3', ...}, k = 6 def sample(self, population, k, *, counts=None): """Chooses k unique random elements from a population sequence. Returns a new list containing elements from the population while leaving the original population unchanged. The resulting list is in selection order so that all sub-slices will also be valid random samples. This allows raffle winners (the sample) to be partitioned into grand prize and second place winners (the subslices). Members of the population need not be hashable or unique. If the population contains repeats, then each occurrence is a possible selection in the sample. Repeated elements can be specified one at a time or with the optional counts parameter. For example: sample(['red', 'blue'], counts=[4, 2], k=5) is equivalent to: sample(['red', 'red', 'red', 'red', 'blue', 'blue'], k=5) To choose a sample from a range of integers, use range() for the population argument. This is especially fast and space efficient for sampling from a large population: sample(range(10000000), 60) """ # Sampling without replacement entails tracking either potential # selections (the pool) in a list or previous selections in a set. # When the number of selections is small compared to the # population, then tracking selections is efficient, requiring # only a small set and an occasional reselection. For # a larger number of selections, the pool tracking method is # preferred since the list takes less space than the # set and it doesn't suffer from frequent reselections. # The number of calls to _randbelow() is kept at or near k, the # theoretical minimum. This is important because running time # is dominated by _randbelow() and because it extracts the # least entropy from the underlying random number generators. # Memory requirements are kept to the smaller of a k-length # set or an n-length list. # There are other sampling algorithms that do not require # auxiliary memory, but they were rejected because they made # too many calls to _randbelow(), making them slower and # causing them to eat more entropy than necessary. if not isinstance(population, _Sequence): > raise TypeError("Population must be a sequence. " "For dicts or sets, use sorted(d).") E TypeError: Population must be a sequence. For dicts or sets, use sorted(d). /usr/lib64/python3.11/random.py:439: TypeError ______ test_reassignment_with_random_subscriptions_and_changes[29-18-33] _______ mocker = execution_number = 29, n_topics = 18, n_consumers = 33 @pytest.mark.parametrize( 'execution_number,n_topics,n_consumers', [(i, randint(10, 20), randint(20, 40)) for i in range(100)] ) def test_reassignment_with_random_subscriptions_and_changes(mocker, execution_number, n_topics, n_consumers): all_topics = set(['t{}'.format(i) for i in range(1, n_topics + 1)]) partitions = dict([(t, set(range(1, i + 1))) for i, t in enumerate(all_topics)]) cluster = create_cluster(mocker, topics=all_topics, topic_partitions_lambda=lambda t: partitions[t]) subscriptions = defaultdict(set) for i in range(n_consumers): > topics_sample = sample(all_topics, randint(1, len(all_topics) - 1)) test/test_assignors.py:664: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = population = {'t1', 't10', 't11', 't12', 't13', 't14', ...}, k = 13 def sample(self, population, k, *, counts=None): """Chooses k unique random elements from a population sequence. Returns a new list containing elements from the population while leaving the original population unchanged. The resulting list is in selection order so that all sub-slices will also be valid random samples. This allows raffle winners (the sample) to be partitioned into grand prize and second place winners (the subslices). Members of the population need not be hashable or unique. If the population contains repeats, then each occurrence is a possible selection in the sample. Repeated elements can be specified one at a time or with the optional counts parameter. For example: sample(['red', 'blue'], counts=[4, 2], k=5) is equivalent to: sample(['red', 'red', 'red', 'red', 'blue', 'blue'], k=5) To choose a sample from a range of integers, use range() for the population argument. This is especially fast and space efficient for sampling from a large population: sample(range(10000000), 60) """ # Sampling without replacement entails tracking either potential # selections (the pool) in a list or previous selections in a set. # When the number of selections is small compared to the # population, then tracking selections is efficient, requiring # only a small set and an occasional reselection. For # a larger number of selections, the pool tracking method is # preferred since the list takes less space than the # set and it doesn't suffer from frequent reselections. # The number of calls to _randbelow() is kept at or near k, the # theoretical minimum. This is important because running time # is dominated by _randbelow() and because it extracts the # least entropy from the underlying random number generators. # Memory requirements are kept to the smaller of a k-length # set or an n-length list. # There are other sampling algorithms that do not require # auxiliary memory, but they were rejected because they made # too many calls to _randbelow(), making them slower and # causing them to eat more entropy than necessary. if not isinstance(population, _Sequence): > raise TypeError("Population must be a sequence. " "For dicts or sets, use sorted(d).") E TypeError: Population must be a sequence. For dicts or sets, use sorted(d). /usr/lib64/python3.11/random.py:439: TypeError ______ test_reassignment_with_random_subscriptions_and_changes[30-18-21] _______ mocker = execution_number = 30, n_topics = 18, n_consumers = 21 @pytest.mark.parametrize( 'execution_number,n_topics,n_consumers', [(i, randint(10, 20), randint(20, 40)) for i in range(100)] ) def test_reassignment_with_random_subscriptions_and_changes(mocker, execution_number, n_topics, n_consumers): all_topics = set(['t{}'.format(i) for i in range(1, n_topics + 1)]) partitions = dict([(t, set(range(1, i + 1))) for i, t in enumerate(all_topics)]) cluster = create_cluster(mocker, topics=all_topics, topic_partitions_lambda=lambda t: partitions[t]) subscriptions = defaultdict(set) for i in range(n_consumers): > topics_sample = sample(all_topics, randint(1, len(all_topics) - 1)) test/test_assignors.py:664: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = population = {'t1', 't10', 't11', 't12', 't13', 't14', ...}, k = 2 def sample(self, population, k, *, counts=None): """Chooses k unique random elements from a population sequence. Returns a new list containing elements from the population while leaving the original population unchanged. The resulting list is in selection order so that all sub-slices will also be valid random samples. This allows raffle winners (the sample) to be partitioned into grand prize and second place winners (the subslices). Members of the population need not be hashable or unique. If the population contains repeats, then each occurrence is a possible selection in the sample. Repeated elements can be specified one at a time or with the optional counts parameter. For example: sample(['red', 'blue'], counts=[4, 2], k=5) is equivalent to: sample(['red', 'red', 'red', 'red', 'blue', 'blue'], k=5) To choose a sample from a range of integers, use range() for the population argument. This is especially fast and space efficient for sampling from a large population: sample(range(10000000), 60) """ # Sampling without replacement entails tracking either potential # selections (the pool) in a list or previous selections in a set. # When the number of selections is small compared to the # population, then tracking selections is efficient, requiring # only a small set and an occasional reselection. For # a larger number of selections, the pool tracking method is # preferred since the list takes less space than the # set and it doesn't suffer from frequent reselections. # The number of calls to _randbelow() is kept at or near k, the # theoretical minimum. This is important because running time # is dominated by _randbelow() and because it extracts the # least entropy from the underlying random number generators. # Memory requirements are kept to the smaller of a k-length # set or an n-length list. # There are other sampling algorithms that do not require # auxiliary memory, but they were rejected because they made # too many calls to _randbelow(), making them slower and # causing them to eat more entropy than necessary. if not isinstance(population, _Sequence): > raise TypeError("Population must be a sequence. " "For dicts or sets, use sorted(d).") E TypeError: Population must be a sequence. For dicts or sets, use sorted(d). /usr/lib64/python3.11/random.py:439: TypeError ______ test_reassignment_with_random_subscriptions_and_changes[31-19-22] _______ mocker = execution_number = 31, n_topics = 19, n_consumers = 22 @pytest.mark.parametrize( 'execution_number,n_topics,n_consumers', [(i, randint(10, 20), randint(20, 40)) for i in range(100)] ) def test_reassignment_with_random_subscriptions_and_changes(mocker, execution_number, n_topics, n_consumers): all_topics = set(['t{}'.format(i) for i in range(1, n_topics + 1)]) partitions = dict([(t, set(range(1, i + 1))) for i, t in enumerate(all_topics)]) cluster = create_cluster(mocker, topics=all_topics, topic_partitions_lambda=lambda t: partitions[t]) subscriptions = defaultdict(set) for i in range(n_consumers): > topics_sample = sample(all_topics, randint(1, len(all_topics) - 1)) test/test_assignors.py:664: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = population = {'t1', 't10', 't11', 't12', 't13', 't14', ...}, k = 12 def sample(self, population, k, *, counts=None): """Chooses k unique random elements from a population sequence. Returns a new list containing elements from the population while leaving the original population unchanged. The resulting list is in selection order so that all sub-slices will also be valid random samples. This allows raffle winners (the sample) to be partitioned into grand prize and second place winners (the subslices). Members of the population need not be hashable or unique. If the population contains repeats, then each occurrence is a possible selection in the sample. Repeated elements can be specified one at a time or with the optional counts parameter. For example: sample(['red', 'blue'], counts=[4, 2], k=5) is equivalent to: sample(['red', 'red', 'red', 'red', 'blue', 'blue'], k=5) To choose a sample from a range of integers, use range() for the population argument. This is especially fast and space efficient for sampling from a large population: sample(range(10000000), 60) """ # Sampling without replacement entails tracking either potential # selections (the pool) in a list or previous selections in a set. # When the number of selections is small compared to the # population, then tracking selections is efficient, requiring # only a small set and an occasional reselection. For # a larger number of selections, the pool tracking method is # preferred since the list takes less space than the # set and it doesn't suffer from frequent reselections. # The number of calls to _randbelow() is kept at or near k, the # theoretical minimum. This is important because running time # is dominated by _randbelow() and because it extracts the # least entropy from the underlying random number generators. # Memory requirements are kept to the smaller of a k-length # set or an n-length list. # There are other sampling algorithms that do not require # auxiliary memory, but they were rejected because they made # too many calls to _randbelow(), making them slower and # causing them to eat more entropy than necessary. if not isinstance(population, _Sequence): > raise TypeError("Population must be a sequence. " "For dicts or sets, use sorted(d).") E TypeError: Population must be a sequence. For dicts or sets, use sorted(d). /usr/lib64/python3.11/random.py:439: TypeError ______ test_reassignment_with_random_subscriptions_and_changes[32-18-20] _______ mocker = execution_number = 32, n_topics = 18, n_consumers = 20 @pytest.mark.parametrize( 'execution_number,n_topics,n_consumers', [(i, randint(10, 20), randint(20, 40)) for i in range(100)] ) def test_reassignment_with_random_subscriptions_and_changes(mocker, execution_number, n_topics, n_consumers): all_topics = set(['t{}'.format(i) for i in range(1, n_topics + 1)]) partitions = dict([(t, set(range(1, i + 1))) for i, t in enumerate(all_topics)]) cluster = create_cluster(mocker, topics=all_topics, topic_partitions_lambda=lambda t: partitions[t]) subscriptions = defaultdict(set) for i in range(n_consumers): > topics_sample = sample(all_topics, randint(1, len(all_topics) - 1)) test/test_assignors.py:664: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = population = {'t1', 't10', 't11', 't12', 't13', 't14', ...}, k = 14 def sample(self, population, k, *, counts=None): """Chooses k unique random elements from a population sequence. Returns a new list containing elements from the population while leaving the original population unchanged. The resulting list is in selection order so that all sub-slices will also be valid random samples. This allows raffle winners (the sample) to be partitioned into grand prize and second place winners (the subslices). Members of the population need not be hashable or unique. If the population contains repeats, then each occurrence is a possible selection in the sample. Repeated elements can be specified one at a time or with the optional counts parameter. For example: sample(['red', 'blue'], counts=[4, 2], k=5) is equivalent to: sample(['red', 'red', 'red', 'red', 'blue', 'blue'], k=5) To choose a sample from a range of integers, use range() for the population argument. This is especially fast and space efficient for sampling from a large population: sample(range(10000000), 60) """ # Sampling without replacement entails tracking either potential # selections (the pool) in a list or previous selections in a set. # When the number of selections is small compared to the # population, then tracking selections is efficient, requiring # only a small set and an occasional reselection. For # a larger number of selections, the pool tracking method is # preferred since the list takes less space than the # set and it doesn't suffer from frequent reselections. # The number of calls to _randbelow() is kept at or near k, the # theoretical minimum. This is important because running time # is dominated by _randbelow() and because it extracts the # least entropy from the underlying random number generators. # Memory requirements are kept to the smaller of a k-length # set or an n-length list. # There are other sampling algorithms that do not require # auxiliary memory, but they were rejected because they made # too many calls to _randbelow(), making them slower and # causing them to eat more entropy than necessary. if not isinstance(population, _Sequence): > raise TypeError("Population must be a sequence. " "For dicts or sets, use sorted(d).") E TypeError: Population must be a sequence. For dicts or sets, use sorted(d). /usr/lib64/python3.11/random.py:439: TypeError ______ test_reassignment_with_random_subscriptions_and_changes[33-11-24] _______ mocker = execution_number = 33, n_topics = 11, n_consumers = 24 @pytest.mark.parametrize( 'execution_number,n_topics,n_consumers', [(i, randint(10, 20), randint(20, 40)) for i in range(100)] ) def test_reassignment_with_random_subscriptions_and_changes(mocker, execution_number, n_topics, n_consumers): all_topics = set(['t{}'.format(i) for i in range(1, n_topics + 1)]) partitions = dict([(t, set(range(1, i + 1))) for i, t in enumerate(all_topics)]) cluster = create_cluster(mocker, topics=all_topics, topic_partitions_lambda=lambda t: partitions[t]) subscriptions = defaultdict(set) for i in range(n_consumers): > topics_sample = sample(all_topics, randint(1, len(all_topics) - 1)) test/test_assignors.py:664: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = population = {'t1', 't10', 't11', 't2', 't3', 't4', ...}, k = 2 def sample(self, population, k, *, counts=None): """Chooses k unique random elements from a population sequence. Returns a new list containing elements from the population while leaving the original population unchanged. The resulting list is in selection order so that all sub-slices will also be valid random samples. This allows raffle winners (the sample) to be partitioned into grand prize and second place winners (the subslices). Members of the population need not be hashable or unique. If the population contains repeats, then each occurrence is a possible selection in the sample. Repeated elements can be specified one at a time or with the optional counts parameter. For example: sample(['red', 'blue'], counts=[4, 2], k=5) is equivalent to: sample(['red', 'red', 'red', 'red', 'blue', 'blue'], k=5) To choose a sample from a range of integers, use range() for the population argument. This is especially fast and space efficient for sampling from a large population: sample(range(10000000), 60) """ # Sampling without replacement entails tracking either potential # selections (the pool) in a list or previous selections in a set. # When the number of selections is small compared to the # population, then tracking selections is efficient, requiring # only a small set and an occasional reselection. For # a larger number of selections, the pool tracking method is # preferred since the list takes less space than the # set and it doesn't suffer from frequent reselections. # The number of calls to _randbelow() is kept at or near k, the # theoretical minimum. This is important because running time # is dominated by _randbelow() and because it extracts the # least entropy from the underlying random number generators. # Memory requirements are kept to the smaller of a k-length # set or an n-length list. # There are other sampling algorithms that do not require # auxiliary memory, but they were rejected because they made # too many calls to _randbelow(), making them slower and # causing them to eat more entropy than necessary. if not isinstance(population, _Sequence): > raise TypeError("Population must be a sequence. " "For dicts or sets, use sorted(d).") E TypeError: Population must be a sequence. For dicts or sets, use sorted(d). /usr/lib64/python3.11/random.py:439: TypeError ______ test_reassignment_with_random_subscriptions_and_changes[34-19-34] _______ mocker = execution_number = 34, n_topics = 19, n_consumers = 34 @pytest.mark.parametrize( 'execution_number,n_topics,n_consumers', [(i, randint(10, 20), randint(20, 40)) for i in range(100)] ) def test_reassignment_with_random_subscriptions_and_changes(mocker, execution_number, n_topics, n_consumers): all_topics = set(['t{}'.format(i) for i in range(1, n_topics + 1)]) partitions = dict([(t, set(range(1, i + 1))) for i, t in enumerate(all_topics)]) cluster = create_cluster(mocker, topics=all_topics, topic_partitions_lambda=lambda t: partitions[t]) subscriptions = defaultdict(set) for i in range(n_consumers): > topics_sample = sample(all_topics, randint(1, len(all_topics) - 1)) test/test_assignors.py:664: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = population = {'t1', 't10', 't11', 't12', 't13', 't14', ...}, k = 1 def sample(self, population, k, *, counts=None): """Chooses k unique random elements from a population sequence. Returns a new list containing elements from the population while leaving the original population unchanged. The resulting list is in selection order so that all sub-slices will also be valid random samples. This allows raffle winners (the sample) to be partitioned into grand prize and second place winners (the subslices). Members of the population need not be hashable or unique. If the population contains repeats, then each occurrence is a possible selection in the sample. Repeated elements can be specified one at a time or with the optional counts parameter. For example: sample(['red', 'blue'], counts=[4, 2], k=5) is equivalent to: sample(['red', 'red', 'red', 'red', 'blue', 'blue'], k=5) To choose a sample from a range of integers, use range() for the population argument. This is especially fast and space efficient for sampling from a large population: sample(range(10000000), 60) """ # Sampling without replacement entails tracking either potential # selections (the pool) in a list or previous selections in a set. # When the number of selections is small compared to the # population, then tracking selections is efficient, requiring # only a small set and an occasional reselection. For # a larger number of selections, the pool tracking method is # preferred since the list takes less space than the # set and it doesn't suffer from frequent reselections. # The number of calls to _randbelow() is kept at or near k, the # theoretical minimum. This is important because running time # is dominated by _randbelow() and because it extracts the # least entropy from the underlying random number generators. # Memory requirements are kept to the smaller of a k-length # set or an n-length list. # There are other sampling algorithms that do not require # auxiliary memory, but they were rejected because they made # too many calls to _randbelow(), making them slower and # causing them to eat more entropy than necessary. if not isinstance(population, _Sequence): > raise TypeError("Population must be a sequence. " "For dicts or sets, use sorted(d).") E TypeError: Population must be a sequence. For dicts or sets, use sorted(d). /usr/lib64/python3.11/random.py:439: TypeError ______ test_reassignment_with_random_subscriptions_and_changes[35-18-35] _______ mocker = execution_number = 35, n_topics = 18, n_consumers = 35 @pytest.mark.parametrize( 'execution_number,n_topics,n_consumers', [(i, randint(10, 20), randint(20, 40)) for i in range(100)] ) def test_reassignment_with_random_subscriptions_and_changes(mocker, execution_number, n_topics, n_consumers): all_topics = set(['t{}'.format(i) for i in range(1, n_topics + 1)]) partitions = dict([(t, set(range(1, i + 1))) for i, t in enumerate(all_topics)]) cluster = create_cluster(mocker, topics=all_topics, topic_partitions_lambda=lambda t: partitions[t]) subscriptions = defaultdict(set) for i in range(n_consumers): > topics_sample = sample(all_topics, randint(1, len(all_topics) - 1)) test/test_assignors.py:664: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = population = {'t1', 't10', 't11', 't12', 't13', 't14', ...}, k = 9 def sample(self, population, k, *, counts=None): """Chooses k unique random elements from a population sequence. Returns a new list containing elements from the population while leaving the original population unchanged. The resulting list is in selection order so that all sub-slices will also be valid random samples. This allows raffle winners (the sample) to be partitioned into grand prize and second place winners (the subslices). Members of the population need not be hashable or unique. If the population contains repeats, then each occurrence is a possible selection in the sample. Repeated elements can be specified one at a time or with the optional counts parameter. For example: sample(['red', 'blue'], counts=[4, 2], k=5) is equivalent to: sample(['red', 'red', 'red', 'red', 'blue', 'blue'], k=5) To choose a sample from a range of integers, use range() for the population argument. This is especially fast and space efficient for sampling from a large population: sample(range(10000000), 60) """ # Sampling without replacement entails tracking either potential # selections (the pool) in a list or previous selections in a set. # When the number of selections is small compared to the # population, then tracking selections is efficient, requiring # only a small set and an occasional reselection. For # a larger number of selections, the pool tracking method is # preferred since the list takes less space than the # set and it doesn't suffer from frequent reselections. # The number of calls to _randbelow() is kept at or near k, the # theoretical minimum. This is important because running time # is dominated by _randbelow() and because it extracts the # least entropy from the underlying random number generators. # Memory requirements are kept to the smaller of a k-length # set or an n-length list. # There are other sampling algorithms that do not require # auxiliary memory, but they were rejected because they made # too many calls to _randbelow(), making them slower and # causing them to eat more entropy than necessary. if not isinstance(population, _Sequence): > raise TypeError("Population must be a sequence. " "For dicts or sets, use sorted(d).") E TypeError: Population must be a sequence. For dicts or sets, use sorted(d). /usr/lib64/python3.11/random.py:439: TypeError ______ test_reassignment_with_random_subscriptions_and_changes[36-16-26] _______ mocker = execution_number = 36, n_topics = 16, n_consumers = 26 @pytest.mark.parametrize( 'execution_number,n_topics,n_consumers', [(i, randint(10, 20), randint(20, 40)) for i in range(100)] ) def test_reassignment_with_random_subscriptions_and_changes(mocker, execution_number, n_topics, n_consumers): all_topics = set(['t{}'.format(i) for i in range(1, n_topics + 1)]) partitions = dict([(t, set(range(1, i + 1))) for i, t in enumerate(all_topics)]) cluster = create_cluster(mocker, topics=all_topics, topic_partitions_lambda=lambda t: partitions[t]) subscriptions = defaultdict(set) for i in range(n_consumers): > topics_sample = sample(all_topics, randint(1, len(all_topics) - 1)) test/test_assignors.py:664: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = population = {'t1', 't10', 't11', 't12', 't13', 't14', ...}, k = 7 def sample(self, population, k, *, counts=None): """Chooses k unique random elements from a population sequence. Returns a new list containing elements from the population while leaving the original population unchanged. The resulting list is in selection order so that all sub-slices will also be valid random samples. This allows raffle winners (the sample) to be partitioned into grand prize and second place winners (the subslices). Members of the population need not be hashable or unique. If the population contains repeats, then each occurrence is a possible selection in the sample. Repeated elements can be specified one at a time or with the optional counts parameter. For example: sample(['red', 'blue'], counts=[4, 2], k=5) is equivalent to: sample(['red', 'red', 'red', 'red', 'blue', 'blue'], k=5) To choose a sample from a range of integers, use range() for the population argument. This is especially fast and space efficient for sampling from a large population: sample(range(10000000), 60) """ # Sampling without replacement entails tracking either potential # selections (the pool) in a list or previous selections in a set. # When the number of selections is small compared to the # population, then tracking selections is efficient, requiring # only a small set and an occasional reselection. For # a larger number of selections, the pool tracking method is # preferred since the list takes less space than the # set and it doesn't suffer from frequent reselections. # The number of calls to _randbelow() is kept at or near k, the # theoretical minimum. This is important because running time # is dominated by _randbelow() and because it extracts the # least entropy from the underlying random number generators. # Memory requirements are kept to the smaller of a k-length # set or an n-length list. # There are other sampling algorithms that do not require # auxiliary memory, but they were rejected because they made # too many calls to _randbelow(), making them slower and # causing them to eat more entropy than necessary. if not isinstance(population, _Sequence): > raise TypeError("Population must be a sequence. " "For dicts or sets, use sorted(d).") E TypeError: Population must be a sequence. For dicts or sets, use sorted(d). /usr/lib64/python3.11/random.py:439: TypeError ______ test_reassignment_with_random_subscriptions_and_changes[37-19-36] _______ mocker = execution_number = 37, n_topics = 19, n_consumers = 36 @pytest.mark.parametrize( 'execution_number,n_topics,n_consumers', [(i, randint(10, 20), randint(20, 40)) for i in range(100)] ) def test_reassignment_with_random_subscriptions_and_changes(mocker, execution_number, n_topics, n_consumers): all_topics = set(['t{}'.format(i) for i in range(1, n_topics + 1)]) partitions = dict([(t, set(range(1, i + 1))) for i, t in enumerate(all_topics)]) cluster = create_cluster(mocker, topics=all_topics, topic_partitions_lambda=lambda t: partitions[t]) subscriptions = defaultdict(set) for i in range(n_consumers): > topics_sample = sample(all_topics, randint(1, len(all_topics) - 1)) test/test_assignors.py:664: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = population = {'t1', 't10', 't11', 't12', 't13', 't14', ...}, k = 5 def sample(self, population, k, *, counts=None): """Chooses k unique random elements from a population sequence. Returns a new list containing elements from the population while leaving the original population unchanged. The resulting list is in selection order so that all sub-slices will also be valid random samples. This allows raffle winners (the sample) to be partitioned into grand prize and second place winners (the subslices). Members of the population need not be hashable or unique. If the population contains repeats, then each occurrence is a possible selection in the sample. Repeated elements can be specified one at a time or with the optional counts parameter. For example: sample(['red', 'blue'], counts=[4, 2], k=5) is equivalent to: sample(['red', 'red', 'red', 'red', 'blue', 'blue'], k=5) To choose a sample from a range of integers, use range() for the population argument. This is especially fast and space efficient for sampling from a large population: sample(range(10000000), 60) """ # Sampling without replacement entails tracking either potential # selections (the pool) in a list or previous selections in a set. # When the number of selections is small compared to the # population, then tracking selections is efficient, requiring # only a small set and an occasional reselection. For # a larger number of selections, the pool tracking method is # preferred since the list takes less space than the # set and it doesn't suffer from frequent reselections. # The number of calls to _randbelow() is kept at or near k, the # theoretical minimum. This is important because running time # is dominated by _randbelow() and because it extracts the # least entropy from the underlying random number generators. # Memory requirements are kept to the smaller of a k-length # set or an n-length list. # There are other sampling algorithms that do not require # auxiliary memory, but they were rejected because they made # too many calls to _randbelow(), making them slower and # causing them to eat more entropy than necessary. if not isinstance(population, _Sequence): > raise TypeError("Population must be a sequence. " "For dicts or sets, use sorted(d).") E TypeError: Population must be a sequence. For dicts or sets, use sorted(d). /usr/lib64/python3.11/random.py:439: TypeError ______ test_reassignment_with_random_subscriptions_and_changes[38-20-32] _______ mocker = execution_number = 38, n_topics = 20, n_consumers = 32 @pytest.mark.parametrize( 'execution_number,n_topics,n_consumers', [(i, randint(10, 20), randint(20, 40)) for i in range(100)] ) def test_reassignment_with_random_subscriptions_and_changes(mocker, execution_number, n_topics, n_consumers): all_topics = set(['t{}'.format(i) for i in range(1, n_topics + 1)]) partitions = dict([(t, set(range(1, i + 1))) for i, t in enumerate(all_topics)]) cluster = create_cluster(mocker, topics=all_topics, topic_partitions_lambda=lambda t: partitions[t]) subscriptions = defaultdict(set) for i in range(n_consumers): > topics_sample = sample(all_topics, randint(1, len(all_topics) - 1)) test/test_assignors.py:664: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = population = {'t1', 't10', 't11', 't12', 't13', 't14', ...}, k = 6 def sample(self, population, k, *, counts=None): """Chooses k unique random elements from a population sequence. Returns a new list containing elements from the population while leaving the original population unchanged. The resulting list is in selection order so that all sub-slices will also be valid random samples. This allows raffle winners (the sample) to be partitioned into grand prize and second place winners (the subslices). Members of the population need not be hashable or unique. If the population contains repeats, then each occurrence is a possible selection in the sample. Repeated elements can be specified one at a time or with the optional counts parameter. For example: sample(['red', 'blue'], counts=[4, 2], k=5) is equivalent to: sample(['red', 'red', 'red', 'red', 'blue', 'blue'], k=5) To choose a sample from a range of integers, use range() for the population argument. This is especially fast and space efficient for sampling from a large population: sample(range(10000000), 60) """ # Sampling without replacement entails tracking either potential # selections (the pool) in a list or previous selections in a set. # When the number of selections is small compared to the # population, then tracking selections is efficient, requiring # only a small set and an occasional reselection. For # a larger number of selections, the pool tracking method is # preferred since the list takes less space than the # set and it doesn't suffer from frequent reselections. # The number of calls to _randbelow() is kept at or near k, the # theoretical minimum. This is important because running time # is dominated by _randbelow() and because it extracts the # least entropy from the underlying random number generators. # Memory requirements are kept to the smaller of a k-length # set or an n-length list. # There are other sampling algorithms that do not require # auxiliary memory, but they were rejected because they made # too many calls to _randbelow(), making them slower and # causing them to eat more entropy than necessary. if not isinstance(population, _Sequence): > raise TypeError("Population must be a sequence. " "For dicts or sets, use sorted(d).") E TypeError: Population must be a sequence. For dicts or sets, use sorted(d). /usr/lib64/python3.11/random.py:439: TypeError ______ test_reassignment_with_random_subscriptions_and_changes[39-12-31] _______ mocker = execution_number = 39, n_topics = 12, n_consumers = 31 @pytest.mark.parametrize( 'execution_number,n_topics,n_consumers', [(i, randint(10, 20), randint(20, 40)) for i in range(100)] ) def test_reassignment_with_random_subscriptions_and_changes(mocker, execution_number, n_topics, n_consumers): all_topics = set(['t{}'.format(i) for i in range(1, n_topics + 1)]) partitions = dict([(t, set(range(1, i + 1))) for i, t in enumerate(all_topics)]) cluster = create_cluster(mocker, topics=all_topics, topic_partitions_lambda=lambda t: partitions[t]) subscriptions = defaultdict(set) for i in range(n_consumers): > topics_sample = sample(all_topics, randint(1, len(all_topics) - 1)) test/test_assignors.py:664: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = population = {'t1', 't10', 't11', 't12', 't2', 't3', ...}, k = 9 def sample(self, population, k, *, counts=None): """Chooses k unique random elements from a population sequence. Returns a new list containing elements from the population while leaving the original population unchanged. The resulting list is in selection order so that all sub-slices will also be valid random samples. This allows raffle winners (the sample) to be partitioned into grand prize and second place winners (the subslices). Members of the population need not be hashable or unique. If the population contains repeats, then each occurrence is a possible selection in the sample. Repeated elements can be specified one at a time or with the optional counts parameter. For example: sample(['red', 'blue'], counts=[4, 2], k=5) is equivalent to: sample(['red', 'red', 'red', 'red', 'blue', 'blue'], k=5) To choose a sample from a range of integers, use range() for the population argument. This is especially fast and space efficient for sampling from a large population: sample(range(10000000), 60) """ # Sampling without replacement entails tracking either potential # selections (the pool) in a list or previous selections in a set. # When the number of selections is small compared to the # population, then tracking selections is efficient, requiring # only a small set and an occasional reselection. For # a larger number of selections, the pool tracking method is # preferred since the list takes less space than the # set and it doesn't suffer from frequent reselections. # The number of calls to _randbelow() is kept at or near k, the # theoretical minimum. This is important because running time # is dominated by _randbelow() and because it extracts the # least entropy from the underlying random number generators. # Memory requirements are kept to the smaller of a k-length # set or an n-length list. # There are other sampling algorithms that do not require # auxiliary memory, but they were rejected because they made # too many calls to _randbelow(), making them slower and # causing them to eat more entropy than necessary. if not isinstance(population, _Sequence): > raise TypeError("Population must be a sequence. " "For dicts or sets, use sorted(d).") E TypeError: Population must be a sequence. For dicts or sets, use sorted(d). /usr/lib64/python3.11/random.py:439: TypeError ______ test_reassignment_with_random_subscriptions_and_changes[40-20-37] _______ mocker = execution_number = 40, n_topics = 20, n_consumers = 37 @pytest.mark.parametrize( 'execution_number,n_topics,n_consumers', [(i, randint(10, 20), randint(20, 40)) for i in range(100)] ) def test_reassignment_with_random_subscriptions_and_changes(mocker, execution_number, n_topics, n_consumers): all_topics = set(['t{}'.format(i) for i in range(1, n_topics + 1)]) partitions = dict([(t, set(range(1, i + 1))) for i, t in enumerate(all_topics)]) cluster = create_cluster(mocker, topics=all_topics, topic_partitions_lambda=lambda t: partitions[t]) subscriptions = defaultdict(set) for i in range(n_consumers): > topics_sample = sample(all_topics, randint(1, len(all_topics) - 1)) test/test_assignors.py:664: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = population = {'t1', 't10', 't11', 't12', 't13', 't14', ...}, k = 4 def sample(self, population, k, *, counts=None): """Chooses k unique random elements from a population sequence. Returns a new list containing elements from the population while leaving the original population unchanged. The resulting list is in selection order so that all sub-slices will also be valid random samples. This allows raffle winners (the sample) to be partitioned into grand prize and second place winners (the subslices). Members of the population need not be hashable or unique. If the population contains repeats, then each occurrence is a possible selection in the sample. Repeated elements can be specified one at a time or with the optional counts parameter. For example: sample(['red', 'blue'], counts=[4, 2], k=5) is equivalent to: sample(['red', 'red', 'red', 'red', 'blue', 'blue'], k=5) To choose a sample from a range of integers, use range() for the population argument. This is especially fast and space efficient for sampling from a large population: sample(range(10000000), 60) """ # Sampling without replacement entails tracking either potential # selections (the pool) in a list or previous selections in a set. # When the number of selections is small compared to the # population, then tracking selections is efficient, requiring # only a small set and an occasional reselection. For # a larger number of selections, the pool tracking method is # preferred since the list takes less space than the # set and it doesn't suffer from frequent reselections. # The number of calls to _randbelow() is kept at or near k, the # theoretical minimum. This is important because running time # is dominated by _randbelow() and because it extracts the # least entropy from the underlying random number generators. # Memory requirements are kept to the smaller of a k-length # set or an n-length list. # There are other sampling algorithms that do not require # auxiliary memory, but they were rejected because they made # too many calls to _randbelow(), making them slower and # causing them to eat more entropy than necessary. if not isinstance(population, _Sequence): > raise TypeError("Population must be a sequence. " "For dicts or sets, use sorted(d).") E TypeError: Population must be a sequence. For dicts or sets, use sorted(d). /usr/lib64/python3.11/random.py:439: TypeError ______ test_reassignment_with_random_subscriptions_and_changes[41-12-32] _______ mocker = execution_number = 41, n_topics = 12, n_consumers = 32 @pytest.mark.parametrize( 'execution_number,n_topics,n_consumers', [(i, randint(10, 20), randint(20, 40)) for i in range(100)] ) def test_reassignment_with_random_subscriptions_and_changes(mocker, execution_number, n_topics, n_consumers): all_topics = set(['t{}'.format(i) for i in range(1, n_topics + 1)]) partitions = dict([(t, set(range(1, i + 1))) for i, t in enumerate(all_topics)]) cluster = create_cluster(mocker, topics=all_topics, topic_partitions_lambda=lambda t: partitions[t]) subscriptions = defaultdict(set) for i in range(n_consumers): > topics_sample = sample(all_topics, randint(1, len(all_topics) - 1)) test/test_assignors.py:664: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = population = {'t1', 't10', 't11', 't12', 't2', 't3', ...}, k = 8 def sample(self, population, k, *, counts=None): """Chooses k unique random elements from a population sequence. Returns a new list containing elements from the population while leaving the original population unchanged. The resulting list is in selection order so that all sub-slices will also be valid random samples. This allows raffle winners (the sample) to be partitioned into grand prize and second place winners (the subslices). Members of the population need not be hashable or unique. If the population contains repeats, then each occurrence is a possible selection in the sample. Repeated elements can be specified one at a time or with the optional counts parameter. For example: sample(['red', 'blue'], counts=[4, 2], k=5) is equivalent to: sample(['red', 'red', 'red', 'red', 'blue', 'blue'], k=5) To choose a sample from a range of integers, use range() for the population argument. This is especially fast and space efficient for sampling from a large population: sample(range(10000000), 60) """ # Sampling without replacement entails tracking either potential # selections (the pool) in a list or previous selections in a set. # When the number of selections is small compared to the # population, then tracking selections is efficient, requiring # only a small set and an occasional reselection. For # a larger number of selections, the pool tracking method is # preferred since the list takes less space than the # set and it doesn't suffer from frequent reselections. # The number of calls to _randbelow() is kept at or near k, the # theoretical minimum. This is important because running time # is dominated by _randbelow() and because it extracts the # least entropy from the underlying random number generators. # Memory requirements are kept to the smaller of a k-length # set or an n-length list. # There are other sampling algorithms that do not require # auxiliary memory, but they were rejected because they made # too many calls to _randbelow(), making them slower and # causing them to eat more entropy than necessary. if not isinstance(population, _Sequence): > raise TypeError("Population must be a sequence. " "For dicts or sets, use sorted(d).") E TypeError: Population must be a sequence. For dicts or sets, use sorted(d). /usr/lib64/python3.11/random.py:439: TypeError ______ test_reassignment_with_random_subscriptions_and_changes[42-14-26] _______ mocker = execution_number = 42, n_topics = 14, n_consumers = 26 @pytest.mark.parametrize( 'execution_number,n_topics,n_consumers', [(i, randint(10, 20), randint(20, 40)) for i in range(100)] ) def test_reassignment_with_random_subscriptions_and_changes(mocker, execution_number, n_topics, n_consumers): all_topics = set(['t{}'.format(i) for i in range(1, n_topics + 1)]) partitions = dict([(t, set(range(1, i + 1))) for i, t in enumerate(all_topics)]) cluster = create_cluster(mocker, topics=all_topics, topic_partitions_lambda=lambda t: partitions[t]) subscriptions = defaultdict(set) for i in range(n_consumers): > topics_sample = sample(all_topics, randint(1, len(all_topics) - 1)) test/test_assignors.py:664: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = population = {'t1', 't10', 't11', 't12', 't13', 't14', ...}, k = 8 def sample(self, population, k, *, counts=None): """Chooses k unique random elements from a population sequence. Returns a new list containing elements from the population while leaving the original population unchanged. The resulting list is in selection order so that all sub-slices will also be valid random samples. This allows raffle winners (the sample) to be partitioned into grand prize and second place winners (the subslices). Members of the population need not be hashable or unique. If the population contains repeats, then each occurrence is a possible selection in the sample. Repeated elements can be specified one at a time or with the optional counts parameter. For example: sample(['red', 'blue'], counts=[4, 2], k=5) is equivalent to: sample(['red', 'red', 'red', 'red', 'blue', 'blue'], k=5) To choose a sample from a range of integers, use range() for the population argument. This is especially fast and space efficient for sampling from a large population: sample(range(10000000), 60) """ # Sampling without replacement entails tracking either potential # selections (the pool) in a list or previous selections in a set. # When the number of selections is small compared to the # population, then tracking selections is efficient, requiring # only a small set and an occasional reselection. For # a larger number of selections, the pool tracking method is # preferred since the list takes less space than the # set and it doesn't suffer from frequent reselections. # The number of calls to _randbelow() is kept at or near k, the # theoretical minimum. This is important because running time # is dominated by _randbelow() and because it extracts the # least entropy from the underlying random number generators. # Memory requirements are kept to the smaller of a k-length # set or an n-length list. # There are other sampling algorithms that do not require # auxiliary memory, but they were rejected because they made # too many calls to _randbelow(), making them slower and # causing them to eat more entropy than necessary. if not isinstance(population, _Sequence): > raise TypeError("Population must be a sequence. " "For dicts or sets, use sorted(d).") E TypeError: Population must be a sequence. For dicts or sets, use sorted(d). /usr/lib64/python3.11/random.py:439: TypeError ______ test_reassignment_with_random_subscriptions_and_changes[43-12-20] _______ mocker = execution_number = 43, n_topics = 12, n_consumers = 20 @pytest.mark.parametrize( 'execution_number,n_topics,n_consumers', [(i, randint(10, 20), randint(20, 40)) for i in range(100)] ) def test_reassignment_with_random_subscriptions_and_changes(mocker, execution_number, n_topics, n_consumers): all_topics = set(['t{}'.format(i) for i in range(1, n_topics + 1)]) partitions = dict([(t, set(range(1, i + 1))) for i, t in enumerate(all_topics)]) cluster = create_cluster(mocker, topics=all_topics, topic_partitions_lambda=lambda t: partitions[t]) subscriptions = defaultdict(set) for i in range(n_consumers): > topics_sample = sample(all_topics, randint(1, len(all_topics) - 1)) test/test_assignors.py:664: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = population = {'t1', 't10', 't11', 't12', 't2', 't3', ...}, k = 2 def sample(self, population, k, *, counts=None): """Chooses k unique random elements from a population sequence. Returns a new list containing elements from the population while leaving the original population unchanged. The resulting list is in selection order so that all sub-slices will also be valid random samples. This allows raffle winners (the sample) to be partitioned into grand prize and second place winners (the subslices). Members of the population need not be hashable or unique. If the population contains repeats, then each occurrence is a possible selection in the sample. Repeated elements can be specified one at a time or with the optional counts parameter. For example: sample(['red', 'blue'], counts=[4, 2], k=5) is equivalent to: sample(['red', 'red', 'red', 'red', 'blue', 'blue'], k=5) To choose a sample from a range of integers, use range() for the population argument. This is especially fast and space efficient for sampling from a large population: sample(range(10000000), 60) """ # Sampling without replacement entails tracking either potential # selections (the pool) in a list or previous selections in a set. # When the number of selections is small compared to the # population, then tracking selections is efficient, requiring # only a small set and an occasional reselection. For # a larger number of selections, the pool tracking method is # preferred since the list takes less space than the # set and it doesn't suffer from frequent reselections. # The number of calls to _randbelow() is kept at or near k, the # theoretical minimum. This is important because running time # is dominated by _randbelow() and because it extracts the # least entropy from the underlying random number generators. # Memory requirements are kept to the smaller of a k-length # set or an n-length list. # There are other sampling algorithms that do not require # auxiliary memory, but they were rejected because they made # too many calls to _randbelow(), making them slower and # causing them to eat more entropy than necessary. if not isinstance(population, _Sequence): > raise TypeError("Population must be a sequence. " "For dicts or sets, use sorted(d).") E TypeError: Population must be a sequence. For dicts or sets, use sorted(d). /usr/lib64/python3.11/random.py:439: TypeError ______ test_reassignment_with_random_subscriptions_and_changes[44-15-34] _______ mocker = execution_number = 44, n_topics = 15, n_consumers = 34 @pytest.mark.parametrize( 'execution_number,n_topics,n_consumers', [(i, randint(10, 20), randint(20, 40)) for i in range(100)] ) def test_reassignment_with_random_subscriptions_and_changes(mocker, execution_number, n_topics, n_consumers): all_topics = set(['t{}'.format(i) for i in range(1, n_topics + 1)]) partitions = dict([(t, set(range(1, i + 1))) for i, t in enumerate(all_topics)]) cluster = create_cluster(mocker, topics=all_topics, topic_partitions_lambda=lambda t: partitions[t]) subscriptions = defaultdict(set) for i in range(n_consumers): > topics_sample = sample(all_topics, randint(1, len(all_topics) - 1)) test/test_assignors.py:664: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = population = {'t1', 't10', 't11', 't12', 't13', 't14', ...}, k = 13 def sample(self, population, k, *, counts=None): """Chooses k unique random elements from a population sequence. Returns a new list containing elements from the population while leaving the original population unchanged. The resulting list is in selection order so that all sub-slices will also be valid random samples. This allows raffle winners (the sample) to be partitioned into grand prize and second place winners (the subslices). Members of the population need not be hashable or unique. If the population contains repeats, then each occurrence is a possible selection in the sample. Repeated elements can be specified one at a time or with the optional counts parameter. For example: sample(['red', 'blue'], counts=[4, 2], k=5) is equivalent to: sample(['red', 'red', 'red', 'red', 'blue', 'blue'], k=5) To choose a sample from a range of integers, use range() for the population argument. This is especially fast and space efficient for sampling from a large population: sample(range(10000000), 60) """ # Sampling without replacement entails tracking either potential # selections (the pool) in a list or previous selections in a set. # When the number of selections is small compared to the # population, then tracking selections is efficient, requiring # only a small set and an occasional reselection. For # a larger number of selections, the pool tracking method is # preferred since the list takes less space than the # set and it doesn't suffer from frequent reselections. # The number of calls to _randbelow() is kept at or near k, the # theoretical minimum. This is important because running time # is dominated by _randbelow() and because it extracts the # least entropy from the underlying random number generators. # Memory requirements are kept to the smaller of a k-length # set or an n-length list. # There are other sampling algorithms that do not require # auxiliary memory, but they were rejected because they made # too many calls to _randbelow(), making them slower and # causing them to eat more entropy than necessary. if not isinstance(population, _Sequence): > raise TypeError("Population must be a sequence. " "For dicts or sets, use sorted(d).") E TypeError: Population must be a sequence. For dicts or sets, use sorted(d). /usr/lib64/python3.11/random.py:439: TypeError ______ test_reassignment_with_random_subscriptions_and_changes[45-15-27] _______ mocker = execution_number = 45, n_topics = 15, n_consumers = 27 @pytest.mark.parametrize( 'execution_number,n_topics,n_consumers', [(i, randint(10, 20), randint(20, 40)) for i in range(100)] ) def test_reassignment_with_random_subscriptions_and_changes(mocker, execution_number, n_topics, n_consumers): all_topics = set(['t{}'.format(i) for i in range(1, n_topics + 1)]) partitions = dict([(t, set(range(1, i + 1))) for i, t in enumerate(all_topics)]) cluster = create_cluster(mocker, topics=all_topics, topic_partitions_lambda=lambda t: partitions[t]) subscriptions = defaultdict(set) for i in range(n_consumers): > topics_sample = sample(all_topics, randint(1, len(all_topics) - 1)) test/test_assignors.py:664: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = population = {'t1', 't10', 't11', 't12', 't13', 't14', ...}, k = 9 def sample(self, population, k, *, counts=None): """Chooses k unique random elements from a population sequence. Returns a new list containing elements from the population while leaving the original population unchanged. The resulting list is in selection order so that all sub-slices will also be valid random samples. This allows raffle winners (the sample) to be partitioned into grand prize and second place winners (the subslices). Members of the population need not be hashable or unique. If the population contains repeats, then each occurrence is a possible selection in the sample. Repeated elements can be specified one at a time or with the optional counts parameter. For example: sample(['red', 'blue'], counts=[4, 2], k=5) is equivalent to: sample(['red', 'red', 'red', 'red', 'blue', 'blue'], k=5) To choose a sample from a range of integers, use range() for the population argument. This is especially fast and space efficient for sampling from a large population: sample(range(10000000), 60) """ # Sampling without replacement entails tracking either potential # selections (the pool) in a list or previous selections in a set. # When the number of selections is small compared to the # population, then tracking selections is efficient, requiring # only a small set and an occasional reselection. For # a larger number of selections, the pool tracking method is # preferred since the list takes less space than the # set and it doesn't suffer from frequent reselections. # The number of calls to _randbelow() is kept at or near k, the # theoretical minimum. This is important because running time # is dominated by _randbelow() and because it extracts the # least entropy from the underlying random number generators. # Memory requirements are kept to the smaller of a k-length # set or an n-length list. # There are other sampling algorithms that do not require # auxiliary memory, but they were rejected because they made # too many calls to _randbelow(), making them slower and # causing them to eat more entropy than necessary. if not isinstance(population, _Sequence): > raise TypeError("Population must be a sequence. " "For dicts or sets, use sorted(d).") E TypeError: Population must be a sequence. For dicts or sets, use sorted(d). /usr/lib64/python3.11/random.py:439: TypeError ______ test_reassignment_with_random_subscriptions_and_changes[46-16-37] _______ mocker = execution_number = 46, n_topics = 16, n_consumers = 37 @pytest.mark.parametrize( 'execution_number,n_topics,n_consumers', [(i, randint(10, 20), randint(20, 40)) for i in range(100)] ) def test_reassignment_with_random_subscriptions_and_changes(mocker, execution_number, n_topics, n_consumers): all_topics = set(['t{}'.format(i) for i in range(1, n_topics + 1)]) partitions = dict([(t, set(range(1, i + 1))) for i, t in enumerate(all_topics)]) cluster = create_cluster(mocker, topics=all_topics, topic_partitions_lambda=lambda t: partitions[t]) subscriptions = defaultdict(set) for i in range(n_consumers): > topics_sample = sample(all_topics, randint(1, len(all_topics) - 1)) test/test_assignors.py:664: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = population = {'t1', 't10', 't11', 't12', 't13', 't14', ...}, k = 1 def sample(self, population, k, *, counts=None): """Chooses k unique random elements from a population sequence. Returns a new list containing elements from the population while leaving the original population unchanged. The resulting list is in selection order so that all sub-slices will also be valid random samples. This allows raffle winners (the sample) to be partitioned into grand prize and second place winners (the subslices). Members of the population need not be hashable or unique. If the population contains repeats, then each occurrence is a possible selection in the sample. Repeated elements can be specified one at a time or with the optional counts parameter. For example: sample(['red', 'blue'], counts=[4, 2], k=5) is equivalent to: sample(['red', 'red', 'red', 'red', 'blue', 'blue'], k=5) To choose a sample from a range of integers, use range() for the population argument. This is especially fast and space efficient for sampling from a large population: sample(range(10000000), 60) """ # Sampling without replacement entails tracking either potential # selections (the pool) in a list or previous selections in a set. # When the number of selections is small compared to the # population, then tracking selections is efficient, requiring # only a small set and an occasional reselection. For # a larger number of selections, the pool tracking method is # preferred since the list takes less space than the # set and it doesn't suffer from frequent reselections. # The number of calls to _randbelow() is kept at or near k, the # theoretical minimum. This is important because running time # is dominated by _randbelow() and because it extracts the # least entropy from the underlying random number generators. # Memory requirements are kept to the smaller of a k-length # set or an n-length list. # There are other sampling algorithms that do not require # auxiliary memory, but they were rejected because they made # too many calls to _randbelow(), making them slower and # causing them to eat more entropy than necessary. if not isinstance(population, _Sequence): > raise TypeError("Population must be a sequence. " "For dicts or sets, use sorted(d).") E TypeError: Population must be a sequence. For dicts or sets, use sorted(d). /usr/lib64/python3.11/random.py:439: TypeError ______ test_reassignment_with_random_subscriptions_and_changes[47-20-37] _______ mocker = execution_number = 47, n_topics = 20, n_consumers = 37 @pytest.mark.parametrize( 'execution_number,n_topics,n_consumers', [(i, randint(10, 20), randint(20, 40)) for i in range(100)] ) def test_reassignment_with_random_subscriptions_and_changes(mocker, execution_number, n_topics, n_consumers): all_topics = set(['t{}'.format(i) for i in range(1, n_topics + 1)]) partitions = dict([(t, set(range(1, i + 1))) for i, t in enumerate(all_topics)]) cluster = create_cluster(mocker, topics=all_topics, topic_partitions_lambda=lambda t: partitions[t]) subscriptions = defaultdict(set) for i in range(n_consumers): > topics_sample = sample(all_topics, randint(1, len(all_topics) - 1)) test/test_assignors.py:664: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = population = {'t1', 't10', 't11', 't12', 't13', 't14', ...}, k = 18 def sample(self, population, k, *, counts=None): """Chooses k unique random elements from a population sequence. Returns a new list containing elements from the population while leaving the original population unchanged. The resulting list is in selection order so that all sub-slices will also be valid random samples. This allows raffle winners (the sample) to be partitioned into grand prize and second place winners (the subslices). Members of the population need not be hashable or unique. If the population contains repeats, then each occurrence is a possible selection in the sample. Repeated elements can be specified one at a time or with the optional counts parameter. For example: sample(['red', 'blue'], counts=[4, 2], k=5) is equivalent to: sample(['red', 'red', 'red', 'red', 'blue', 'blue'], k=5) To choose a sample from a range of integers, use range() for the population argument. This is especially fast and space efficient for sampling from a large population: sample(range(10000000), 60) """ # Sampling without replacement entails tracking either potential # selections (the pool) in a list or previous selections in a set. # When the number of selections is small compared to the # population, then tracking selections is efficient, requiring # only a small set and an occasional reselection. For # a larger number of selections, the pool tracking method is # preferred since the list takes less space than the # set and it doesn't suffer from frequent reselections. # The number of calls to _randbelow() is kept at or near k, the # theoretical minimum. This is important because running time # is dominated by _randbelow() and because it extracts the # least entropy from the underlying random number generators. # Memory requirements are kept to the smaller of a k-length # set or an n-length list. # There are other sampling algorithms that do not require # auxiliary memory, but they were rejected because they made # too many calls to _randbelow(), making them slower and # causing them to eat more entropy than necessary. if not isinstance(population, _Sequence): > raise TypeError("Population must be a sequence. " "For dicts or sets, use sorted(d).") E TypeError: Population must be a sequence. For dicts or sets, use sorted(d). /usr/lib64/python3.11/random.py:439: TypeError ______ test_reassignment_with_random_subscriptions_and_changes[48-11-37] _______ mocker = execution_number = 48, n_topics = 11, n_consumers = 37 @pytest.mark.parametrize( 'execution_number,n_topics,n_consumers', [(i, randint(10, 20), randint(20, 40)) for i in range(100)] ) def test_reassignment_with_random_subscriptions_and_changes(mocker, execution_number, n_topics, n_consumers): all_topics = set(['t{}'.format(i) for i in range(1, n_topics + 1)]) partitions = dict([(t, set(range(1, i + 1))) for i, t in enumerate(all_topics)]) cluster = create_cluster(mocker, topics=all_topics, topic_partitions_lambda=lambda t: partitions[t]) subscriptions = defaultdict(set) for i in range(n_consumers): > topics_sample = sample(all_topics, randint(1, len(all_topics) - 1)) test/test_assignors.py:664: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = population = {'t1', 't10', 't11', 't2', 't3', 't4', ...}, k = 9 def sample(self, population, k, *, counts=None): """Chooses k unique random elements from a population sequence. Returns a new list containing elements from the population while leaving the original population unchanged. The resulting list is in selection order so that all sub-slices will also be valid random samples. This allows raffle winners (the sample) to be partitioned into grand prize and second place winners (the subslices). Members of the population need not be hashable or unique. If the population contains repeats, then each occurrence is a possible selection in the sample. Repeated elements can be specified one at a time or with the optional counts parameter. For example: sample(['red', 'blue'], counts=[4, 2], k=5) is equivalent to: sample(['red', 'red', 'red', 'red', 'blue', 'blue'], k=5) To choose a sample from a range of integers, use range() for the population argument. This is especially fast and space efficient for sampling from a large population: sample(range(10000000), 60) """ # Sampling without replacement entails tracking either potential # selections (the pool) in a list or previous selections in a set. # When the number of selections is small compared to the # population, then tracking selections is efficient, requiring # only a small set and an occasional reselection. For # a larger number of selections, the pool tracking method is # preferred since the list takes less space than the # set and it doesn't suffer from frequent reselections. # The number of calls to _randbelow() is kept at or near k, the # theoretical minimum. This is important because running time # is dominated by _randbelow() and because it extracts the # least entropy from the underlying random number generators. # Memory requirements are kept to the smaller of a k-length # set or an n-length list. # There are other sampling algorithms that do not require # auxiliary memory, but they were rejected because they made # too many calls to _randbelow(), making them slower and # causing them to eat more entropy than necessary. if not isinstance(population, _Sequence): > raise TypeError("Population must be a sequence. " "For dicts or sets, use sorted(d).") E TypeError: Population must be a sequence. For dicts or sets, use sorted(d). /usr/lib64/python3.11/random.py:439: TypeError ______ test_reassignment_with_random_subscriptions_and_changes[49-10-35] _______ mocker = execution_number = 49, n_topics = 10, n_consumers = 35 @pytest.mark.parametrize( 'execution_number,n_topics,n_consumers', [(i, randint(10, 20), randint(20, 40)) for i in range(100)] ) def test_reassignment_with_random_subscriptions_and_changes(mocker, execution_number, n_topics, n_consumers): all_topics = set(['t{}'.format(i) for i in range(1, n_topics + 1)]) partitions = dict([(t, set(range(1, i + 1))) for i, t in enumerate(all_topics)]) cluster = create_cluster(mocker, topics=all_topics, topic_partitions_lambda=lambda t: partitions[t]) subscriptions = defaultdict(set) for i in range(n_consumers): > topics_sample = sample(all_topics, randint(1, len(all_topics) - 1)) test/test_assignors.py:664: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = population = {'t1', 't10', 't2', 't3', 't4', 't5', ...}, k = 2 def sample(self, population, k, *, counts=None): """Chooses k unique random elements from a population sequence. Returns a new list containing elements from the population while leaving the original population unchanged. The resulting list is in selection order so that all sub-slices will also be valid random samples. This allows raffle winners (the sample) to be partitioned into grand prize and second place winners (the subslices). Members of the population need not be hashable or unique. If the population contains repeats, then each occurrence is a possible selection in the sample. Repeated elements can be specified one at a time or with the optional counts parameter. For example: sample(['red', 'blue'], counts=[4, 2], k=5) is equivalent to: sample(['red', 'red', 'red', 'red', 'blue', 'blue'], k=5) To choose a sample from a range of integers, use range() for the population argument. This is especially fast and space efficient for sampling from a large population: sample(range(10000000), 60) """ # Sampling without replacement entails tracking either potential # selections (the pool) in a list or previous selections in a set. # When the number of selections is small compared to the # population, then tracking selections is efficient, requiring # only a small set and an occasional reselection. For # a larger number of selections, the pool tracking method is # preferred since the list takes less space than the # set and it doesn't suffer from frequent reselections. # The number of calls to _randbelow() is kept at or near k, the # theoretical minimum. This is important because running time # is dominated by _randbelow() and because it extracts the # least entropy from the underlying random number generators. # Memory requirements are kept to the smaller of a k-length # set or an n-length list. # There are other sampling algorithms that do not require # auxiliary memory, but they were rejected because they made # too many calls to _randbelow(), making them slower and # causing them to eat more entropy than necessary. if not isinstance(population, _Sequence): > raise TypeError("Population must be a sequence. " "For dicts or sets, use sorted(d).") E TypeError: Population must be a sequence. For dicts or sets, use sorted(d). /usr/lib64/python3.11/random.py:439: TypeError ______ test_reassignment_with_random_subscriptions_and_changes[50-19-32] _______ mocker = execution_number = 50, n_topics = 19, n_consumers = 32 @pytest.mark.parametrize( 'execution_number,n_topics,n_consumers', [(i, randint(10, 20), randint(20, 40)) for i in range(100)] ) def test_reassignment_with_random_subscriptions_and_changes(mocker, execution_number, n_topics, n_consumers): all_topics = set(['t{}'.format(i) for i in range(1, n_topics + 1)]) partitions = dict([(t, set(range(1, i + 1))) for i, t in enumerate(all_topics)]) cluster = create_cluster(mocker, topics=all_topics, topic_partitions_lambda=lambda t: partitions[t]) subscriptions = defaultdict(set) for i in range(n_consumers): > topics_sample = sample(all_topics, randint(1, len(all_topics) - 1)) test/test_assignors.py:664: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = population = {'t1', 't10', 't11', 't12', 't13', 't14', ...}, k = 16 def sample(self, population, k, *, counts=None): """Chooses k unique random elements from a population sequence. Returns a new list containing elements from the population while leaving the original population unchanged. The resulting list is in selection order so that all sub-slices will also be valid random samples. This allows raffle winners (the sample) to be partitioned into grand prize and second place winners (the subslices). Members of the population need not be hashable or unique. If the population contains repeats, then each occurrence is a possible selection in the sample. Repeated elements can be specified one at a time or with the optional counts parameter. For example: sample(['red', 'blue'], counts=[4, 2], k=5) is equivalent to: sample(['red', 'red', 'red', 'red', 'blue', 'blue'], k=5) To choose a sample from a range of integers, use range() for the population argument. This is especially fast and space efficient for sampling from a large population: sample(range(10000000), 60) """ # Sampling without replacement entails tracking either potential # selections (the pool) in a list or previous selections in a set. # When the number of selections is small compared to the # population, then tracking selections is efficient, requiring # only a small set and an occasional reselection. For # a larger number of selections, the pool tracking method is # preferred since the list takes less space than the # set and it doesn't suffer from frequent reselections. # The number of calls to _randbelow() is kept at or near k, the # theoretical minimum. This is important because running time # is dominated by _randbelow() and because it extracts the # least entropy from the underlying random number generators. # Memory requirements are kept to the smaller of a k-length # set or an n-length list. # There are other sampling algorithms that do not require # auxiliary memory, but they were rejected because they made # too many calls to _randbelow(), making them slower and # causing them to eat more entropy than necessary. if not isinstance(population, _Sequence): > raise TypeError("Population must be a sequence. " "For dicts or sets, use sorted(d).") E TypeError: Population must be a sequence. For dicts or sets, use sorted(d). /usr/lib64/python3.11/random.py:439: TypeError ______ test_reassignment_with_random_subscriptions_and_changes[51-10-33] _______ mocker = execution_number = 51, n_topics = 10, n_consumers = 33 @pytest.mark.parametrize( 'execution_number,n_topics,n_consumers', [(i, randint(10, 20), randint(20, 40)) for i in range(100)] ) def test_reassignment_with_random_subscriptions_and_changes(mocker, execution_number, n_topics, n_consumers): all_topics = set(['t{}'.format(i) for i in range(1, n_topics + 1)]) partitions = dict([(t, set(range(1, i + 1))) for i, t in enumerate(all_topics)]) cluster = create_cluster(mocker, topics=all_topics, topic_partitions_lambda=lambda t: partitions[t]) subscriptions = defaultdict(set) for i in range(n_consumers): > topics_sample = sample(all_topics, randint(1, len(all_topics) - 1)) test/test_assignors.py:664: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = population = {'t1', 't10', 't2', 't3', 't4', 't5', ...}, k = 6 def sample(self, population, k, *, counts=None): """Chooses k unique random elements from a population sequence. Returns a new list containing elements from the population while leaving the original population unchanged. The resulting list is in selection order so that all sub-slices will also be valid random samples. This allows raffle winners (the sample) to be partitioned into grand prize and second place winners (the subslices). Members of the population need not be hashable or unique. If the population contains repeats, then each occurrence is a possible selection in the sample. Repeated elements can be specified one at a time or with the optional counts parameter. For example: sample(['red', 'blue'], counts=[4, 2], k=5) is equivalent to: sample(['red', 'red', 'red', 'red', 'blue', 'blue'], k=5) To choose a sample from a range of integers, use range() for the population argument. This is especially fast and space efficient for sampling from a large population: sample(range(10000000), 60) """ # Sampling without replacement entails tracking either potential # selections (the pool) in a list or previous selections in a set. # When the number of selections is small compared to the # population, then tracking selections is efficient, requiring # only a small set and an occasional reselection. For # a larger number of selections, the pool tracking method is # preferred since the list takes less space than the # set and it doesn't suffer from frequent reselections. # The number of calls to _randbelow() is kept at or near k, the # theoretical minimum. This is important because running time # is dominated by _randbelow() and because it extracts the # least entropy from the underlying random number generators. # Memory requirements are kept to the smaller of a k-length # set or an n-length list. # There are other sampling algorithms that do not require # auxiliary memory, but they were rejected because they made # too many calls to _randbelow(), making them slower and # causing them to eat more entropy than necessary. if not isinstance(population, _Sequence): > raise TypeError("Population must be a sequence. " "For dicts or sets, use sorted(d).") E TypeError: Population must be a sequence. For dicts or sets, use sorted(d). /usr/lib64/python3.11/random.py:439: TypeError ______ test_reassignment_with_random_subscriptions_and_changes[52-20-35] _______ mocker = execution_number = 52, n_topics = 20, n_consumers = 35 @pytest.mark.parametrize( 'execution_number,n_topics,n_consumers', [(i, randint(10, 20), randint(20, 40)) for i in range(100)] ) def test_reassignment_with_random_subscriptions_and_changes(mocker, execution_number, n_topics, n_consumers): all_topics = set(['t{}'.format(i) for i in range(1, n_topics + 1)]) partitions = dict([(t, set(range(1, i + 1))) for i, t in enumerate(all_topics)]) cluster = create_cluster(mocker, topics=all_topics, topic_partitions_lambda=lambda t: partitions[t]) subscriptions = defaultdict(set) for i in range(n_consumers): > topics_sample = sample(all_topics, randint(1, len(all_topics) - 1)) test/test_assignors.py:664: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = population = {'t1', 't10', 't11', 't12', 't13', 't14', ...}, k = 4 def sample(self, population, k, *, counts=None): """Chooses k unique random elements from a population sequence. Returns a new list containing elements from the population while leaving the original population unchanged. The resulting list is in selection order so that all sub-slices will also be valid random samples. This allows raffle winners (the sample) to be partitioned into grand prize and second place winners (the subslices). Members of the population need not be hashable or unique. If the population contains repeats, then each occurrence is a possible selection in the sample. Repeated elements can be specified one at a time or with the optional counts parameter. For example: sample(['red', 'blue'], counts=[4, 2], k=5) is equivalent to: sample(['red', 'red', 'red', 'red', 'blue', 'blue'], k=5) To choose a sample from a range of integers, use range() for the population argument. This is especially fast and space efficient for sampling from a large population: sample(range(10000000), 60) """ # Sampling without replacement entails tracking either potential # selections (the pool) in a list or previous selections in a set. # When the number of selections is small compared to the # population, then tracking selections is efficient, requiring # only a small set and an occasional reselection. For # a larger number of selections, the pool tracking method is # preferred since the list takes less space than the # set and it doesn't suffer from frequent reselections. # The number of calls to _randbelow() is kept at or near k, the # theoretical minimum. This is important because running time # is dominated by _randbelow() and because it extracts the # least entropy from the underlying random number generators. # Memory requirements are kept to the smaller of a k-length # set or an n-length list. # There are other sampling algorithms that do not require # auxiliary memory, but they were rejected because they made # too many calls to _randbelow(), making them slower and # causing them to eat more entropy than necessary. if not isinstance(population, _Sequence): > raise TypeError("Population must be a sequence. " "For dicts or sets, use sorted(d).") E TypeError: Population must be a sequence. For dicts or sets, use sorted(d). /usr/lib64/python3.11/random.py:439: TypeError ______ test_reassignment_with_random_subscriptions_and_changes[53-10-29] _______ mocker = execution_number = 53, n_topics = 10, n_consumers = 29 @pytest.mark.parametrize( 'execution_number,n_topics,n_consumers', [(i, randint(10, 20), randint(20, 40)) for i in range(100)] ) def test_reassignment_with_random_subscriptions_and_changes(mocker, execution_number, n_topics, n_consumers): all_topics = set(['t{}'.format(i) for i in range(1, n_topics + 1)]) partitions = dict([(t, set(range(1, i + 1))) for i, t in enumerate(all_topics)]) cluster = create_cluster(mocker, topics=all_topics, topic_partitions_lambda=lambda t: partitions[t]) subscriptions = defaultdict(set) for i in range(n_consumers): > topics_sample = sample(all_topics, randint(1, len(all_topics) - 1)) test/test_assignors.py:664: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = population = {'t1', 't10', 't2', 't3', 't4', 't5', ...}, k = 5 def sample(self, population, k, *, counts=None): """Chooses k unique random elements from a population sequence. Returns a new list containing elements from the population while leaving the original population unchanged. The resulting list is in selection order so that all sub-slices will also be valid random samples. This allows raffle winners (the sample) to be partitioned into grand prize and second place winners (the subslices). Members of the population need not be hashable or unique. If the population contains repeats, then each occurrence is a possible selection in the sample. Repeated elements can be specified one at a time or with the optional counts parameter. For example: sample(['red', 'blue'], counts=[4, 2], k=5) is equivalent to: sample(['red', 'red', 'red', 'red', 'blue', 'blue'], k=5) To choose a sample from a range of integers, use range() for the population argument. This is especially fast and space efficient for sampling from a large population: sample(range(10000000), 60) """ # Sampling without replacement entails tracking either potential # selections (the pool) in a list or previous selections in a set. # When the number of selections is small compared to the # population, then tracking selections is efficient, requiring # only a small set and an occasional reselection. For # a larger number of selections, the pool tracking method is # preferred since the list takes less space than the # set and it doesn't suffer from frequent reselections. # The number of calls to _randbelow() is kept at or near k, the # theoretical minimum. This is important because running time # is dominated by _randbelow() and because it extracts the # least entropy from the underlying random number generators. # Memory requirements are kept to the smaller of a k-length # set or an n-length list. # There are other sampling algorithms that do not require # auxiliary memory, but they were rejected because they made # too many calls to _randbelow(), making them slower and # causing them to eat more entropy than necessary. if not isinstance(population, _Sequence): > raise TypeError("Population must be a sequence. " "For dicts or sets, use sorted(d).") E TypeError: Population must be a sequence. For dicts or sets, use sorted(d). /usr/lib64/python3.11/random.py:439: TypeError ______ test_reassignment_with_random_subscriptions_and_changes[54-18-37] _______ mocker = execution_number = 54, n_topics = 18, n_consumers = 37 @pytest.mark.parametrize( 'execution_number,n_topics,n_consumers', [(i, randint(10, 20), randint(20, 40)) for i in range(100)] ) def test_reassignment_with_random_subscriptions_and_changes(mocker, execution_number, n_topics, n_consumers): all_topics = set(['t{}'.format(i) for i in range(1, n_topics + 1)]) partitions = dict([(t, set(range(1, i + 1))) for i, t in enumerate(all_topics)]) cluster = create_cluster(mocker, topics=all_topics, topic_partitions_lambda=lambda t: partitions[t]) subscriptions = defaultdict(set) for i in range(n_consumers): > topics_sample = sample(all_topics, randint(1, len(all_topics) - 1)) test/test_assignors.py:664: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = population = {'t1', 't10', 't11', 't12', 't13', 't14', ...}, k = 17 def sample(self, population, k, *, counts=None): """Chooses k unique random elements from a population sequence. Returns a new list containing elements from the population while leaving the original population unchanged. The resulting list is in selection order so that all sub-slices will also be valid random samples. This allows raffle winners (the sample) to be partitioned into grand prize and second place winners (the subslices). Members of the population need not be hashable or unique. If the population contains repeats, then each occurrence is a possible selection in the sample. Repeated elements can be specified one at a time or with the optional counts parameter. For example: sample(['red', 'blue'], counts=[4, 2], k=5) is equivalent to: sample(['red', 'red', 'red', 'red', 'blue', 'blue'], k=5) To choose a sample from a range of integers, use range() for the population argument. This is especially fast and space efficient for sampling from a large population: sample(range(10000000), 60) """ # Sampling without replacement entails tracking either potential # selections (the pool) in a list or previous selections in a set. # When the number of selections is small compared to the # population, then tracking selections is efficient, requiring # only a small set and an occasional reselection. For # a larger number of selections, the pool tracking method is # preferred since the list takes less space than the # set and it doesn't suffer from frequent reselections. # The number of calls to _randbelow() is kept at or near k, the # theoretical minimum. This is important because running time # is dominated by _randbelow() and because it extracts the # least entropy from the underlying random number generators. # Memory requirements are kept to the smaller of a k-length # set or an n-length list. # There are other sampling algorithms that do not require # auxiliary memory, but they were rejected because they made # too many calls to _randbelow(), making them slower and # causing them to eat more entropy than necessary. if not isinstance(population, _Sequence): > raise TypeError("Population must be a sequence. " "For dicts or sets, use sorted(d).") E TypeError: Population must be a sequence. For dicts or sets, use sorted(d). /usr/lib64/python3.11/random.py:439: TypeError ______ test_reassignment_with_random_subscriptions_and_changes[55-19-39] _______ mocker = execution_number = 55, n_topics = 19, n_consumers = 39 @pytest.mark.parametrize( 'execution_number,n_topics,n_consumers', [(i, randint(10, 20), randint(20, 40)) for i in range(100)] ) def test_reassignment_with_random_subscriptions_and_changes(mocker, execution_number, n_topics, n_consumers): all_topics = set(['t{}'.format(i) for i in range(1, n_topics + 1)]) partitions = dict([(t, set(range(1, i + 1))) for i, t in enumerate(all_topics)]) cluster = create_cluster(mocker, topics=all_topics, topic_partitions_lambda=lambda t: partitions[t]) subscriptions = defaultdict(set) for i in range(n_consumers): > topics_sample = sample(all_topics, randint(1, len(all_topics) - 1)) test/test_assignors.py:664: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = population = {'t1', 't10', 't11', 't12', 't13', 't14', ...}, k = 16 def sample(self, population, k, *, counts=None): """Chooses k unique random elements from a population sequence. Returns a new list containing elements from the population while leaving the original population unchanged. The resulting list is in selection order so that all sub-slices will also be valid random samples. This allows raffle winners (the sample) to be partitioned into grand prize and second place winners (the subslices). Members of the population need not be hashable or unique. If the population contains repeats, then each occurrence is a possible selection in the sample. Repeated elements can be specified one at a time or with the optional counts parameter. For example: sample(['red', 'blue'], counts=[4, 2], k=5) is equivalent to: sample(['red', 'red', 'red', 'red', 'blue', 'blue'], k=5) To choose a sample from a range of integers, use range() for the population argument. This is especially fast and space efficient for sampling from a large population: sample(range(10000000), 60) """ # Sampling without replacement entails tracking either potential # selections (the pool) in a list or previous selections in a set. # When the number of selections is small compared to the # population, then tracking selections is efficient, requiring # only a small set and an occasional reselection. For # a larger number of selections, the pool tracking method is # preferred since the list takes less space than the # set and it doesn't suffer from frequent reselections. # The number of calls to _randbelow() is kept at or near k, the # theoretical minimum. This is important because running time # is dominated by _randbelow() and because it extracts the # least entropy from the underlying random number generators. # Memory requirements are kept to the smaller of a k-length # set or an n-length list. # There are other sampling algorithms that do not require # auxiliary memory, but they were rejected because they made # too many calls to _randbelow(), making them slower and # causing them to eat more entropy than necessary. if not isinstance(population, _Sequence): > raise TypeError("Population must be a sequence. " "For dicts or sets, use sorted(d).") E TypeError: Population must be a sequence. For dicts or sets, use sorted(d). /usr/lib64/python3.11/random.py:439: TypeError ______ test_reassignment_with_random_subscriptions_and_changes[56-11-22] _______ mocker = execution_number = 56, n_topics = 11, n_consumers = 22 @pytest.mark.parametrize( 'execution_number,n_topics,n_consumers', [(i, randint(10, 20), randint(20, 40)) for i in range(100)] ) def test_reassignment_with_random_subscriptions_and_changes(mocker, execution_number, n_topics, n_consumers): all_topics = set(['t{}'.format(i) for i in range(1, n_topics + 1)]) partitions = dict([(t, set(range(1, i + 1))) for i, t in enumerate(all_topics)]) cluster = create_cluster(mocker, topics=all_topics, topic_partitions_lambda=lambda t: partitions[t]) subscriptions = defaultdict(set) for i in range(n_consumers): > topics_sample = sample(all_topics, randint(1, len(all_topics) - 1)) test/test_assignors.py:664: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = population = {'t1', 't10', 't11', 't2', 't3', 't4', ...}, k = 4 def sample(self, population, k, *, counts=None): """Chooses k unique random elements from a population sequence. Returns a new list containing elements from the population while leaving the original population unchanged. The resulting list is in selection order so that all sub-slices will also be valid random samples. This allows raffle winners (the sample) to be partitioned into grand prize and second place winners (the subslices). Members of the population need not be hashable or unique. If the population contains repeats, then each occurrence is a possible selection in the sample. Repeated elements can be specified one at a time or with the optional counts parameter. For example: sample(['red', 'blue'], counts=[4, 2], k=5) is equivalent to: sample(['red', 'red', 'red', 'red', 'blue', 'blue'], k=5) To choose a sample from a range of integers, use range() for the population argument. This is especially fast and space efficient for sampling from a large population: sample(range(10000000), 60) """ # Sampling without replacement entails tracking either potential # selections (the pool) in a list or previous selections in a set. # When the number of selections is small compared to the # population, then tracking selections is efficient, requiring # only a small set and an occasional reselection. For # a larger number of selections, the pool tracking method is # preferred since the list takes less space than the # set and it doesn't suffer from frequent reselections. # The number of calls to _randbelow() is kept at or near k, the # theoretical minimum. This is important because running time # is dominated by _randbelow() and because it extracts the # least entropy from the underlying random number generators. # Memory requirements are kept to the smaller of a k-length # set or an n-length list. # There are other sampling algorithms that do not require # auxiliary memory, but they were rejected because they made # too many calls to _randbelow(), making them slower and # causing them to eat more entropy than necessary. if not isinstance(population, _Sequence): > raise TypeError("Population must be a sequence. " "For dicts or sets, use sorted(d).") E TypeError: Population must be a sequence. For dicts or sets, use sorted(d). /usr/lib64/python3.11/random.py:439: TypeError ______ test_reassignment_with_random_subscriptions_and_changes[57-10-35] _______ mocker = execution_number = 57, n_topics = 10, n_consumers = 35 @pytest.mark.parametrize( 'execution_number,n_topics,n_consumers', [(i, randint(10, 20), randint(20, 40)) for i in range(100)] ) def test_reassignment_with_random_subscriptions_and_changes(mocker, execution_number, n_topics, n_consumers): all_topics = set(['t{}'.format(i) for i in range(1, n_topics + 1)]) partitions = dict([(t, set(range(1, i + 1))) for i, t in enumerate(all_topics)]) cluster = create_cluster(mocker, topics=all_topics, topic_partitions_lambda=lambda t: partitions[t]) subscriptions = defaultdict(set) for i in range(n_consumers): > topics_sample = sample(all_topics, randint(1, len(all_topics) - 1)) test/test_assignors.py:664: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = population = {'t1', 't10', 't2', 't3', 't4', 't5', ...}, k = 9 def sample(self, population, k, *, counts=None): """Chooses k unique random elements from a population sequence. Returns a new list containing elements from the population while leaving the original population unchanged. The resulting list is in selection order so that all sub-slices will also be valid random samples. This allows raffle winners (the sample) to be partitioned into grand prize and second place winners (the subslices). Members of the population need not be hashable or unique. If the population contains repeats, then each occurrence is a possible selection in the sample. Repeated elements can be specified one at a time or with the optional counts parameter. For example: sample(['red', 'blue'], counts=[4, 2], k=5) is equivalent to: sample(['red', 'red', 'red', 'red', 'blue', 'blue'], k=5) To choose a sample from a range of integers, use range() for the population argument. This is especially fast and space efficient for sampling from a large population: sample(range(10000000), 60) """ # Sampling without replacement entails tracking either potential # selections (the pool) in a list or previous selections in a set. # When the number of selections is small compared to the # population, then tracking selections is efficient, requiring # only a small set and an occasional reselection. For # a larger number of selections, the pool tracking method is # preferred since the list takes less space than the # set and it doesn't suffer from frequent reselections. # The number of calls to _randbelow() is kept at or near k, the # theoretical minimum. This is important because running time # is dominated by _randbelow() and because it extracts the # least entropy from the underlying random number generators. # Memory requirements are kept to the smaller of a k-length # set or an n-length list. # There are other sampling algorithms that do not require # auxiliary memory, but they were rejected because they made # too many calls to _randbelow(), making them slower and # causing them to eat more entropy than necessary. if not isinstance(population, _Sequence): > raise TypeError("Population must be a sequence. " "For dicts or sets, use sorted(d).") E TypeError: Population must be a sequence. For dicts or sets, use sorted(d). /usr/lib64/python3.11/random.py:439: TypeError ______ test_reassignment_with_random_subscriptions_and_changes[58-18-25] _______ mocker = execution_number = 58, n_topics = 18, n_consumers = 25 @pytest.mark.parametrize( 'execution_number,n_topics,n_consumers', [(i, randint(10, 20), randint(20, 40)) for i in range(100)] ) def test_reassignment_with_random_subscriptions_and_changes(mocker, execution_number, n_topics, n_consumers): all_topics = set(['t{}'.format(i) for i in range(1, n_topics + 1)]) partitions = dict([(t, set(range(1, i + 1))) for i, t in enumerate(all_topics)]) cluster = create_cluster(mocker, topics=all_topics, topic_partitions_lambda=lambda t: partitions[t]) subscriptions = defaultdict(set) for i in range(n_consumers): > topics_sample = sample(all_topics, randint(1, len(all_topics) - 1)) test/test_assignors.py:664: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = population = {'t1', 't10', 't11', 't12', 't13', 't14', ...}, k = 2 def sample(self, population, k, *, counts=None): """Chooses k unique random elements from a population sequence. Returns a new list containing elements from the population while leaving the original population unchanged. The resulting list is in selection order so that all sub-slices will also be valid random samples. This allows raffle winners (the sample) to be partitioned into grand prize and second place winners (the subslices). Members of the population need not be hashable or unique. If the population contains repeats, then each occurrence is a possible selection in the sample. Repeated elements can be specified one at a time or with the optional counts parameter. For example: sample(['red', 'blue'], counts=[4, 2], k=5) is equivalent to: sample(['red', 'red', 'red', 'red', 'blue', 'blue'], k=5) To choose a sample from a range of integers, use range() for the population argument. This is especially fast and space efficient for sampling from a large population: sample(range(10000000), 60) """ # Sampling without replacement entails tracking either potential # selections (the pool) in a list or previous selections in a set. # When the number of selections is small compared to the # population, then tracking selections is efficient, requiring # only a small set and an occasional reselection. For # a larger number of selections, the pool tracking method is # preferred since the list takes less space than the # set and it doesn't suffer from frequent reselections. # The number of calls to _randbelow() is kept at or near k, the # theoretical minimum. This is important because running time # is dominated by _randbelow() and because it extracts the # least entropy from the underlying random number generators. # Memory requirements are kept to the smaller of a k-length # set or an n-length list. # There are other sampling algorithms that do not require # auxiliary memory, but they were rejected because they made # too many calls to _randbelow(), making them slower and # causing them to eat more entropy than necessary. if not isinstance(population, _Sequence): > raise TypeError("Population must be a sequence. " "For dicts or sets, use sorted(d).") E TypeError: Population must be a sequence. For dicts or sets, use sorted(d). /usr/lib64/python3.11/random.py:439: TypeError ______ test_reassignment_with_random_subscriptions_and_changes[59-20-30] _______ mocker = execution_number = 59, n_topics = 20, n_consumers = 30 @pytest.mark.parametrize( 'execution_number,n_topics,n_consumers', [(i, randint(10, 20), randint(20, 40)) for i in range(100)] ) def test_reassignment_with_random_subscriptions_and_changes(mocker, execution_number, n_topics, n_consumers): all_topics = set(['t{}'.format(i) for i in range(1, n_topics + 1)]) partitions = dict([(t, set(range(1, i + 1))) for i, t in enumerate(all_topics)]) cluster = create_cluster(mocker, topics=all_topics, topic_partitions_lambda=lambda t: partitions[t]) subscriptions = defaultdict(set) for i in range(n_consumers): > topics_sample = sample(all_topics, randint(1, len(all_topics) - 1)) test/test_assignors.py:664: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = population = {'t1', 't10', 't11', 't12', 't13', 't14', ...}, k = 9 def sample(self, population, k, *, counts=None): """Chooses k unique random elements from a population sequence. Returns a new list containing elements from the population while leaving the original population unchanged. The resulting list is in selection order so that all sub-slices will also be valid random samples. This allows raffle winners (the sample) to be partitioned into grand prize and second place winners (the subslices). Members of the population need not be hashable or unique. If the population contains repeats, then each occurrence is a possible selection in the sample. Repeated elements can be specified one at a time or with the optional counts parameter. For example: sample(['red', 'blue'], counts=[4, 2], k=5) is equivalent to: sample(['red', 'red', 'red', 'red', 'blue', 'blue'], k=5) To choose a sample from a range of integers, use range() for the population argument. This is especially fast and space efficient for sampling from a large population: sample(range(10000000), 60) """ # Sampling without replacement entails tracking either potential # selections (the pool) in a list or previous selections in a set. # When the number of selections is small compared to the # population, then tracking selections is efficient, requiring # only a small set and an occasional reselection. For # a larger number of selections, the pool tracking method is # preferred since the list takes less space than the # set and it doesn't suffer from frequent reselections. # The number of calls to _randbelow() is kept at or near k, the # theoretical minimum. This is important because running time # is dominated by _randbelow() and because it extracts the # least entropy from the underlying random number generators. # Memory requirements are kept to the smaller of a k-length # set or an n-length list. # There are other sampling algorithms that do not require # auxiliary memory, but they were rejected because they made # too many calls to _randbelow(), making them slower and # causing them to eat more entropy than necessary. if not isinstance(population, _Sequence): > raise TypeError("Population must be a sequence. " "For dicts or sets, use sorted(d).") E TypeError: Population must be a sequence. For dicts or sets, use sorted(d). /usr/lib64/python3.11/random.py:439: TypeError ______ test_reassignment_with_random_subscriptions_and_changes[60-12-25] _______ mocker = execution_number = 60, n_topics = 12, n_consumers = 25 @pytest.mark.parametrize( 'execution_number,n_topics,n_consumers', [(i, randint(10, 20), randint(20, 40)) for i in range(100)] ) def test_reassignment_with_random_subscriptions_and_changes(mocker, execution_number, n_topics, n_consumers): all_topics = set(['t{}'.format(i) for i in range(1, n_topics + 1)]) partitions = dict([(t, set(range(1, i + 1))) for i, t in enumerate(all_topics)]) cluster = create_cluster(mocker, topics=all_topics, topic_partitions_lambda=lambda t: partitions[t]) subscriptions = defaultdict(set) for i in range(n_consumers): > topics_sample = sample(all_topics, randint(1, len(all_topics) - 1)) test/test_assignors.py:664: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = population = {'t1', 't10', 't11', 't12', 't2', 't3', ...}, k = 3 def sample(self, population, k, *, counts=None): """Chooses k unique random elements from a population sequence. Returns a new list containing elements from the population while leaving the original population unchanged. The resulting list is in selection order so that all sub-slices will also be valid random samples. This allows raffle winners (the sample) to be partitioned into grand prize and second place winners (the subslices). Members of the population need not be hashable or unique. If the population contains repeats, then each occurrence is a possible selection in the sample. Repeated elements can be specified one at a time or with the optional counts parameter. For example: sample(['red', 'blue'], counts=[4, 2], k=5) is equivalent to: sample(['red', 'red', 'red', 'red', 'blue', 'blue'], k=5) To choose a sample from a range of integers, use range() for the population argument. This is especially fast and space efficient for sampling from a large population: sample(range(10000000), 60) """ # Sampling without replacement entails tracking either potential # selections (the pool) in a list or previous selections in a set. # When the number of selections is small compared to the # population, then tracking selections is efficient, requiring # only a small set and an occasional reselection. For # a larger number of selections, the pool tracking method is # preferred since the list takes less space than the # set and it doesn't suffer from frequent reselections. # The number of calls to _randbelow() is kept at or near k, the # theoretical minimum. This is important because running time # is dominated by _randbelow() and because it extracts the # least entropy from the underlying random number generators. # Memory requirements are kept to the smaller of a k-length # set or an n-length list. # There are other sampling algorithms that do not require # auxiliary memory, but they were rejected because they made # too many calls to _randbelow(), making them slower and # causing them to eat more entropy than necessary. if not isinstance(population, _Sequence): > raise TypeError("Population must be a sequence. " "For dicts or sets, use sorted(d).") E TypeError: Population must be a sequence. For dicts or sets, use sorted(d). /usr/lib64/python3.11/random.py:439: TypeError ______ test_reassignment_with_random_subscriptions_and_changes[61-15-36] _______ mocker = execution_number = 61, n_topics = 15, n_consumers = 36 @pytest.mark.parametrize( 'execution_number,n_topics,n_consumers', [(i, randint(10, 20), randint(20, 40)) for i in range(100)] ) def test_reassignment_with_random_subscriptions_and_changes(mocker, execution_number, n_topics, n_consumers): all_topics = set(['t{}'.format(i) for i in range(1, n_topics + 1)]) partitions = dict([(t, set(range(1, i + 1))) for i, t in enumerate(all_topics)]) cluster = create_cluster(mocker, topics=all_topics, topic_partitions_lambda=lambda t: partitions[t]) subscriptions = defaultdict(set) for i in range(n_consumers): > topics_sample = sample(all_topics, randint(1, len(all_topics) - 1)) test/test_assignors.py:664: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = population = {'t1', 't10', 't11', 't12', 't13', 't14', ...}, k = 11 def sample(self, population, k, *, counts=None): """Chooses k unique random elements from a population sequence. Returns a new list containing elements from the population while leaving the original population unchanged. The resulting list is in selection order so that all sub-slices will also be valid random samples. This allows raffle winners (the sample) to be partitioned into grand prize and second place winners (the subslices). Members of the population need not be hashable or unique. If the population contains repeats, then each occurrence is a possible selection in the sample. Repeated elements can be specified one at a time or with the optional counts parameter. For example: sample(['red', 'blue'], counts=[4, 2], k=5) is equivalent to: sample(['red', 'red', 'red', 'red', 'blue', 'blue'], k=5) To choose a sample from a range of integers, use range() for the population argument. This is especially fast and space efficient for sampling from a large population: sample(range(10000000), 60) """ # Sampling without replacement entails tracking either potential # selections (the pool) in a list or previous selections in a set. # When the number of selections is small compared to the # population, then tracking selections is efficient, requiring # only a small set and an occasional reselection. For # a larger number of selections, the pool tracking method is # preferred since the list takes less space than the # set and it doesn't suffer from frequent reselections. # The number of calls to _randbelow() is kept at or near k, the # theoretical minimum. This is important because running time # is dominated by _randbelow() and because it extracts the # least entropy from the underlying random number generators. # Memory requirements are kept to the smaller of a k-length # set or an n-length list. # There are other sampling algorithms that do not require # auxiliary memory, but they were rejected because they made # too many calls to _randbelow(), making them slower and # causing them to eat more entropy than necessary. if not isinstance(population, _Sequence): > raise TypeError("Population must be a sequence. " "For dicts or sets, use sorted(d).") E TypeError: Population must be a sequence. For dicts or sets, use sorted(d). /usr/lib64/python3.11/random.py:439: TypeError ______ test_reassignment_with_random_subscriptions_and_changes[62-12-28] _______ mocker = execution_number = 62, n_topics = 12, n_consumers = 28 @pytest.mark.parametrize( 'execution_number,n_topics,n_consumers', [(i, randint(10, 20), randint(20, 40)) for i in range(100)] ) def test_reassignment_with_random_subscriptions_and_changes(mocker, execution_number, n_topics, n_consumers): all_topics = set(['t{}'.format(i) for i in range(1, n_topics + 1)]) partitions = dict([(t, set(range(1, i + 1))) for i, t in enumerate(all_topics)]) cluster = create_cluster(mocker, topics=all_topics, topic_partitions_lambda=lambda t: partitions[t]) subscriptions = defaultdict(set) for i in range(n_consumers): > topics_sample = sample(all_topics, randint(1, len(all_topics) - 1)) test/test_assignors.py:664: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = population = {'t1', 't10', 't11', 't12', 't2', 't3', ...}, k = 6 def sample(self, population, k, *, counts=None): """Chooses k unique random elements from a population sequence. Returns a new list containing elements from the population while leaving the original population unchanged. The resulting list is in selection order so that all sub-slices will also be valid random samples. This allows raffle winners (the sample) to be partitioned into grand prize and second place winners (the subslices). Members of the population need not be hashable or unique. If the population contains repeats, then each occurrence is a possible selection in the sample. Repeated elements can be specified one at a time or with the optional counts parameter. For example: sample(['red', 'blue'], counts=[4, 2], k=5) is equivalent to: sample(['red', 'red', 'red', 'red', 'blue', 'blue'], k=5) To choose a sample from a range of integers, use range() for the population argument. This is especially fast and space efficient for sampling from a large population: sample(range(10000000), 60) """ # Sampling without replacement entails tracking either potential # selections (the pool) in a list or previous selections in a set. # When the number of selections is small compared to the # population, then tracking selections is efficient, requiring # only a small set and an occasional reselection. For # a larger number of selections, the pool tracking method is # preferred since the list takes less space than the # set and it doesn't suffer from frequent reselections. # The number of calls to _randbelow() is kept at or near k, the # theoretical minimum. This is important because running time # is dominated by _randbelow() and because it extracts the # least entropy from the underlying random number generators. # Memory requirements are kept to the smaller of a k-length # set or an n-length list. # There are other sampling algorithms that do not require # auxiliary memory, but they were rejected because they made # too many calls to _randbelow(), making them slower and # causing them to eat more entropy than necessary. if not isinstance(population, _Sequence): > raise TypeError("Population must be a sequence. " "For dicts or sets, use sorted(d).") E TypeError: Population must be a sequence. For dicts or sets, use sorted(d). /usr/lib64/python3.11/random.py:439: TypeError ______ test_reassignment_with_random_subscriptions_and_changes[63-19-24] _______ mocker = execution_number = 63, n_topics = 19, n_consumers = 24 @pytest.mark.parametrize( 'execution_number,n_topics,n_consumers', [(i, randint(10, 20), randint(20, 40)) for i in range(100)] ) def test_reassignment_with_random_subscriptions_and_changes(mocker, execution_number, n_topics, n_consumers): all_topics = set(['t{}'.format(i) for i in range(1, n_topics + 1)]) partitions = dict([(t, set(range(1, i + 1))) for i, t in enumerate(all_topics)]) cluster = create_cluster(mocker, topics=all_topics, topic_partitions_lambda=lambda t: partitions[t]) subscriptions = defaultdict(set) for i in range(n_consumers): > topics_sample = sample(all_topics, randint(1, len(all_topics) - 1)) test/test_assignors.py:664: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = population = {'t1', 't10', 't11', 't12', 't13', 't14', ...}, k = 15 def sample(self, population, k, *, counts=None): """Chooses k unique random elements from a population sequence. Returns a new list containing elements from the population while leaving the original population unchanged. The resulting list is in selection order so that all sub-slices will also be valid random samples. This allows raffle winners (the sample) to be partitioned into grand prize and second place winners (the subslices). Members of the population need not be hashable or unique. If the population contains repeats, then each occurrence is a possible selection in the sample. Repeated elements can be specified one at a time or with the optional counts parameter. For example: sample(['red', 'blue'], counts=[4, 2], k=5) is equivalent to: sample(['red', 'red', 'red', 'red', 'blue', 'blue'], k=5) To choose a sample from a range of integers, use range() for the population argument. This is especially fast and space efficient for sampling from a large population: sample(range(10000000), 60) """ # Sampling without replacement entails tracking either potential # selections (the pool) in a list or previous selections in a set. # When the number of selections is small compared to the # population, then tracking selections is efficient, requiring # only a small set and an occasional reselection. For # a larger number of selections, the pool tracking method is # preferred since the list takes less space than the # set and it doesn't suffer from frequent reselections. # The number of calls to _randbelow() is kept at or near k, the # theoretical minimum. This is important because running time # is dominated by _randbelow() and because it extracts the # least entropy from the underlying random number generators. # Memory requirements are kept to the smaller of a k-length # set or an n-length list. # There are other sampling algorithms that do not require # auxiliary memory, but they were rejected because they made # too many calls to _randbelow(), making them slower and # causing them to eat more entropy than necessary. if not isinstance(population, _Sequence): > raise TypeError("Population must be a sequence. " "For dicts or sets, use sorted(d).") E TypeError: Population must be a sequence. For dicts or sets, use sorted(d). /usr/lib64/python3.11/random.py:439: TypeError ______ test_reassignment_with_random_subscriptions_and_changes[64-20-22] _______ mocker = execution_number = 64, n_topics = 20, n_consumers = 22 @pytest.mark.parametrize( 'execution_number,n_topics,n_consumers', [(i, randint(10, 20), randint(20, 40)) for i in range(100)] ) def test_reassignment_with_random_subscriptions_and_changes(mocker, execution_number, n_topics, n_consumers): all_topics = set(['t{}'.format(i) for i in range(1, n_topics + 1)]) partitions = dict([(t, set(range(1, i + 1))) for i, t in enumerate(all_topics)]) cluster = create_cluster(mocker, topics=all_topics, topic_partitions_lambda=lambda t: partitions[t]) subscriptions = defaultdict(set) for i in range(n_consumers): > topics_sample = sample(all_topics, randint(1, len(all_topics) - 1)) test/test_assignors.py:664: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = population = {'t1', 't10', 't11', 't12', 't13', 't14', ...}, k = 10 def sample(self, population, k, *, counts=None): """Chooses k unique random elements from a population sequence. Returns a new list containing elements from the population while leaving the original population unchanged. The resulting list is in selection order so that all sub-slices will also be valid random samples. This allows raffle winners (the sample) to be partitioned into grand prize and second place winners (the subslices). Members of the population need not be hashable or unique. If the population contains repeats, then each occurrence is a possible selection in the sample. Repeated elements can be specified one at a time or with the optional counts parameter. For example: sample(['red', 'blue'], counts=[4, 2], k=5) is equivalent to: sample(['red', 'red', 'red', 'red', 'blue', 'blue'], k=5) To choose a sample from a range of integers, use range() for the population argument. This is especially fast and space efficient for sampling from a large population: sample(range(10000000), 60) """ # Sampling without replacement entails tracking either potential # selections (the pool) in a list or previous selections in a set. # When the number of selections is small compared to the # population, then tracking selections is efficient, requiring # only a small set and an occasional reselection. For # a larger number of selections, the pool tracking method is # preferred since the list takes less space than the # set and it doesn't suffer from frequent reselections. # The number of calls to _randbelow() is kept at or near k, the # theoretical minimum. This is important because running time # is dominated by _randbelow() and because it extracts the # least entropy from the underlying random number generators. # Memory requirements are kept to the smaller of a k-length # set or an n-length list. # There are other sampling algorithms that do not require # auxiliary memory, but they were rejected because they made # too many calls to _randbelow(), making them slower and # causing them to eat more entropy than necessary. if not isinstance(population, _Sequence): > raise TypeError("Population must be a sequence. " "For dicts or sets, use sorted(d).") E TypeError: Population must be a sequence. For dicts or sets, use sorted(d). /usr/lib64/python3.11/random.py:439: TypeError ______ test_reassignment_with_random_subscriptions_and_changes[65-19-33] _______ mocker = execution_number = 65, n_topics = 19, n_consumers = 33 @pytest.mark.parametrize( 'execution_number,n_topics,n_consumers', [(i, randint(10, 20), randint(20, 40)) for i in range(100)] ) def test_reassignment_with_random_subscriptions_and_changes(mocker, execution_number, n_topics, n_consumers): all_topics = set(['t{}'.format(i) for i in range(1, n_topics + 1)]) partitions = dict([(t, set(range(1, i + 1))) for i, t in enumerate(all_topics)]) cluster = create_cluster(mocker, topics=all_topics, topic_partitions_lambda=lambda t: partitions[t]) subscriptions = defaultdict(set) for i in range(n_consumers): > topics_sample = sample(all_topics, randint(1, len(all_topics) - 1)) test/test_assignors.py:664: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = population = {'t1', 't10', 't11', 't12', 't13', 't14', ...}, k = 17 def sample(self, population, k, *, counts=None): """Chooses k unique random elements from a population sequence. Returns a new list containing elements from the population while leaving the original population unchanged. The resulting list is in selection order so that all sub-slices will also be valid random samples. This allows raffle winners (the sample) to be partitioned into grand prize and second place winners (the subslices). Members of the population need not be hashable or unique. If the population contains repeats, then each occurrence is a possible selection in the sample. Repeated elements can be specified one at a time or with the optional counts parameter. For example: sample(['red', 'blue'], counts=[4, 2], k=5) is equivalent to: sample(['red', 'red', 'red', 'red', 'blue', 'blue'], k=5) To choose a sample from a range of integers, use range() for the population argument. This is especially fast and space efficient for sampling from a large population: sample(range(10000000), 60) """ # Sampling without replacement entails tracking either potential # selections (the pool) in a list or previous selections in a set. # When the number of selections is small compared to the # population, then tracking selections is efficient, requiring # only a small set and an occasional reselection. For # a larger number of selections, the pool tracking method is # preferred since the list takes less space than the # set and it doesn't suffer from frequent reselections. # The number of calls to _randbelow() is kept at or near k, the # theoretical minimum. This is important because running time # is dominated by _randbelow() and because it extracts the # least entropy from the underlying random number generators. # Memory requirements are kept to the smaller of a k-length # set or an n-length list. # There are other sampling algorithms that do not require # auxiliary memory, but they were rejected because they made # too many calls to _randbelow(), making them slower and # causing them to eat more entropy than necessary. if not isinstance(population, _Sequence): > raise TypeError("Population must be a sequence. " "For dicts or sets, use sorted(d).") E TypeError: Population must be a sequence. For dicts or sets, use sorted(d). /usr/lib64/python3.11/random.py:439: TypeError ______ test_reassignment_with_random_subscriptions_and_changes[66-10-20] _______ mocker = execution_number = 66, n_topics = 10, n_consumers = 20 @pytest.mark.parametrize( 'execution_number,n_topics,n_consumers', [(i, randint(10, 20), randint(20, 40)) for i in range(100)] ) def test_reassignment_with_random_subscriptions_and_changes(mocker, execution_number, n_topics, n_consumers): all_topics = set(['t{}'.format(i) for i in range(1, n_topics + 1)]) partitions = dict([(t, set(range(1, i + 1))) for i, t in enumerate(all_topics)]) cluster = create_cluster(mocker, topics=all_topics, topic_partitions_lambda=lambda t: partitions[t]) subscriptions = defaultdict(set) for i in range(n_consumers): > topics_sample = sample(all_topics, randint(1, len(all_topics) - 1)) test/test_assignors.py:664: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = population = {'t1', 't10', 't2', 't3', 't4', 't5', ...}, k = 2 def sample(self, population, k, *, counts=None): """Chooses k unique random elements from a population sequence. Returns a new list containing elements from the population while leaving the original population unchanged. The resulting list is in selection order so that all sub-slices will also be valid random samples. This allows raffle winners (the sample) to be partitioned into grand prize and second place winners (the subslices). Members of the population need not be hashable or unique. If the population contains repeats, then each occurrence is a possible selection in the sample. Repeated elements can be specified one at a time or with the optional counts parameter. For example: sample(['red', 'blue'], counts=[4, 2], k=5) is equivalent to: sample(['red', 'red', 'red', 'red', 'blue', 'blue'], k=5) To choose a sample from a range of integers, use range() for the population argument. This is especially fast and space efficient for sampling from a large population: sample(range(10000000), 60) """ # Sampling without replacement entails tracking either potential # selections (the pool) in a list or previous selections in a set. # When the number of selections is small compared to the # population, then tracking selections is efficient, requiring # only a small set and an occasional reselection. For # a larger number of selections, the pool tracking method is # preferred since the list takes less space than the # set and it doesn't suffer from frequent reselections. # The number of calls to _randbelow() is kept at or near k, the # theoretical minimum. This is important because running time # is dominated by _randbelow() and because it extracts the # least entropy from the underlying random number generators. # Memory requirements are kept to the smaller of a k-length # set or an n-length list. # There are other sampling algorithms that do not require # auxiliary memory, but they were rejected because they made # too many calls to _randbelow(), making them slower and # causing them to eat more entropy than necessary. if not isinstance(population, _Sequence): > raise TypeError("Population must be a sequence. " "For dicts or sets, use sorted(d).") E TypeError: Population must be a sequence. For dicts or sets, use sorted(d). /usr/lib64/python3.11/random.py:439: TypeError ______ test_reassignment_with_random_subscriptions_and_changes[67-18-39] _______ mocker = execution_number = 67, n_topics = 18, n_consumers = 39 @pytest.mark.parametrize( 'execution_number,n_topics,n_consumers', [(i, randint(10, 20), randint(20, 40)) for i in range(100)] ) def test_reassignment_with_random_subscriptions_and_changes(mocker, execution_number, n_topics, n_consumers): all_topics = set(['t{}'.format(i) for i in range(1, n_topics + 1)]) partitions = dict([(t, set(range(1, i + 1))) for i, t in enumerate(all_topics)]) cluster = create_cluster(mocker, topics=all_topics, topic_partitions_lambda=lambda t: partitions[t]) subscriptions = defaultdict(set) for i in range(n_consumers): > topics_sample = sample(all_topics, randint(1, len(all_topics) - 1)) test/test_assignors.py:664: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = population = {'t1', 't10', 't11', 't12', 't13', 't14', ...}, k = 13 def sample(self, population, k, *, counts=None): """Chooses k unique random elements from a population sequence. Returns a new list containing elements from the population while leaving the original population unchanged. The resulting list is in selection order so that all sub-slices will also be valid random samples. This allows raffle winners (the sample) to be partitioned into grand prize and second place winners (the subslices). Members of the population need not be hashable or unique. If the population contains repeats, then each occurrence is a possible selection in the sample. Repeated elements can be specified one at a time or with the optional counts parameter. For example: sample(['red', 'blue'], counts=[4, 2], k=5) is equivalent to: sample(['red', 'red', 'red', 'red', 'blue', 'blue'], k=5) To choose a sample from a range of integers, use range() for the population argument. This is especially fast and space efficient for sampling from a large population: sample(range(10000000), 60) """ # Sampling without replacement entails tracking either potential # selections (the pool) in a list or previous selections in a set. # When the number of selections is small compared to the # population, then tracking selections is efficient, requiring # only a small set and an occasional reselection. For # a larger number of selections, the pool tracking method is # preferred since the list takes less space than the # set and it doesn't suffer from frequent reselections. # The number of calls to _randbelow() is kept at or near k, the # theoretical minimum. This is important because running time # is dominated by _randbelow() and because it extracts the # least entropy from the underlying random number generators. # Memory requirements are kept to the smaller of a k-length # set or an n-length list. # There are other sampling algorithms that do not require # auxiliary memory, but they were rejected because they made # too many calls to _randbelow(), making them slower and # causing them to eat more entropy than necessary. if not isinstance(population, _Sequence): > raise TypeError("Population must be a sequence. " "For dicts or sets, use sorted(d).") E TypeError: Population must be a sequence. For dicts or sets, use sorted(d). /usr/lib64/python3.11/random.py:439: TypeError ______ test_reassignment_with_random_subscriptions_and_changes[68-11-31] _______ mocker = execution_number = 68, n_topics = 11, n_consumers = 31 @pytest.mark.parametrize( 'execution_number,n_topics,n_consumers', [(i, randint(10, 20), randint(20, 40)) for i in range(100)] ) def test_reassignment_with_random_subscriptions_and_changes(mocker, execution_number, n_topics, n_consumers): all_topics = set(['t{}'.format(i) for i in range(1, n_topics + 1)]) partitions = dict([(t, set(range(1, i + 1))) for i, t in enumerate(all_topics)]) cluster = create_cluster(mocker, topics=all_topics, topic_partitions_lambda=lambda t: partitions[t]) subscriptions = defaultdict(set) for i in range(n_consumers): > topics_sample = sample(all_topics, randint(1, len(all_topics) - 1)) test/test_assignors.py:664: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = population = {'t1', 't10', 't11', 't2', 't3', 't4', ...}, k = 8 def sample(self, population, k, *, counts=None): """Chooses k unique random elements from a population sequence. Returns a new list containing elements from the population while leaving the original population unchanged. The resulting list is in selection order so that all sub-slices will also be valid random samples. This allows raffle winners (the sample) to be partitioned into grand prize and second place winners (the subslices). Members of the population need not be hashable or unique. If the population contains repeats, then each occurrence is a possible selection in the sample. Repeated elements can be specified one at a time or with the optional counts parameter. For example: sample(['red', 'blue'], counts=[4, 2], k=5) is equivalent to: sample(['red', 'red', 'red', 'red', 'blue', 'blue'], k=5) To choose a sample from a range of integers, use range() for the population argument. This is especially fast and space efficient for sampling from a large population: sample(range(10000000), 60) """ # Sampling without replacement entails tracking either potential # selections (the pool) in a list or previous selections in a set. # When the number of selections is small compared to the # population, then tracking selections is efficient, requiring # only a small set and an occasional reselection. For # a larger number of selections, the pool tracking method is # preferred since the list takes less space than the # set and it doesn't suffer from frequent reselections. # The number of calls to _randbelow() is kept at or near k, the # theoretical minimum. This is important because running time # is dominated by _randbelow() and because it extracts the # least entropy from the underlying random number generators. # Memory requirements are kept to the smaller of a k-length # set or an n-length list. # There are other sampling algorithms that do not require # auxiliary memory, but they were rejected because they made # too many calls to _randbelow(), making them slower and # causing them to eat more entropy than necessary. if not isinstance(population, _Sequence): > raise TypeError("Population must be a sequence. " "For dicts or sets, use sorted(d).") E TypeError: Population must be a sequence. For dicts or sets, use sorted(d). /usr/lib64/python3.11/random.py:439: TypeError ______ test_reassignment_with_random_subscriptions_and_changes[69-19-23] _______ mocker = execution_number = 69, n_topics = 19, n_consumers = 23 @pytest.mark.parametrize( 'execution_number,n_topics,n_consumers', [(i, randint(10, 20), randint(20, 40)) for i in range(100)] ) def test_reassignment_with_random_subscriptions_and_changes(mocker, execution_number, n_topics, n_consumers): all_topics = set(['t{}'.format(i) for i in range(1, n_topics + 1)]) partitions = dict([(t, set(range(1, i + 1))) for i, t in enumerate(all_topics)]) cluster = create_cluster(mocker, topics=all_topics, topic_partitions_lambda=lambda t: partitions[t]) subscriptions = defaultdict(set) for i in range(n_consumers): > topics_sample = sample(all_topics, randint(1, len(all_topics) - 1)) test/test_assignors.py:664: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = population = {'t1', 't10', 't11', 't12', 't13', 't14', ...}, k = 10 def sample(self, population, k, *, counts=None): """Chooses k unique random elements from a population sequence. Returns a new list containing elements from the population while leaving the original population unchanged. The resulting list is in selection order so that all sub-slices will also be valid random samples. This allows raffle winners (the sample) to be partitioned into grand prize and second place winners (the subslices). Members of the population need not be hashable or unique. If the population contains repeats, then each occurrence is a possible selection in the sample. Repeated elements can be specified one at a time or with the optional counts parameter. For example: sample(['red', 'blue'], counts=[4, 2], k=5) is equivalent to: sample(['red', 'red', 'red', 'red', 'blue', 'blue'], k=5) To choose a sample from a range of integers, use range() for the population argument. This is especially fast and space efficient for sampling from a large population: sample(range(10000000), 60) """ # Sampling without replacement entails tracking either potential # selections (the pool) in a list or previous selections in a set. # When the number of selections is small compared to the # population, then tracking selections is efficient, requiring # only a small set and an occasional reselection. For # a larger number of selections, the pool tracking method is # preferred since the list takes less space than the # set and it doesn't suffer from frequent reselections. # The number of calls to _randbelow() is kept at or near k, the # theoretical minimum. This is important because running time # is dominated by _randbelow() and because it extracts the # least entropy from the underlying random number generators. # Memory requirements are kept to the smaller of a k-length # set or an n-length list. # There are other sampling algorithms that do not require # auxiliary memory, but they were rejected because they made # too many calls to _randbelow(), making them slower and # causing them to eat more entropy than necessary. if not isinstance(population, _Sequence): > raise TypeError("Population must be a sequence. " "For dicts or sets, use sorted(d).") E TypeError: Population must be a sequence. For dicts or sets, use sorted(d). /usr/lib64/python3.11/random.py:439: TypeError ______ test_reassignment_with_random_subscriptions_and_changes[70-12-30] _______ mocker = execution_number = 70, n_topics = 12, n_consumers = 30 @pytest.mark.parametrize( 'execution_number,n_topics,n_consumers', [(i, randint(10, 20), randint(20, 40)) for i in range(100)] ) def test_reassignment_with_random_subscriptions_and_changes(mocker, execution_number, n_topics, n_consumers): all_topics = set(['t{}'.format(i) for i in range(1, n_topics + 1)]) partitions = dict([(t, set(range(1, i + 1))) for i, t in enumerate(all_topics)]) cluster = create_cluster(mocker, topics=all_topics, topic_partitions_lambda=lambda t: partitions[t]) subscriptions = defaultdict(set) for i in range(n_consumers): > topics_sample = sample(all_topics, randint(1, len(all_topics) - 1)) test/test_assignors.py:664: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = population = {'t1', 't10', 't11', 't12', 't2', 't3', ...}, k = 8 def sample(self, population, k, *, counts=None): """Chooses k unique random elements from a population sequence. Returns a new list containing elements from the population while leaving the original population unchanged. The resulting list is in selection order so that all sub-slices will also be valid random samples. This allows raffle winners (the sample) to be partitioned into grand prize and second place winners (the subslices). Members of the population need not be hashable or unique. If the population contains repeats, then each occurrence is a possible selection in the sample. Repeated elements can be specified one at a time or with the optional counts parameter. For example: sample(['red', 'blue'], counts=[4, 2], k=5) is equivalent to: sample(['red', 'red', 'red', 'red', 'blue', 'blue'], k=5) To choose a sample from a range of integers, use range() for the population argument. This is especially fast and space efficient for sampling from a large population: sample(range(10000000), 60) """ # Sampling without replacement entails tracking either potential # selections (the pool) in a list or previous selections in a set. # When the number of selections is small compared to the # population, then tracking selections is efficient, requiring # only a small set and an occasional reselection. For # a larger number of selections, the pool tracking method is # preferred since the list takes less space than the # set and it doesn't suffer from frequent reselections. # The number of calls to _randbelow() is kept at or near k, the # theoretical minimum. This is important because running time # is dominated by _randbelow() and because it extracts the # least entropy from the underlying random number generators. # Memory requirements are kept to the smaller of a k-length # set or an n-length list. # There are other sampling algorithms that do not require # auxiliary memory, but they were rejected because they made # too many calls to _randbelow(), making them slower and # causing them to eat more entropy than necessary. if not isinstance(population, _Sequence): > raise TypeError("Population must be a sequence. " "For dicts or sets, use sorted(d).") E TypeError: Population must be a sequence. For dicts or sets, use sorted(d). /usr/lib64/python3.11/random.py:439: TypeError ______ test_reassignment_with_random_subscriptions_and_changes[71-16-28] _______ mocker = execution_number = 71, n_topics = 16, n_consumers = 28 @pytest.mark.parametrize( 'execution_number,n_topics,n_consumers', [(i, randint(10, 20), randint(20, 40)) for i in range(100)] ) def test_reassignment_with_random_subscriptions_and_changes(mocker, execution_number, n_topics, n_consumers): all_topics = set(['t{}'.format(i) for i in range(1, n_topics + 1)]) partitions = dict([(t, set(range(1, i + 1))) for i, t in enumerate(all_topics)]) cluster = create_cluster(mocker, topics=all_topics, topic_partitions_lambda=lambda t: partitions[t]) subscriptions = defaultdict(set) for i in range(n_consumers): > topics_sample = sample(all_topics, randint(1, len(all_topics) - 1)) test/test_assignors.py:664: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = population = {'t1', 't10', 't11', 't12', 't13', 't14', ...}, k = 11 def sample(self, population, k, *, counts=None): """Chooses k unique random elements from a population sequence. Returns a new list containing elements from the population while leaving the original population unchanged. The resulting list is in selection order so that all sub-slices will also be valid random samples. This allows raffle winners (the sample) to be partitioned into grand prize and second place winners (the subslices). Members of the population need not be hashable or unique. If the population contains repeats, then each occurrence is a possible selection in the sample. Repeated elements can be specified one at a time or with the optional counts parameter. For example: sample(['red', 'blue'], counts=[4, 2], k=5) is equivalent to: sample(['red', 'red', 'red', 'red', 'blue', 'blue'], k=5) To choose a sample from a range of integers, use range() for the population argument. This is especially fast and space efficient for sampling from a large population: sample(range(10000000), 60) """ # Sampling without replacement entails tracking either potential # selections (the pool) in a list or previous selections in a set. # When the number of selections is small compared to the # population, then tracking selections is efficient, requiring # only a small set and an occasional reselection. For # a larger number of selections, the pool tracking method is # preferred since the list takes less space than the # set and it doesn't suffer from frequent reselections. # The number of calls to _randbelow() is kept at or near k, the # theoretical minimum. This is important because running time # is dominated by _randbelow() and because it extracts the # least entropy from the underlying random number generators. # Memory requirements are kept to the smaller of a k-length # set or an n-length list. # There are other sampling algorithms that do not require # auxiliary memory, but they were rejected because they made # too many calls to _randbelow(), making them slower and # causing them to eat more entropy than necessary. if not isinstance(population, _Sequence): > raise TypeError("Population must be a sequence. " "For dicts or sets, use sorted(d).") E TypeError: Population must be a sequence. For dicts or sets, use sorted(d). /usr/lib64/python3.11/random.py:439: TypeError ______ test_reassignment_with_random_subscriptions_and_changes[72-17-28] _______ mocker = execution_number = 72, n_topics = 17, n_consumers = 28 @pytest.mark.parametrize( 'execution_number,n_topics,n_consumers', [(i, randint(10, 20), randint(20, 40)) for i in range(100)] ) def test_reassignment_with_random_subscriptions_and_changes(mocker, execution_number, n_topics, n_consumers): all_topics = set(['t{}'.format(i) for i in range(1, n_topics + 1)]) partitions = dict([(t, set(range(1, i + 1))) for i, t in enumerate(all_topics)]) cluster = create_cluster(mocker, topics=all_topics, topic_partitions_lambda=lambda t: partitions[t]) subscriptions = defaultdict(set) for i in range(n_consumers): > topics_sample = sample(all_topics, randint(1, len(all_topics) - 1)) test/test_assignors.py:664: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = population = {'t1', 't10', 't11', 't12', 't13', 't14', ...}, k = 11 def sample(self, population, k, *, counts=None): """Chooses k unique random elements from a population sequence. Returns a new list containing elements from the population while leaving the original population unchanged. The resulting list is in selection order so that all sub-slices will also be valid random samples. This allows raffle winners (the sample) to be partitioned into grand prize and second place winners (the subslices). Members of the population need not be hashable or unique. If the population contains repeats, then each occurrence is a possible selection in the sample. Repeated elements can be specified one at a time or with the optional counts parameter. For example: sample(['red', 'blue'], counts=[4, 2], k=5) is equivalent to: sample(['red', 'red', 'red', 'red', 'blue', 'blue'], k=5) To choose a sample from a range of integers, use range() for the population argument. This is especially fast and space efficient for sampling from a large population: sample(range(10000000), 60) """ # Sampling without replacement entails tracking either potential # selections (the pool) in a list or previous selections in a set. # When the number of selections is small compared to the # population, then tracking selections is efficient, requiring # only a small set and an occasional reselection. For # a larger number of selections, the pool tracking method is # preferred since the list takes less space than the # set and it doesn't suffer from frequent reselections. # The number of calls to _randbelow() is kept at or near k, the # theoretical minimum. This is important because running time # is dominated by _randbelow() and because it extracts the # least entropy from the underlying random number generators. # Memory requirements are kept to the smaller of a k-length # set or an n-length list. # There are other sampling algorithms that do not require # auxiliary memory, but they were rejected because they made # too many calls to _randbelow(), making them slower and # causing them to eat more entropy than necessary. if not isinstance(population, _Sequence): > raise TypeError("Population must be a sequence. " "For dicts or sets, use sorted(d).") E TypeError: Population must be a sequence. For dicts or sets, use sorted(d). /usr/lib64/python3.11/random.py:439: TypeError ______ test_reassignment_with_random_subscriptions_and_changes[73-12-33] _______ mocker = execution_number = 73, n_topics = 12, n_consumers = 33 @pytest.mark.parametrize( 'execution_number,n_topics,n_consumers', [(i, randint(10, 20), randint(20, 40)) for i in range(100)] ) def test_reassignment_with_random_subscriptions_and_changes(mocker, execution_number, n_topics, n_consumers): all_topics = set(['t{}'.format(i) for i in range(1, n_topics + 1)]) partitions = dict([(t, set(range(1, i + 1))) for i, t in enumerate(all_topics)]) cluster = create_cluster(mocker, topics=all_topics, topic_partitions_lambda=lambda t: partitions[t]) subscriptions = defaultdict(set) for i in range(n_consumers): > topics_sample = sample(all_topics, randint(1, len(all_topics) - 1)) test/test_assignors.py:664: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = population = {'t1', 't10', 't11', 't12', 't2', 't3', ...}, k = 7 def sample(self, population, k, *, counts=None): """Chooses k unique random elements from a population sequence. Returns a new list containing elements from the population while leaving the original population unchanged. The resulting list is in selection order so that all sub-slices will also be valid random samples. This allows raffle winners (the sample) to be partitioned into grand prize and second place winners (the subslices). Members of the population need not be hashable or unique. If the population contains repeats, then each occurrence is a possible selection in the sample. Repeated elements can be specified one at a time or with the optional counts parameter. For example: sample(['red', 'blue'], counts=[4, 2], k=5) is equivalent to: sample(['red', 'red', 'red', 'red', 'blue', 'blue'], k=5) To choose a sample from a range of integers, use range() for the population argument. This is especially fast and space efficient for sampling from a large population: sample(range(10000000), 60) """ # Sampling without replacement entails tracking either potential # selections (the pool) in a list or previous selections in a set. # When the number of selections is small compared to the # population, then tracking selections is efficient, requiring # only a small set and an occasional reselection. For # a larger number of selections, the pool tracking method is # preferred since the list takes less space than the # set and it doesn't suffer from frequent reselections. # The number of calls to _randbelow() is kept at or near k, the # theoretical minimum. This is important because running time # is dominated by _randbelow() and because it extracts the # least entropy from the underlying random number generators. # Memory requirements are kept to the smaller of a k-length # set or an n-length list. # There are other sampling algorithms that do not require # auxiliary memory, but they were rejected because they made # too many calls to _randbelow(), making them slower and # causing them to eat more entropy than necessary. if not isinstance(population, _Sequence): > raise TypeError("Population must be a sequence. " "For dicts or sets, use sorted(d).") E TypeError: Population must be a sequence. For dicts or sets, use sorted(d). /usr/lib64/python3.11/random.py:439: TypeError ______ test_reassignment_with_random_subscriptions_and_changes[74-18-36] _______ mocker = execution_number = 74, n_topics = 18, n_consumers = 36 @pytest.mark.parametrize( 'execution_number,n_topics,n_consumers', [(i, randint(10, 20), randint(20, 40)) for i in range(100)] ) def test_reassignment_with_random_subscriptions_and_changes(mocker, execution_number, n_topics, n_consumers): all_topics = set(['t{}'.format(i) for i in range(1, n_topics + 1)]) partitions = dict([(t, set(range(1, i + 1))) for i, t in enumerate(all_topics)]) cluster = create_cluster(mocker, topics=all_topics, topic_partitions_lambda=lambda t: partitions[t]) subscriptions = defaultdict(set) for i in range(n_consumers): > topics_sample = sample(all_topics, randint(1, len(all_topics) - 1)) test/test_assignors.py:664: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = population = {'t1', 't10', 't11', 't12', 't13', 't14', ...}, k = 1 def sample(self, population, k, *, counts=None): """Chooses k unique random elements from a population sequence. Returns a new list containing elements from the population while leaving the original population unchanged. The resulting list is in selection order so that all sub-slices will also be valid random samples. This allows raffle winners (the sample) to be partitioned into grand prize and second place winners (the subslices). Members of the population need not be hashable or unique. If the population contains repeats, then each occurrence is a possible selection in the sample. Repeated elements can be specified one at a time or with the optional counts parameter. For example: sample(['red', 'blue'], counts=[4, 2], k=5) is equivalent to: sample(['red', 'red', 'red', 'red', 'blue', 'blue'], k=5) To choose a sample from a range of integers, use range() for the population argument. This is especially fast and space efficient for sampling from a large population: sample(range(10000000), 60) """ # Sampling without replacement entails tracking either potential # selections (the pool) in a list or previous selections in a set. # When the number of selections is small compared to the # population, then tracking selections is efficient, requiring # only a small set and an occasional reselection. For # a larger number of selections, the pool tracking method is # preferred since the list takes less space than the # set and it doesn't suffer from frequent reselections. # The number of calls to _randbelow() is kept at or near k, the # theoretical minimum. This is important because running time # is dominated by _randbelow() and because it extracts the # least entropy from the underlying random number generators. # Memory requirements are kept to the smaller of a k-length # set or an n-length list. # There are other sampling algorithms that do not require # auxiliary memory, but they were rejected because they made # too many calls to _randbelow(), making them slower and # causing them to eat more entropy than necessary. if not isinstance(population, _Sequence): > raise TypeError("Population must be a sequence. " "For dicts or sets, use sorted(d).") E TypeError: Population must be a sequence. For dicts or sets, use sorted(d). /usr/lib64/python3.11/random.py:439: TypeError ______ test_reassignment_with_random_subscriptions_and_changes[75-18-37] _______ mocker = execution_number = 75, n_topics = 18, n_consumers = 37 @pytest.mark.parametrize( 'execution_number,n_topics,n_consumers', [(i, randint(10, 20), randint(20, 40)) for i in range(100)] ) def test_reassignment_with_random_subscriptions_and_changes(mocker, execution_number, n_topics, n_consumers): all_topics = set(['t{}'.format(i) for i in range(1, n_topics + 1)]) partitions = dict([(t, set(range(1, i + 1))) for i, t in enumerate(all_topics)]) cluster = create_cluster(mocker, topics=all_topics, topic_partitions_lambda=lambda t: partitions[t]) subscriptions = defaultdict(set) for i in range(n_consumers): > topics_sample = sample(all_topics, randint(1, len(all_topics) - 1)) test/test_assignors.py:664: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = population = {'t1', 't10', 't11', 't12', 't13', 't14', ...}, k = 3 def sample(self, population, k, *, counts=None): """Chooses k unique random elements from a population sequence. Returns a new list containing elements from the population while leaving the original population unchanged. The resulting list is in selection order so that all sub-slices will also be valid random samples. This allows raffle winners (the sample) to be partitioned into grand prize and second place winners (the subslices). Members of the population need not be hashable or unique. If the population contains repeats, then each occurrence is a possible selection in the sample. Repeated elements can be specified one at a time or with the optional counts parameter. For example: sample(['red', 'blue'], counts=[4, 2], k=5) is equivalent to: sample(['red', 'red', 'red', 'red', 'blue', 'blue'], k=5) To choose a sample from a range of integers, use range() for the population argument. This is especially fast and space efficient for sampling from a large population: sample(range(10000000), 60) """ # Sampling without replacement entails tracking either potential # selections (the pool) in a list or previous selections in a set. # When the number of selections is small compared to the # population, then tracking selections is efficient, requiring # only a small set and an occasional reselection. For # a larger number of selections, the pool tracking method is # preferred since the list takes less space than the # set and it doesn't suffer from frequent reselections. # The number of calls to _randbelow() is kept at or near k, the # theoretical minimum. This is important because running time # is dominated by _randbelow() and because it extracts the # least entropy from the underlying random number generators. # Memory requirements are kept to the smaller of a k-length # set or an n-length list. # There are other sampling algorithms that do not require # auxiliary memory, but they were rejected because they made # too many calls to _randbelow(), making them slower and # causing them to eat more entropy than necessary. if not isinstance(population, _Sequence): > raise TypeError("Population must be a sequence. " "For dicts or sets, use sorted(d).") E TypeError: Population must be a sequence. For dicts or sets, use sorted(d). /usr/lib64/python3.11/random.py:439: TypeError ______ test_reassignment_with_random_subscriptions_and_changes[76-11-27] _______ mocker = execution_number = 76, n_topics = 11, n_consumers = 27 @pytest.mark.parametrize( 'execution_number,n_topics,n_consumers', [(i, randint(10, 20), randint(20, 40)) for i in range(100)] ) def test_reassignment_with_random_subscriptions_and_changes(mocker, execution_number, n_topics, n_consumers): all_topics = set(['t{}'.format(i) for i in range(1, n_topics + 1)]) partitions = dict([(t, set(range(1, i + 1))) for i, t in enumerate(all_topics)]) cluster = create_cluster(mocker, topics=all_topics, topic_partitions_lambda=lambda t: partitions[t]) subscriptions = defaultdict(set) for i in range(n_consumers): > topics_sample = sample(all_topics, randint(1, len(all_topics) - 1)) test/test_assignors.py:664: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = population = {'t1', 't10', 't11', 't2', 't3', 't4', ...}, k = 3 def sample(self, population, k, *, counts=None): """Chooses k unique random elements from a population sequence. Returns a new list containing elements from the population while leaving the original population unchanged. The resulting list is in selection order so that all sub-slices will also be valid random samples. This allows raffle winners (the sample) to be partitioned into grand prize and second place winners (the subslices). Members of the population need not be hashable or unique. If the population contains repeats, then each occurrence is a possible selection in the sample. Repeated elements can be specified one at a time or with the optional counts parameter. For example: sample(['red', 'blue'], counts=[4, 2], k=5) is equivalent to: sample(['red', 'red', 'red', 'red', 'blue', 'blue'], k=5) To choose a sample from a range of integers, use range() for the population argument. This is especially fast and space efficient for sampling from a large population: sample(range(10000000), 60) """ # Sampling without replacement entails tracking either potential # selections (the pool) in a list or previous selections in a set. # When the number of selections is small compared to the # population, then tracking selections is efficient, requiring # only a small set and an occasional reselection. For # a larger number of selections, the pool tracking method is # preferred since the list takes less space than the # set and it doesn't suffer from frequent reselections. # The number of calls to _randbelow() is kept at or near k, the # theoretical minimum. This is important because running time # is dominated by _randbelow() and because it extracts the # least entropy from the underlying random number generators. # Memory requirements are kept to the smaller of a k-length # set or an n-length list. # There are other sampling algorithms that do not require # auxiliary memory, but they were rejected because they made # too many calls to _randbelow(), making them slower and # causing them to eat more entropy than necessary. if not isinstance(population, _Sequence): > raise TypeError("Population must be a sequence. " "For dicts or sets, use sorted(d).") E TypeError: Population must be a sequence. For dicts or sets, use sorted(d). /usr/lib64/python3.11/random.py:439: TypeError ______ test_reassignment_with_random_subscriptions_and_changes[77-15-29] _______ mocker = execution_number = 77, n_topics = 15, n_consumers = 29 @pytest.mark.parametrize( 'execution_number,n_topics,n_consumers', [(i, randint(10, 20), randint(20, 40)) for i in range(100)] ) def test_reassignment_with_random_subscriptions_and_changes(mocker, execution_number, n_topics, n_consumers): all_topics = set(['t{}'.format(i) for i in range(1, n_topics + 1)]) partitions = dict([(t, set(range(1, i + 1))) for i, t in enumerate(all_topics)]) cluster = create_cluster(mocker, topics=all_topics, topic_partitions_lambda=lambda t: partitions[t]) subscriptions = defaultdict(set) for i in range(n_consumers): > topics_sample = sample(all_topics, randint(1, len(all_topics) - 1)) test/test_assignors.py:664: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = population = {'t1', 't10', 't11', 't12', 't13', 't14', ...}, k = 4 def sample(self, population, k, *, counts=None): """Chooses k unique random elements from a population sequence. Returns a new list containing elements from the population while leaving the original population unchanged. The resulting list is in selection order so that all sub-slices will also be valid random samples. This allows raffle winners (the sample) to be partitioned into grand prize and second place winners (the subslices). Members of the population need not be hashable or unique. If the population contains repeats, then each occurrence is a possible selection in the sample. Repeated elements can be specified one at a time or with the optional counts parameter. For example: sample(['red', 'blue'], counts=[4, 2], k=5) is equivalent to: sample(['red', 'red', 'red', 'red', 'blue', 'blue'], k=5) To choose a sample from a range of integers, use range() for the population argument. This is especially fast and space efficient for sampling from a large population: sample(range(10000000), 60) """ # Sampling without replacement entails tracking either potential # selections (the pool) in a list or previous selections in a set. # When the number of selections is small compared to the # population, then tracking selections is efficient, requiring # only a small set and an occasional reselection. For # a larger number of selections, the pool tracking method is # preferred since the list takes less space than the # set and it doesn't suffer from frequent reselections. # The number of calls to _randbelow() is kept at or near k, the # theoretical minimum. This is important because running time # is dominated by _randbelow() and because it extracts the # least entropy from the underlying random number generators. # Memory requirements are kept to the smaller of a k-length # set or an n-length list. # There are other sampling algorithms that do not require # auxiliary memory, but they were rejected because they made # too many calls to _randbelow(), making them slower and # causing them to eat more entropy than necessary. if not isinstance(population, _Sequence): > raise TypeError("Population must be a sequence. " "For dicts or sets, use sorted(d).") E TypeError: Population must be a sequence. For dicts or sets, use sorted(d). /usr/lib64/python3.11/random.py:439: TypeError ______ test_reassignment_with_random_subscriptions_and_changes[78-11-37] _______ mocker = execution_number = 78, n_topics = 11, n_consumers = 37 @pytest.mark.parametrize( 'execution_number,n_topics,n_consumers', [(i, randint(10, 20), randint(20, 40)) for i in range(100)] ) def test_reassignment_with_random_subscriptions_and_changes(mocker, execution_number, n_topics, n_consumers): all_topics = set(['t{}'.format(i) for i in range(1, n_topics + 1)]) partitions = dict([(t, set(range(1, i + 1))) for i, t in enumerate(all_topics)]) cluster = create_cluster(mocker, topics=all_topics, topic_partitions_lambda=lambda t: partitions[t]) subscriptions = defaultdict(set) for i in range(n_consumers): > topics_sample = sample(all_topics, randint(1, len(all_topics) - 1)) test/test_assignors.py:664: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = population = {'t1', 't10', 't11', 't2', 't3', 't4', ...}, k = 2 def sample(self, population, k, *, counts=None): """Chooses k unique random elements from a population sequence. Returns a new list containing elements from the population while leaving the original population unchanged. The resulting list is in selection order so that all sub-slices will also be valid random samples. This allows raffle winners (the sample) to be partitioned into grand prize and second place winners (the subslices). Members of the population need not be hashable or unique. If the population contains repeats, then each occurrence is a possible selection in the sample. Repeated elements can be specified one at a time or with the optional counts parameter. For example: sample(['red', 'blue'], counts=[4, 2], k=5) is equivalent to: sample(['red', 'red', 'red', 'red', 'blue', 'blue'], k=5) To choose a sample from a range of integers, use range() for the population argument. This is especially fast and space efficient for sampling from a large population: sample(range(10000000), 60) """ # Sampling without replacement entails tracking either potential # selections (the pool) in a list or previous selections in a set. # When the number of selections is small compared to the # population, then tracking selections is efficient, requiring # only a small set and an occasional reselection. For # a larger number of selections, the pool tracking method is # preferred since the list takes less space than the # set and it doesn't suffer from frequent reselections. # The number of calls to _randbelow() is kept at or near k, the # theoretical minimum. This is important because running time # is dominated by _randbelow() and because it extracts the # least entropy from the underlying random number generators. # Memory requirements are kept to the smaller of a k-length # set or an n-length list. # There are other sampling algorithms that do not require # auxiliary memory, but they were rejected because they made # too many calls to _randbelow(), making them slower and # causing them to eat more entropy than necessary. if not isinstance(population, _Sequence): > raise TypeError("Population must be a sequence. " "For dicts or sets, use sorted(d).") E TypeError: Population must be a sequence. For dicts or sets, use sorted(d). /usr/lib64/python3.11/random.py:439: TypeError ______ test_reassignment_with_random_subscriptions_and_changes[79-18-24] _______ mocker = execution_number = 79, n_topics = 18, n_consumers = 24 @pytest.mark.parametrize( 'execution_number,n_topics,n_consumers', [(i, randint(10, 20), randint(20, 40)) for i in range(100)] ) def test_reassignment_with_random_subscriptions_and_changes(mocker, execution_number, n_topics, n_consumers): all_topics = set(['t{}'.format(i) for i in range(1, n_topics + 1)]) partitions = dict([(t, set(range(1, i + 1))) for i, t in enumerate(all_topics)]) cluster = create_cluster(mocker, topics=all_topics, topic_partitions_lambda=lambda t: partitions[t]) subscriptions = defaultdict(set) for i in range(n_consumers): > topics_sample = sample(all_topics, randint(1, len(all_topics) - 1)) test/test_assignors.py:664: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = population = {'t1', 't10', 't11', 't12', 't13', 't14', ...}, k = 17 def sample(self, population, k, *, counts=None): """Chooses k unique random elements from a population sequence. Returns a new list containing elements from the population while leaving the original population unchanged. The resulting list is in selection order so that all sub-slices will also be valid random samples. This allows raffle winners (the sample) to be partitioned into grand prize and second place winners (the subslices). Members of the population need not be hashable or unique. If the population contains repeats, then each occurrence is a possible selection in the sample. Repeated elements can be specified one at a time or with the optional counts parameter. For example: sample(['red', 'blue'], counts=[4, 2], k=5) is equivalent to: sample(['red', 'red', 'red', 'red', 'blue', 'blue'], k=5) To choose a sample from a range of integers, use range() for the population argument. This is especially fast and space efficient for sampling from a large population: sample(range(10000000), 60) """ # Sampling without replacement entails tracking either potential # selections (the pool) in a list or previous selections in a set. # When the number of selections is small compared to the # population, then tracking selections is efficient, requiring # only a small set and an occasional reselection. For # a larger number of selections, the pool tracking method is # preferred since the list takes less space than the # set and it doesn't suffer from frequent reselections. # The number of calls to _randbelow() is kept at or near k, the # theoretical minimum. This is important because running time # is dominated by _randbelow() and because it extracts the # least entropy from the underlying random number generators. # Memory requirements are kept to the smaller of a k-length # set or an n-length list. # There are other sampling algorithms that do not require # auxiliary memory, but they were rejected because they made # too many calls to _randbelow(), making them slower and # causing them to eat more entropy than necessary. if not isinstance(population, _Sequence): > raise TypeError("Population must be a sequence. " "For dicts or sets, use sorted(d).") E TypeError: Population must be a sequence. For dicts or sets, use sorted(d). /usr/lib64/python3.11/random.py:439: TypeError ______ test_reassignment_with_random_subscriptions_and_changes[80-19-40] _______ mocker = execution_number = 80, n_topics = 19, n_consumers = 40 @pytest.mark.parametrize( 'execution_number,n_topics,n_consumers', [(i, randint(10, 20), randint(20, 40)) for i in range(100)] ) def test_reassignment_with_random_subscriptions_and_changes(mocker, execution_number, n_topics, n_consumers): all_topics = set(['t{}'.format(i) for i in range(1, n_topics + 1)]) partitions = dict([(t, set(range(1, i + 1))) for i, t in enumerate(all_topics)]) cluster = create_cluster(mocker, topics=all_topics, topic_partitions_lambda=lambda t: partitions[t]) subscriptions = defaultdict(set) for i in range(n_consumers): > topics_sample = sample(all_topics, randint(1, len(all_topics) - 1)) test/test_assignors.py:664: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = population = {'t1', 't10', 't11', 't12', 't13', 't14', ...}, k = 9 def sample(self, population, k, *, counts=None): """Chooses k unique random elements from a population sequence. Returns a new list containing elements from the population while leaving the original population unchanged. The resulting list is in selection order so that all sub-slices will also be valid random samples. This allows raffle winners (the sample) to be partitioned into grand prize and second place winners (the subslices). Members of the population need not be hashable or unique. If the population contains repeats, then each occurrence is a possible selection in the sample. Repeated elements can be specified one at a time or with the optional counts parameter. For example: sample(['red', 'blue'], counts=[4, 2], k=5) is equivalent to: sample(['red', 'red', 'red', 'red', 'blue', 'blue'], k=5) To choose a sample from a range of integers, use range() for the population argument. This is especially fast and space efficient for sampling from a large population: sample(range(10000000), 60) """ # Sampling without replacement entails tracking either potential # selections (the pool) in a list or previous selections in a set. # When the number of selections is small compared to the # population, then tracking selections is efficient, requiring # only a small set and an occasional reselection. For # a larger number of selections, the pool tracking method is # preferred since the list takes less space than the # set and it doesn't suffer from frequent reselections. # The number of calls to _randbelow() is kept at or near k, the # theoretical minimum. This is important because running time # is dominated by _randbelow() and because it extracts the # least entropy from the underlying random number generators. # Memory requirements are kept to the smaller of a k-length # set or an n-length list. # There are other sampling algorithms that do not require # auxiliary memory, but they were rejected because they made # too many calls to _randbelow(), making them slower and # causing them to eat more entropy than necessary. if not isinstance(population, _Sequence): > raise TypeError("Population must be a sequence. " "For dicts or sets, use sorted(d).") E TypeError: Population must be a sequence. For dicts or sets, use sorted(d). /usr/lib64/python3.11/random.py:439: TypeError ______ test_reassignment_with_random_subscriptions_and_changes[81-20-36] _______ mocker = execution_number = 81, n_topics = 20, n_consumers = 36 @pytest.mark.parametrize( 'execution_number,n_topics,n_consumers', [(i, randint(10, 20), randint(20, 40)) for i in range(100)] ) def test_reassignment_with_random_subscriptions_and_changes(mocker, execution_number, n_topics, n_consumers): all_topics = set(['t{}'.format(i) for i in range(1, n_topics + 1)]) partitions = dict([(t, set(range(1, i + 1))) for i, t in enumerate(all_topics)]) cluster = create_cluster(mocker, topics=all_topics, topic_partitions_lambda=lambda t: partitions[t]) subscriptions = defaultdict(set) for i in range(n_consumers): > topics_sample = sample(all_topics, randint(1, len(all_topics) - 1)) test/test_assignors.py:664: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = population = {'t1', 't10', 't11', 't12', 't13', 't14', ...}, k = 7 def sample(self, population, k, *, counts=None): """Chooses k unique random elements from a population sequence. Returns a new list containing elements from the population while leaving the original population unchanged. The resulting list is in selection order so that all sub-slices will also be valid random samples. This allows raffle winners (the sample) to be partitioned into grand prize and second place winners (the subslices). Members of the population need not be hashable or unique. If the population contains repeats, then each occurrence is a possible selection in the sample. Repeated elements can be specified one at a time or with the optional counts parameter. For example: sample(['red', 'blue'], counts=[4, 2], k=5) is equivalent to: sample(['red', 'red', 'red', 'red', 'blue', 'blue'], k=5) To choose a sample from a range of integers, use range() for the population argument. This is especially fast and space efficient for sampling from a large population: sample(range(10000000), 60) """ # Sampling without replacement entails tracking either potential # selections (the pool) in a list or previous selections in a set. # When the number of selections is small compared to the # population, then tracking selections is efficient, requiring # only a small set and an occasional reselection. For # a larger number of selections, the pool tracking method is # preferred since the list takes less space than the # set and it doesn't suffer from frequent reselections. # The number of calls to _randbelow() is kept at or near k, the # theoretical minimum. This is important because running time # is dominated by _randbelow() and because it extracts the # least entropy from the underlying random number generators. # Memory requirements are kept to the smaller of a k-length # set or an n-length list. # There are other sampling algorithms that do not require # auxiliary memory, but they were rejected because they made # too many calls to _randbelow(), making them slower and # causing them to eat more entropy than necessary. if not isinstance(population, _Sequence): > raise TypeError("Population must be a sequence. " "For dicts or sets, use sorted(d).") E TypeError: Population must be a sequence. For dicts or sets, use sorted(d). /usr/lib64/python3.11/random.py:439: TypeError ______ test_reassignment_with_random_subscriptions_and_changes[82-20-22] _______ mocker = execution_number = 82, n_topics = 20, n_consumers = 22 @pytest.mark.parametrize( 'execution_number,n_topics,n_consumers', [(i, randint(10, 20), randint(20, 40)) for i in range(100)] ) def test_reassignment_with_random_subscriptions_and_changes(mocker, execution_number, n_topics, n_consumers): all_topics = set(['t{}'.format(i) for i in range(1, n_topics + 1)]) partitions = dict([(t, set(range(1, i + 1))) for i, t in enumerate(all_topics)]) cluster = create_cluster(mocker, topics=all_topics, topic_partitions_lambda=lambda t: partitions[t]) subscriptions = defaultdict(set) for i in range(n_consumers): > topics_sample = sample(all_topics, randint(1, len(all_topics) - 1)) test/test_assignors.py:664: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = population = {'t1', 't10', 't11', 't12', 't13', 't14', ...}, k = 10 def sample(self, population, k, *, counts=None): """Chooses k unique random elements from a population sequence. Returns a new list containing elements from the population while leaving the original population unchanged. The resulting list is in selection order so that all sub-slices will also be valid random samples. This allows raffle winners (the sample) to be partitioned into grand prize and second place winners (the subslices). Members of the population need not be hashable or unique. If the population contains repeats, then each occurrence is a possible selection in the sample. Repeated elements can be specified one at a time or with the optional counts parameter. For example: sample(['red', 'blue'], counts=[4, 2], k=5) is equivalent to: sample(['red', 'red', 'red', 'red', 'blue', 'blue'], k=5) To choose a sample from a range of integers, use range() for the population argument. This is especially fast and space efficient for sampling from a large population: sample(range(10000000), 60) """ # Sampling without replacement entails tracking either potential # selections (the pool) in a list or previous selections in a set. # When the number of selections is small compared to the # population, then tracking selections is efficient, requiring # only a small set and an occasional reselection. For # a larger number of selections, the pool tracking method is # preferred since the list takes less space than the # set and it doesn't suffer from frequent reselections. # The number of calls to _randbelow() is kept at or near k, the # theoretical minimum. This is important because running time # is dominated by _randbelow() and because it extracts the # least entropy from the underlying random number generators. # Memory requirements are kept to the smaller of a k-length # set or an n-length list. # There are other sampling algorithms that do not require # auxiliary memory, but they were rejected because they made # too many calls to _randbelow(), making them slower and # causing them to eat more entropy than necessary. if not isinstance(population, _Sequence): > raise TypeError("Population must be a sequence. " "For dicts or sets, use sorted(d).") E TypeError: Population must be a sequence. For dicts or sets, use sorted(d). /usr/lib64/python3.11/random.py:439: TypeError ______ test_reassignment_with_random_subscriptions_and_changes[83-15-28] _______ mocker = execution_number = 83, n_topics = 15, n_consumers = 28 @pytest.mark.parametrize( 'execution_number,n_topics,n_consumers', [(i, randint(10, 20), randint(20, 40)) for i in range(100)] ) def test_reassignment_with_random_subscriptions_and_changes(mocker, execution_number, n_topics, n_consumers): all_topics = set(['t{}'.format(i) for i in range(1, n_topics + 1)]) partitions = dict([(t, set(range(1, i + 1))) for i, t in enumerate(all_topics)]) cluster = create_cluster(mocker, topics=all_topics, topic_partitions_lambda=lambda t: partitions[t]) subscriptions = defaultdict(set) for i in range(n_consumers): > topics_sample = sample(all_topics, randint(1, len(all_topics) - 1)) test/test_assignors.py:664: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = population = {'t1', 't10', 't11', 't12', 't13', 't14', ...}, k = 1 def sample(self, population, k, *, counts=None): """Chooses k unique random elements from a population sequence. Returns a new list containing elements from the population while leaving the original population unchanged. The resulting list is in selection order so that all sub-slices will also be valid random samples. This allows raffle winners (the sample) to be partitioned into grand prize and second place winners (the subslices). Members of the population need not be hashable or unique. If the population contains repeats, then each occurrence is a possible selection in the sample. Repeated elements can be specified one at a time or with the optional counts parameter. For example: sample(['red', 'blue'], counts=[4, 2], k=5) is equivalent to: sample(['red', 'red', 'red', 'red', 'blue', 'blue'], k=5) To choose a sample from a range of integers, use range() for the population argument. This is especially fast and space efficient for sampling from a large population: sample(range(10000000), 60) """ # Sampling without replacement entails tracking either potential # selections (the pool) in a list or previous selections in a set. # When the number of selections is small compared to the # population, then tracking selections is efficient, requiring # only a small set and an occasional reselection. For # a larger number of selections, the pool tracking method is # preferred since the list takes less space than the # set and it doesn't suffer from frequent reselections. # The number of calls to _randbelow() is kept at or near k, the # theoretical minimum. This is important because running time # is dominated by _randbelow() and because it extracts the # least entropy from the underlying random number generators. # Memory requirements are kept to the smaller of a k-length # set or an n-length list. # There are other sampling algorithms that do not require # auxiliary memory, but they were rejected because they made # too many calls to _randbelow(), making them slower and # causing them to eat more entropy than necessary. if not isinstance(population, _Sequence): > raise TypeError("Population must be a sequence. " "For dicts or sets, use sorted(d).") E TypeError: Population must be a sequence. For dicts or sets, use sorted(d). /usr/lib64/python3.11/random.py:439: TypeError ______ test_reassignment_with_random_subscriptions_and_changes[84-16-39] _______ mocker = execution_number = 84, n_topics = 16, n_consumers = 39 @pytest.mark.parametrize( 'execution_number,n_topics,n_consumers', [(i, randint(10, 20), randint(20, 40)) for i in range(100)] ) def test_reassignment_with_random_subscriptions_and_changes(mocker, execution_number, n_topics, n_consumers): all_topics = set(['t{}'.format(i) for i in range(1, n_topics + 1)]) partitions = dict([(t, set(range(1, i + 1))) for i, t in enumerate(all_topics)]) cluster = create_cluster(mocker, topics=all_topics, topic_partitions_lambda=lambda t: partitions[t]) subscriptions = defaultdict(set) for i in range(n_consumers): > topics_sample = sample(all_topics, randint(1, len(all_topics) - 1)) test/test_assignors.py:664: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = population = {'t1', 't10', 't11', 't12', 't13', 't14', ...}, k = 12 def sample(self, population, k, *, counts=None): """Chooses k unique random elements from a population sequence. Returns a new list containing elements from the population while leaving the original population unchanged. The resulting list is in selection order so that all sub-slices will also be valid random samples. This allows raffle winners (the sample) to be partitioned into grand prize and second place winners (the subslices). Members of the population need not be hashable or unique. If the population contains repeats, then each occurrence is a possible selection in the sample. Repeated elements can be specified one at a time or with the optional counts parameter. For example: sample(['red', 'blue'], counts=[4, 2], k=5) is equivalent to: sample(['red', 'red', 'red', 'red', 'blue', 'blue'], k=5) To choose a sample from a range of integers, use range() for the population argument. This is especially fast and space efficient for sampling from a large population: sample(range(10000000), 60) """ # Sampling without replacement entails tracking either potential # selections (the pool) in a list or previous selections in a set. # When the number of selections is small compared to the # population, then tracking selections is efficient, requiring # only a small set and an occasional reselection. For # a larger number of selections, the pool tracking method is # preferred since the list takes less space than the # set and it doesn't suffer from frequent reselections. # The number of calls to _randbelow() is kept at or near k, the # theoretical minimum. This is important because running time # is dominated by _randbelow() and because it extracts the # least entropy from the underlying random number generators. # Memory requirements are kept to the smaller of a k-length # set or an n-length list. # There are other sampling algorithms that do not require # auxiliary memory, but they were rejected because they made # too many calls to _randbelow(), making them slower and # causing them to eat more entropy than necessary. if not isinstance(population, _Sequence): > raise TypeError("Population must be a sequence. " "For dicts or sets, use sorted(d).") E TypeError: Population must be a sequence. For dicts or sets, use sorted(d). /usr/lib64/python3.11/random.py:439: TypeError ______ test_reassignment_with_random_subscriptions_and_changes[85-10-40] _______ mocker = execution_number = 85, n_topics = 10, n_consumers = 40 @pytest.mark.parametrize( 'execution_number,n_topics,n_consumers', [(i, randint(10, 20), randint(20, 40)) for i in range(100)] ) def test_reassignment_with_random_subscriptions_and_changes(mocker, execution_number, n_topics, n_consumers): all_topics = set(['t{}'.format(i) for i in range(1, n_topics + 1)]) partitions = dict([(t, set(range(1, i + 1))) for i, t in enumerate(all_topics)]) cluster = create_cluster(mocker, topics=all_topics, topic_partitions_lambda=lambda t: partitions[t]) subscriptions = defaultdict(set) for i in range(n_consumers): > topics_sample = sample(all_topics, randint(1, len(all_topics) - 1)) test/test_assignors.py:664: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = population = {'t1', 't10', 't2', 't3', 't4', 't5', ...}, k = 1 def sample(self, population, k, *, counts=None): """Chooses k unique random elements from a population sequence. Returns a new list containing elements from the population while leaving the original population unchanged. The resulting list is in selection order so that all sub-slices will also be valid random samples. This allows raffle winners (the sample) to be partitioned into grand prize and second place winners (the subslices). Members of the population need not be hashable or unique. If the population contains repeats, then each occurrence is a possible selection in the sample. Repeated elements can be specified one at a time or with the optional counts parameter. For example: sample(['red', 'blue'], counts=[4, 2], k=5) is equivalent to: sample(['red', 'red', 'red', 'red', 'blue', 'blue'], k=5) To choose a sample from a range of integers, use range() for the population argument. This is especially fast and space efficient for sampling from a large population: sample(range(10000000), 60) """ # Sampling without replacement entails tracking either potential # selections (the pool) in a list or previous selections in a set. # When the number of selections is small compared to the # population, then tracking selections is efficient, requiring # only a small set and an occasional reselection. For # a larger number of selections, the pool tracking method is # preferred since the list takes less space than the # set and it doesn't suffer from frequent reselections. # The number of calls to _randbelow() is kept at or near k, the # theoretical minimum. This is important because running time # is dominated by _randbelow() and because it extracts the # least entropy from the underlying random number generators. # Memory requirements are kept to the smaller of a k-length # set or an n-length list. # There are other sampling algorithms that do not require # auxiliary memory, but they were rejected because they made # too many calls to _randbelow(), making them slower and # causing them to eat more entropy than necessary. if not isinstance(population, _Sequence): > raise TypeError("Population must be a sequence. " "For dicts or sets, use sorted(d).") E TypeError: Population must be a sequence. For dicts or sets, use sorted(d). /usr/lib64/python3.11/random.py:439: TypeError ______ test_reassignment_with_random_subscriptions_and_changes[86-15-39] _______ mocker = execution_number = 86, n_topics = 15, n_consumers = 39 @pytest.mark.parametrize( 'execution_number,n_topics,n_consumers', [(i, randint(10, 20), randint(20, 40)) for i in range(100)] ) def test_reassignment_with_random_subscriptions_and_changes(mocker, execution_number, n_topics, n_consumers): all_topics = set(['t{}'.format(i) for i in range(1, n_topics + 1)]) partitions = dict([(t, set(range(1, i + 1))) for i, t in enumerate(all_topics)]) cluster = create_cluster(mocker, topics=all_topics, topic_partitions_lambda=lambda t: partitions[t]) subscriptions = defaultdict(set) for i in range(n_consumers): > topics_sample = sample(all_topics, randint(1, len(all_topics) - 1)) test/test_assignors.py:664: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = population = {'t1', 't10', 't11', 't12', 't13', 't14', ...}, k = 6 def sample(self, population, k, *, counts=None): """Chooses k unique random elements from a population sequence. Returns a new list containing elements from the population while leaving the original population unchanged. The resulting list is in selection order so that all sub-slices will also be valid random samples. This allows raffle winners (the sample) to be partitioned into grand prize and second place winners (the subslices). Members of the population need not be hashable or unique. If the population contains repeats, then each occurrence is a possible selection in the sample. Repeated elements can be specified one at a time or with the optional counts parameter. For example: sample(['red', 'blue'], counts=[4, 2], k=5) is equivalent to: sample(['red', 'red', 'red', 'red', 'blue', 'blue'], k=5) To choose a sample from a range of integers, use range() for the population argument. This is especially fast and space efficient for sampling from a large population: sample(range(10000000), 60) """ # Sampling without replacement entails tracking either potential # selections (the pool) in a list or previous selections in a set. # When the number of selections is small compared to the # population, then tracking selections is efficient, requiring # only a small set and an occasional reselection. For # a larger number of selections, the pool tracking method is # preferred since the list takes less space than the # set and it doesn't suffer from frequent reselections. # The number of calls to _randbelow() is kept at or near k, the # theoretical minimum. This is important because running time # is dominated by _randbelow() and because it extracts the # least entropy from the underlying random number generators. # Memory requirements are kept to the smaller of a k-length # set or an n-length list. # There are other sampling algorithms that do not require # auxiliary memory, but they were rejected because they made # too many calls to _randbelow(), making them slower and # causing them to eat more entropy than necessary. if not isinstance(population, _Sequence): > raise TypeError("Population must be a sequence. " "For dicts or sets, use sorted(d).") E TypeError: Population must be a sequence. For dicts or sets, use sorted(d). /usr/lib64/python3.11/random.py:439: TypeError ______ test_reassignment_with_random_subscriptions_and_changes[87-11-39] _______ mocker = execution_number = 87, n_topics = 11, n_consumers = 39 @pytest.mark.parametrize( 'execution_number,n_topics,n_consumers', [(i, randint(10, 20), randint(20, 40)) for i in range(100)] ) def test_reassignment_with_random_subscriptions_and_changes(mocker, execution_number, n_topics, n_consumers): all_topics = set(['t{}'.format(i) for i in range(1, n_topics + 1)]) partitions = dict([(t, set(range(1, i + 1))) for i, t in enumerate(all_topics)]) cluster = create_cluster(mocker, topics=all_topics, topic_partitions_lambda=lambda t: partitions[t]) subscriptions = defaultdict(set) for i in range(n_consumers): > topics_sample = sample(all_topics, randint(1, len(all_topics) - 1)) test/test_assignors.py:664: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = population = {'t1', 't10', 't11', 't2', 't3', 't4', ...}, k = 4 def sample(self, population, k, *, counts=None): """Chooses k unique random elements from a population sequence. Returns a new list containing elements from the population while leaving the original population unchanged. The resulting list is in selection order so that all sub-slices will also be valid random samples. This allows raffle winners (the sample) to be partitioned into grand prize and second place winners (the subslices). Members of the population need not be hashable or unique. If the population contains repeats, then each occurrence is a possible selection in the sample. Repeated elements can be specified one at a time or with the optional counts parameter. For example: sample(['red', 'blue'], counts=[4, 2], k=5) is equivalent to: sample(['red', 'red', 'red', 'red', 'blue', 'blue'], k=5) To choose a sample from a range of integers, use range() for the population argument. This is especially fast and space efficient for sampling from a large population: sample(range(10000000), 60) """ # Sampling without replacement entails tracking either potential # selections (the pool) in a list or previous selections in a set. # When the number of selections is small compared to the # population, then tracking selections is efficient, requiring # only a small set and an occasional reselection. For # a larger number of selections, the pool tracking method is # preferred since the list takes less space than the # set and it doesn't suffer from frequent reselections. # The number of calls to _randbelow() is kept at or near k, the # theoretical minimum. This is important because running time # is dominated by _randbelow() and because it extracts the # least entropy from the underlying random number generators. # Memory requirements are kept to the smaller of a k-length # set or an n-length list. # There are other sampling algorithms that do not require # auxiliary memory, but they were rejected because they made # too many calls to _randbelow(), making them slower and # causing them to eat more entropy than necessary. if not isinstance(population, _Sequence): > raise TypeError("Population must be a sequence. " "For dicts or sets, use sorted(d).") E TypeError: Population must be a sequence. For dicts or sets, use sorted(d). /usr/lib64/python3.11/random.py:439: TypeError ______ test_reassignment_with_random_subscriptions_and_changes[88-20-23] _______ mocker = execution_number = 88, n_topics = 20, n_consumers = 23 @pytest.mark.parametrize( 'execution_number,n_topics,n_consumers', [(i, randint(10, 20), randint(20, 40)) for i in range(100)] ) def test_reassignment_with_random_subscriptions_and_changes(mocker, execution_number, n_topics, n_consumers): all_topics = set(['t{}'.format(i) for i in range(1, n_topics + 1)]) partitions = dict([(t, set(range(1, i + 1))) for i, t in enumerate(all_topics)]) cluster = create_cluster(mocker, topics=all_topics, topic_partitions_lambda=lambda t: partitions[t]) subscriptions = defaultdict(set) for i in range(n_consumers): > topics_sample = sample(all_topics, randint(1, len(all_topics) - 1)) test/test_assignors.py:664: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = population = {'t1', 't10', 't11', 't12', 't13', 't14', ...}, k = 10 def sample(self, population, k, *, counts=None): """Chooses k unique random elements from a population sequence. Returns a new list containing elements from the population while leaving the original population unchanged. The resulting list is in selection order so that all sub-slices will also be valid random samples. This allows raffle winners (the sample) to be partitioned into grand prize and second place winners (the subslices). Members of the population need not be hashable or unique. If the population contains repeats, then each occurrence is a possible selection in the sample. Repeated elements can be specified one at a time or with the optional counts parameter. For example: sample(['red', 'blue'], counts=[4, 2], k=5) is equivalent to: sample(['red', 'red', 'red', 'red', 'blue', 'blue'], k=5) To choose a sample from a range of integers, use range() for the population argument. This is especially fast and space efficient for sampling from a large population: sample(range(10000000), 60) """ # Sampling without replacement entails tracking either potential # selections (the pool) in a list or previous selections in a set. # When the number of selections is small compared to the # population, then tracking selections is efficient, requiring # only a small set and an occasional reselection. For # a larger number of selections, the pool tracking method is # preferred since the list takes less space than the # set and it doesn't suffer from frequent reselections. # The number of calls to _randbelow() is kept at or near k, the # theoretical minimum. This is important because running time # is dominated by _randbelow() and because it extracts the # least entropy from the underlying random number generators. # Memory requirements are kept to the smaller of a k-length # set or an n-length list. # There are other sampling algorithms that do not require # auxiliary memory, but they were rejected because they made # too many calls to _randbelow(), making them slower and # causing them to eat more entropy than necessary. if not isinstance(population, _Sequence): > raise TypeError("Population must be a sequence. " "For dicts or sets, use sorted(d).") E TypeError: Population must be a sequence. For dicts or sets, use sorted(d). /usr/lib64/python3.11/random.py:439: TypeError ______ test_reassignment_with_random_subscriptions_and_changes[89-10-37] _______ mocker = execution_number = 89, n_topics = 10, n_consumers = 37 @pytest.mark.parametrize( 'execution_number,n_topics,n_consumers', [(i, randint(10, 20), randint(20, 40)) for i in range(100)] ) def test_reassignment_with_random_subscriptions_and_changes(mocker, execution_number, n_topics, n_consumers): all_topics = set(['t{}'.format(i) for i in range(1, n_topics + 1)]) partitions = dict([(t, set(range(1, i + 1))) for i, t in enumerate(all_topics)]) cluster = create_cluster(mocker, topics=all_topics, topic_partitions_lambda=lambda t: partitions[t]) subscriptions = defaultdict(set) for i in range(n_consumers): > topics_sample = sample(all_topics, randint(1, len(all_topics) - 1)) test/test_assignors.py:664: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = population = {'t1', 't10', 't2', 't3', 't4', 't5', ...}, k = 8 def sample(self, population, k, *, counts=None): """Chooses k unique random elements from a population sequence. Returns a new list containing elements from the population while leaving the original population unchanged. The resulting list is in selection order so that all sub-slices will also be valid random samples. This allows raffle winners (the sample) to be partitioned into grand prize and second place winners (the subslices). Members of the population need not be hashable or unique. If the population contains repeats, then each occurrence is a possible selection in the sample. Repeated elements can be specified one at a time or with the optional counts parameter. For example: sample(['red', 'blue'], counts=[4, 2], k=5) is equivalent to: sample(['red', 'red', 'red', 'red', 'blue', 'blue'], k=5) To choose a sample from a range of integers, use range() for the population argument. This is especially fast and space efficient for sampling from a large population: sample(range(10000000), 60) """ # Sampling without replacement entails tracking either potential # selections (the pool) in a list or previous selections in a set. # When the number of selections is small compared to the # population, then tracking selections is efficient, requiring # only a small set and an occasional reselection. For # a larger number of selections, the pool tracking method is # preferred since the list takes less space than the # set and it doesn't suffer from frequent reselections. # The number of calls to _randbelow() is kept at or near k, the # theoretical minimum. This is important because running time # is dominated by _randbelow() and because it extracts the # least entropy from the underlying random number generators. # Memory requirements are kept to the smaller of a k-length # set or an n-length list. # There are other sampling algorithms that do not require # auxiliary memory, but they were rejected because they made # too many calls to _randbelow(), making them slower and # causing them to eat more entropy than necessary. if not isinstance(population, _Sequence): > raise TypeError("Population must be a sequence. " "For dicts or sets, use sorted(d).") E TypeError: Population must be a sequence. For dicts or sets, use sorted(d). /usr/lib64/python3.11/random.py:439: TypeError ______ test_reassignment_with_random_subscriptions_and_changes[90-12-21] _______ mocker = execution_number = 90, n_topics = 12, n_consumers = 21 @pytest.mark.parametrize( 'execution_number,n_topics,n_consumers', [(i, randint(10, 20), randint(20, 40)) for i in range(100)] ) def test_reassignment_with_random_subscriptions_and_changes(mocker, execution_number, n_topics, n_consumers): all_topics = set(['t{}'.format(i) for i in range(1, n_topics + 1)]) partitions = dict([(t, set(range(1, i + 1))) for i, t in enumerate(all_topics)]) cluster = create_cluster(mocker, topics=all_topics, topic_partitions_lambda=lambda t: partitions[t]) subscriptions = defaultdict(set) for i in range(n_consumers): > topics_sample = sample(all_topics, randint(1, len(all_topics) - 1)) test/test_assignors.py:664: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = population = {'t1', 't10', 't11', 't12', 't2', 't3', ...}, k = 5 def sample(self, population, k, *, counts=None): """Chooses k unique random elements from a population sequence. Returns a new list containing elements from the population while leaving the original population unchanged. The resulting list is in selection order so that all sub-slices will also be valid random samples. This allows raffle winners (the sample) to be partitioned into grand prize and second place winners (the subslices). Members of the population need not be hashable or unique. If the population contains repeats, then each occurrence is a possible selection in the sample. Repeated elements can be specified one at a time or with the optional counts parameter. For example: sample(['red', 'blue'], counts=[4, 2], k=5) is equivalent to: sample(['red', 'red', 'red', 'red', 'blue', 'blue'], k=5) To choose a sample from a range of integers, use range() for the population argument. This is especially fast and space efficient for sampling from a large population: sample(range(10000000), 60) """ # Sampling without replacement entails tracking either potential # selections (the pool) in a list or previous selections in a set. # When the number of selections is small compared to the # population, then tracking selections is efficient, requiring # only a small set and an occasional reselection. For # a larger number of selections, the pool tracking method is # preferred since the list takes less space than the # set and it doesn't suffer from frequent reselections. # The number of calls to _randbelow() is kept at or near k, the # theoretical minimum. This is important because running time # is dominated by _randbelow() and because it extracts the # least entropy from the underlying random number generators. # Memory requirements are kept to the smaller of a k-length # set or an n-length list. # There are other sampling algorithms that do not require # auxiliary memory, but they were rejected because they made # too many calls to _randbelow(), making them slower and # causing them to eat more entropy than necessary. if not isinstance(population, _Sequence): > raise TypeError("Population must be a sequence. " "For dicts or sets, use sorted(d).") E TypeError: Population must be a sequence. For dicts or sets, use sorted(d). /usr/lib64/python3.11/random.py:439: TypeError ______ test_reassignment_with_random_subscriptions_and_changes[91-13-21] _______ mocker = execution_number = 91, n_topics = 13, n_consumers = 21 @pytest.mark.parametrize( 'execution_number,n_topics,n_consumers', [(i, randint(10, 20), randint(20, 40)) for i in range(100)] ) def test_reassignment_with_random_subscriptions_and_changes(mocker, execution_number, n_topics, n_consumers): all_topics = set(['t{}'.format(i) for i in range(1, n_topics + 1)]) partitions = dict([(t, set(range(1, i + 1))) for i, t in enumerate(all_topics)]) cluster = create_cluster(mocker, topics=all_topics, topic_partitions_lambda=lambda t: partitions[t]) subscriptions = defaultdict(set) for i in range(n_consumers): > topics_sample = sample(all_topics, randint(1, len(all_topics) - 1)) test/test_assignors.py:664: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = population = {'t1', 't10', 't11', 't12', 't13', 't2', ...}, k = 4 def sample(self, population, k, *, counts=None): """Chooses k unique random elements from a population sequence. Returns a new list containing elements from the population while leaving the original population unchanged. The resulting list is in selection order so that all sub-slices will also be valid random samples. This allows raffle winners (the sample) to be partitioned into grand prize and second place winners (the subslices). Members of the population need not be hashable or unique. If the population contains repeats, then each occurrence is a possible selection in the sample. Repeated elements can be specified one at a time or with the optional counts parameter. For example: sample(['red', 'blue'], counts=[4, 2], k=5) is equivalent to: sample(['red', 'red', 'red', 'red', 'blue', 'blue'], k=5) To choose a sample from a range of integers, use range() for the population argument. This is especially fast and space efficient for sampling from a large population: sample(range(10000000), 60) """ # Sampling without replacement entails tracking either potential # selections (the pool) in a list or previous selections in a set. # When the number of selections is small compared to the # population, then tracking selections is efficient, requiring # only a small set and an occasional reselection. For # a larger number of selections, the pool tracking method is # preferred since the list takes less space than the # set and it doesn't suffer from frequent reselections. # The number of calls to _randbelow() is kept at or near k, the # theoretical minimum. This is important because running time # is dominated by _randbelow() and because it extracts the # least entropy from the underlying random number generators. # Memory requirements are kept to the smaller of a k-length # set or an n-length list. # There are other sampling algorithms that do not require # auxiliary memory, but they were rejected because they made # too many calls to _randbelow(), making them slower and # causing them to eat more entropy than necessary. if not isinstance(population, _Sequence): > raise TypeError("Population must be a sequence. " "For dicts or sets, use sorted(d).") E TypeError: Population must be a sequence. For dicts or sets, use sorted(d). /usr/lib64/python3.11/random.py:439: TypeError ______ test_reassignment_with_random_subscriptions_and_changes[92-19-38] _______ mocker = execution_number = 92, n_topics = 19, n_consumers = 38 @pytest.mark.parametrize( 'execution_number,n_topics,n_consumers', [(i, randint(10, 20), randint(20, 40)) for i in range(100)] ) def test_reassignment_with_random_subscriptions_and_changes(mocker, execution_number, n_topics, n_consumers): all_topics = set(['t{}'.format(i) for i in range(1, n_topics + 1)]) partitions = dict([(t, set(range(1, i + 1))) for i, t in enumerate(all_topics)]) cluster = create_cluster(mocker, topics=all_topics, topic_partitions_lambda=lambda t: partitions[t]) subscriptions = defaultdict(set) for i in range(n_consumers): > topics_sample = sample(all_topics, randint(1, len(all_topics) - 1)) test/test_assignors.py:664: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = population = {'t1', 't10', 't11', 't12', 't13', 't14', ...}, k = 11 def sample(self, population, k, *, counts=None): """Chooses k unique random elements from a population sequence. Returns a new list containing elements from the population while leaving the original population unchanged. The resulting list is in selection order so that all sub-slices will also be valid random samples. This allows raffle winners (the sample) to be partitioned into grand prize and second place winners (the subslices). Members of the population need not be hashable or unique. If the population contains repeats, then each occurrence is a possible selection in the sample. Repeated elements can be specified one at a time or with the optional counts parameter. For example: sample(['red', 'blue'], counts=[4, 2], k=5) is equivalent to: sample(['red', 'red', 'red', 'red', 'blue', 'blue'], k=5) To choose a sample from a range of integers, use range() for the population argument. This is especially fast and space efficient for sampling from a large population: sample(range(10000000), 60) """ # Sampling without replacement entails tracking either potential # selections (the pool) in a list or previous selections in a set. # When the number of selections is small compared to the # population, then tracking selections is efficient, requiring # only a small set and an occasional reselection. For # a larger number of selections, the pool tracking method is # preferred since the list takes less space than the # set and it doesn't suffer from frequent reselections. # The number of calls to _randbelow() is kept at or near k, the # theoretical minimum. This is important because running time # is dominated by _randbelow() and because it extracts the # least entropy from the underlying random number generators. # Memory requirements are kept to the smaller of a k-length # set or an n-length list. # There are other sampling algorithms that do not require # auxiliary memory, but they were rejected because they made # too many calls to _randbelow(), making them slower and # causing them to eat more entropy than necessary. if not isinstance(population, _Sequence): > raise TypeError("Population must be a sequence. " "For dicts or sets, use sorted(d).") E TypeError: Population must be a sequence. For dicts or sets, use sorted(d). /usr/lib64/python3.11/random.py:439: TypeError ______ test_reassignment_with_random_subscriptions_and_changes[93-17-34] _______ mocker = execution_number = 93, n_topics = 17, n_consumers = 34 @pytest.mark.parametrize( 'execution_number,n_topics,n_consumers', [(i, randint(10, 20), randint(20, 40)) for i in range(100)] ) def test_reassignment_with_random_subscriptions_and_changes(mocker, execution_number, n_topics, n_consumers): all_topics = set(['t{}'.format(i) for i in range(1, n_topics + 1)]) partitions = dict([(t, set(range(1, i + 1))) for i, t in enumerate(all_topics)]) cluster = create_cluster(mocker, topics=all_topics, topic_partitions_lambda=lambda t: partitions[t]) subscriptions = defaultdict(set) for i in range(n_consumers): > topics_sample = sample(all_topics, randint(1, len(all_topics) - 1)) test/test_assignors.py:664: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = population = {'t1', 't10', 't11', 't12', 't13', 't14', ...}, k = 8 def sample(self, population, k, *, counts=None): """Chooses k unique random elements from a population sequence. Returns a new list containing elements from the population while leaving the original population unchanged. The resulting list is in selection order so that all sub-slices will also be valid random samples. This allows raffle winners (the sample) to be partitioned into grand prize and second place winners (the subslices). Members of the population need not be hashable or unique. If the population contains repeats, then each occurrence is a possible selection in the sample. Repeated elements can be specified one at a time or with the optional counts parameter. For example: sample(['red', 'blue'], counts=[4, 2], k=5) is equivalent to: sample(['red', 'red', 'red', 'red', 'blue', 'blue'], k=5) To choose a sample from a range of integers, use range() for the population argument. This is especially fast and space efficient for sampling from a large population: sample(range(10000000), 60) """ # Sampling without replacement entails tracking either potential # selections (the pool) in a list or previous selections in a set. # When the number of selections is small compared to the # population, then tracking selections is efficient, requiring # only a small set and an occasional reselection. For # a larger number of selections, the pool tracking method is # preferred since the list takes less space than the # set and it doesn't suffer from frequent reselections. # The number of calls to _randbelow() is kept at or near k, the # theoretical minimum. This is important because running time # is dominated by _randbelow() and because it extracts the # least entropy from the underlying random number generators. # Memory requirements are kept to the smaller of a k-length # set or an n-length list. # There are other sampling algorithms that do not require # auxiliary memory, but they were rejected because they made # too many calls to _randbelow(), making them slower and # causing them to eat more entropy than necessary. if not isinstance(population, _Sequence): > raise TypeError("Population must be a sequence. " "For dicts or sets, use sorted(d).") E TypeError: Population must be a sequence. For dicts or sets, use sorted(d). /usr/lib64/python3.11/random.py:439: TypeError ______ test_reassignment_with_random_subscriptions_and_changes[94-12-30] _______ mocker = execution_number = 94, n_topics = 12, n_consumers = 30 @pytest.mark.parametrize( 'execution_number,n_topics,n_consumers', [(i, randint(10, 20), randint(20, 40)) for i in range(100)] ) def test_reassignment_with_random_subscriptions_and_changes(mocker, execution_number, n_topics, n_consumers): all_topics = set(['t{}'.format(i) for i in range(1, n_topics + 1)]) partitions = dict([(t, set(range(1, i + 1))) for i, t in enumerate(all_topics)]) cluster = create_cluster(mocker, topics=all_topics, topic_partitions_lambda=lambda t: partitions[t]) subscriptions = defaultdict(set) for i in range(n_consumers): > topics_sample = sample(all_topics, randint(1, len(all_topics) - 1)) test/test_assignors.py:664: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = population = {'t1', 't10', 't11', 't12', 't2', 't3', ...}, k = 2 def sample(self, population, k, *, counts=None): """Chooses k unique random elements from a population sequence. Returns a new list containing elements from the population while leaving the original population unchanged. The resulting list is in selection order so that all sub-slices will also be valid random samples. This allows raffle winners (the sample) to be partitioned into grand prize and second place winners (the subslices). Members of the population need not be hashable or unique. If the population contains repeats, then each occurrence is a possible selection in the sample. Repeated elements can be specified one at a time or with the optional counts parameter. For example: sample(['red', 'blue'], counts=[4, 2], k=5) is equivalent to: sample(['red', 'red', 'red', 'red', 'blue', 'blue'], k=5) To choose a sample from a range of integers, use range() for the population argument. This is especially fast and space efficient for sampling from a large population: sample(range(10000000), 60) """ # Sampling without replacement entails tracking either potential # selections (the pool) in a list or previous selections in a set. # When the number of selections is small compared to the # population, then tracking selections is efficient, requiring # only a small set and an occasional reselection. For # a larger number of selections, the pool tracking method is # preferred since the list takes less space than the # set and it doesn't suffer from frequent reselections. # The number of calls to _randbelow() is kept at or near k, the # theoretical minimum. This is important because running time # is dominated by _randbelow() and because it extracts the # least entropy from the underlying random number generators. # Memory requirements are kept to the smaller of a k-length # set or an n-length list. # There are other sampling algorithms that do not require # auxiliary memory, but they were rejected because they made # too many calls to _randbelow(), making them slower and # causing them to eat more entropy than necessary. if not isinstance(population, _Sequence): > raise TypeError("Population must be a sequence. " "For dicts or sets, use sorted(d).") E TypeError: Population must be a sequence. For dicts or sets, use sorted(d). /usr/lib64/python3.11/random.py:439: TypeError ______ test_reassignment_with_random_subscriptions_and_changes[95-11-24] _______ mocker = execution_number = 95, n_topics = 11, n_consumers = 24 @pytest.mark.parametrize( 'execution_number,n_topics,n_consumers', [(i, randint(10, 20), randint(20, 40)) for i in range(100)] ) def test_reassignment_with_random_subscriptions_and_changes(mocker, execution_number, n_topics, n_consumers): all_topics = set(['t{}'.format(i) for i in range(1, n_topics + 1)]) partitions = dict([(t, set(range(1, i + 1))) for i, t in enumerate(all_topics)]) cluster = create_cluster(mocker, topics=all_topics, topic_partitions_lambda=lambda t: partitions[t]) subscriptions = defaultdict(set) for i in range(n_consumers): > topics_sample = sample(all_topics, randint(1, len(all_topics) - 1)) test/test_assignors.py:664: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = population = {'t1', 't10', 't11', 't2', 't3', 't4', ...}, k = 7 def sample(self, population, k, *, counts=None): """Chooses k unique random elements from a population sequence. Returns a new list containing elements from the population while leaving the original population unchanged. The resulting list is in selection order so that all sub-slices will also be valid random samples. This allows raffle winners (the sample) to be partitioned into grand prize and second place winners (the subslices). Members of the population need not be hashable or unique. If the population contains repeats, then each occurrence is a possible selection in the sample. Repeated elements can be specified one at a time or with the optional counts parameter. For example: sample(['red', 'blue'], counts=[4, 2], k=5) is equivalent to: sample(['red', 'red', 'red', 'red', 'blue', 'blue'], k=5) To choose a sample from a range of integers, use range() for the population argument. This is especially fast and space efficient for sampling from a large population: sample(range(10000000), 60) """ # Sampling without replacement entails tracking either potential # selections (the pool) in a list or previous selections in a set. # When the number of selections is small compared to the # population, then tracking selections is efficient, requiring # only a small set and an occasional reselection. For # a larger number of selections, the pool tracking method is # preferred since the list takes less space than the # set and it doesn't suffer from frequent reselections. # The number of calls to _randbelow() is kept at or near k, the # theoretical minimum. This is important because running time # is dominated by _randbelow() and because it extracts the # least entropy from the underlying random number generators. # Memory requirements are kept to the smaller of a k-length # set or an n-length list. # There are other sampling algorithms that do not require # auxiliary memory, but they were rejected because they made # too many calls to _randbelow(), making them slower and # causing them to eat more entropy than necessary. if not isinstance(population, _Sequence): > raise TypeError("Population must be a sequence. " "For dicts or sets, use sorted(d).") E TypeError: Population must be a sequence. For dicts or sets, use sorted(d). /usr/lib64/python3.11/random.py:439: TypeError ______ test_reassignment_with_random_subscriptions_and_changes[96-12-28] _______ mocker = execution_number = 96, n_topics = 12, n_consumers = 28 @pytest.mark.parametrize( 'execution_number,n_topics,n_consumers', [(i, randint(10, 20), randint(20, 40)) for i in range(100)] ) def test_reassignment_with_random_subscriptions_and_changes(mocker, execution_number, n_topics, n_consumers): all_topics = set(['t{}'.format(i) for i in range(1, n_topics + 1)]) partitions = dict([(t, set(range(1, i + 1))) for i, t in enumerate(all_topics)]) cluster = create_cluster(mocker, topics=all_topics, topic_partitions_lambda=lambda t: partitions[t]) subscriptions = defaultdict(set) for i in range(n_consumers): > topics_sample = sample(all_topics, randint(1, len(all_topics) - 1)) test/test_assignors.py:664: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = population = {'t1', 't10', 't11', 't12', 't2', 't3', ...}, k = 9 def sample(self, population, k, *, counts=None): """Chooses k unique random elements from a population sequence. Returns a new list containing elements from the population while leaving the original population unchanged. The resulting list is in selection order so that all sub-slices will also be valid random samples. This allows raffle winners (the sample) to be partitioned into grand prize and second place winners (the subslices). Members of the population need not be hashable or unique. If the population contains repeats, then each occurrence is a possible selection in the sample. Repeated elements can be specified one at a time or with the optional counts parameter. For example: sample(['red', 'blue'], counts=[4, 2], k=5) is equivalent to: sample(['red', 'red', 'red', 'red', 'blue', 'blue'], k=5) To choose a sample from a range of integers, use range() for the population argument. This is especially fast and space efficient for sampling from a large population: sample(range(10000000), 60) """ # Sampling without replacement entails tracking either potential # selections (the pool) in a list or previous selections in a set. # When the number of selections is small compared to the # population, then tracking selections is efficient, requiring # only a small set and an occasional reselection. For # a larger number of selections, the pool tracking method is # preferred since the list takes less space than the # set and it doesn't suffer from frequent reselections. # The number of calls to _randbelow() is kept at or near k, the # theoretical minimum. This is important because running time # is dominated by _randbelow() and because it extracts the # least entropy from the underlying random number generators. # Memory requirements are kept to the smaller of a k-length # set or an n-length list. # There are other sampling algorithms that do not require # auxiliary memory, but they were rejected because they made # too many calls to _randbelow(), making them slower and # causing them to eat more entropy than necessary. if not isinstance(population, _Sequence): > raise TypeError("Population must be a sequence. " "For dicts or sets, use sorted(d).") E TypeError: Population must be a sequence. For dicts or sets, use sorted(d). /usr/lib64/python3.11/random.py:439: TypeError ______ test_reassignment_with_random_subscriptions_and_changes[97-20-31] _______ mocker = execution_number = 97, n_topics = 20, n_consumers = 31 @pytest.mark.parametrize( 'execution_number,n_topics,n_consumers', [(i, randint(10, 20), randint(20, 40)) for i in range(100)] ) def test_reassignment_with_random_subscriptions_and_changes(mocker, execution_number, n_topics, n_consumers): all_topics = set(['t{}'.format(i) for i in range(1, n_topics + 1)]) partitions = dict([(t, set(range(1, i + 1))) for i, t in enumerate(all_topics)]) cluster = create_cluster(mocker, topics=all_topics, topic_partitions_lambda=lambda t: partitions[t]) subscriptions = defaultdict(set) for i in range(n_consumers): > topics_sample = sample(all_topics, randint(1, len(all_topics) - 1)) test/test_assignors.py:664: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = population = {'t1', 't10', 't11', 't12', 't13', 't14', ...}, k = 4 def sample(self, population, k, *, counts=None): """Chooses k unique random elements from a population sequence. Returns a new list containing elements from the population while leaving the original population unchanged. The resulting list is in selection order so that all sub-slices will also be valid random samples. This allows raffle winners (the sample) to be partitioned into grand prize and second place winners (the subslices). Members of the population need not be hashable or unique. If the population contains repeats, then each occurrence is a possible selection in the sample. Repeated elements can be specified one at a time or with the optional counts parameter. For example: sample(['red', 'blue'], counts=[4, 2], k=5) is equivalent to: sample(['red', 'red', 'red', 'red', 'blue', 'blue'], k=5) To choose a sample from a range of integers, use range() for the population argument. This is especially fast and space efficient for sampling from a large population: sample(range(10000000), 60) """ # Sampling without replacement entails tracking either potential # selections (the pool) in a list or previous selections in a set. # When the number of selections is small compared to the # population, then tracking selections is efficient, requiring # only a small set and an occasional reselection. For # a larger number of selections, the pool tracking method is # preferred since the list takes less space than the # set and it doesn't suffer from frequent reselections. # The number of calls to _randbelow() is kept at or near k, the # theoretical minimum. This is important because running time # is dominated by _randbelow() and because it extracts the # least entropy from the underlying random number generators. # Memory requirements are kept to the smaller of a k-length # set or an n-length list. # There are other sampling algorithms that do not require # auxiliary memory, but they were rejected because they made # too many calls to _randbelow(), making them slower and # causing them to eat more entropy than necessary. if not isinstance(population, _Sequence): > raise TypeError("Population must be a sequence. " "For dicts or sets, use sorted(d).") E TypeError: Population must be a sequence. For dicts or sets, use sorted(d). /usr/lib64/python3.11/random.py:439: TypeError ______ test_reassignment_with_random_subscriptions_and_changes[98-10-22] _______ mocker = execution_number = 98, n_topics = 10, n_consumers = 22 @pytest.mark.parametrize( 'execution_number,n_topics,n_consumers', [(i, randint(10, 20), randint(20, 40)) for i in range(100)] ) def test_reassignment_with_random_subscriptions_and_changes(mocker, execution_number, n_topics, n_consumers): all_topics = set(['t{}'.format(i) for i in range(1, n_topics + 1)]) partitions = dict([(t, set(range(1, i + 1))) for i, t in enumerate(all_topics)]) cluster = create_cluster(mocker, topics=all_topics, topic_partitions_lambda=lambda t: partitions[t]) subscriptions = defaultdict(set) for i in range(n_consumers): > topics_sample = sample(all_topics, randint(1, len(all_topics) - 1)) test/test_assignors.py:664: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = population = {'t1', 't10', 't2', 't3', 't4', 't5', ...}, k = 5 def sample(self, population, k, *, counts=None): """Chooses k unique random elements from a population sequence. Returns a new list containing elements from the population while leaving the original population unchanged. The resulting list is in selection order so that all sub-slices will also be valid random samples. This allows raffle winners (the sample) to be partitioned into grand prize and second place winners (the subslices). Members of the population need not be hashable or unique. If the population contains repeats, then each occurrence is a possible selection in the sample. Repeated elements can be specified one at a time or with the optional counts parameter. For example: sample(['red', 'blue'], counts=[4, 2], k=5) is equivalent to: sample(['red', 'red', 'red', 'red', 'blue', 'blue'], k=5) To choose a sample from a range of integers, use range() for the population argument. This is especially fast and space efficient for sampling from a large population: sample(range(10000000), 60) """ # Sampling without replacement entails tracking either potential # selections (the pool) in a list or previous selections in a set. # When the number of selections is small compared to the # population, then tracking selections is efficient, requiring # only a small set and an occasional reselection. For # a larger number of selections, the pool tracking method is # preferred since the list takes less space than the # set and it doesn't suffer from frequent reselections. # The number of calls to _randbelow() is kept at or near k, the # theoretical minimum. This is important because running time # is dominated by _randbelow() and because it extracts the # least entropy from the underlying random number generators. # Memory requirements are kept to the smaller of a k-length # set or an n-length list. # There are other sampling algorithms that do not require # auxiliary memory, but they were rejected because they made # too many calls to _randbelow(), making them slower and # causing them to eat more entropy than necessary. if not isinstance(population, _Sequence): > raise TypeError("Population must be a sequence. " "For dicts or sets, use sorted(d).") E TypeError: Population must be a sequence. For dicts or sets, use sorted(d). /usr/lib64/python3.11/random.py:439: TypeError ______ test_reassignment_with_random_subscriptions_and_changes[99-18-24] _______ mocker = execution_number = 99, n_topics = 18, n_consumers = 24 @pytest.mark.parametrize( 'execution_number,n_topics,n_consumers', [(i, randint(10, 20), randint(20, 40)) for i in range(100)] ) def test_reassignment_with_random_subscriptions_and_changes(mocker, execution_number, n_topics, n_consumers): all_topics = set(['t{}'.format(i) for i in range(1, n_topics + 1)]) partitions = dict([(t, set(range(1, i + 1))) for i, t in enumerate(all_topics)]) cluster = create_cluster(mocker, topics=all_topics, topic_partitions_lambda=lambda t: partitions[t]) subscriptions = defaultdict(set) for i in range(n_consumers): > topics_sample = sample(all_topics, randint(1, len(all_topics) - 1)) test/test_assignors.py:664: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = population = {'t1', 't10', 't11', 't12', 't13', 't14', ...}, k = 12 def sample(self, population, k, *, counts=None): """Chooses k unique random elements from a population sequence. Returns a new list containing elements from the population while leaving the original population unchanged. The resulting list is in selection order so that all sub-slices will also be valid random samples. This allows raffle winners (the sample) to be partitioned into grand prize and second place winners (the subslices). Members of the population need not be hashable or unique. If the population contains repeats, then each occurrence is a possible selection in the sample. Repeated elements can be specified one at a time or with the optional counts parameter. For example: sample(['red', 'blue'], counts=[4, 2], k=5) is equivalent to: sample(['red', 'red', 'red', 'red', 'blue', 'blue'], k=5) To choose a sample from a range of integers, use range() for the population argument. This is especially fast and space efficient for sampling from a large population: sample(range(10000000), 60) """ # Sampling without replacement entails tracking either potential # selections (the pool) in a list or previous selections in a set. # When the number of selections is small compared to the # population, then tracking selections is efficient, requiring # only a small set and an occasional reselection. For # a larger number of selections, the pool tracking method is # preferred since the list takes less space than the # set and it doesn't suffer from frequent reselections. # The number of calls to _randbelow() is kept at or near k, the # theoretical minimum. This is important because running time # is dominated by _randbelow() and because it extracts the # least entropy from the underlying random number generators. # Memory requirements are kept to the smaller of a k-length # set or an n-length list. # There are other sampling algorithms that do not require # auxiliary memory, but they were rejected because they made # too many calls to _randbelow(), making them slower and # causing them to eat more entropy than necessary. if not isinstance(population, _Sequence): > raise TypeError("Population must be a sequence. " "For dicts or sets, use sorted(d).") E TypeError: Population must be a sequence. For dicts or sets, use sorted(d). /usr/lib64/python3.11/random.py:439: TypeError =============================== warnings summary =============================== kafka/vendor/__init__.py:1 /usr/src/RPM/BUILD/python3-module-kafka-2.0.2/kafka/vendor/__init__.py:1: DeprecationWarning: invalid escape sequence '\.' """ -- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html ============================= slowest 10 durations ============================= 1.13s call test/test_codec.py::test_lz4_incremental 0.18s call test/test_assignors.py::test_sticky_large_assignment_with_multiple_consumers_leaving 0.11s call test/test_codec.py::test_gzip 0.10s call test/test_coordinator.py::test_fetch_committed_offsets 0.10s call test/test_coordinator.py::test_commit_offsets_sync 0.04s call test/test_codec.py::test_snappy 0.03s setup test/test_client_async.py::test_is_ready 0.03s call test/test_codec.py::test_lz4_old 0.03s setup test/test_coordinator.py::test_handle_offset_commit_response[response1-OffsetMetadataTooLargeError-False] 0.02s call test/test_codec.py::test_lz4 =========================== short test summary info ============================ SKIPPED [1] test/test_admin_integration.py:13: ACL features require broker >=0.11 SKIPPED [1] test/test_admin_integration.py:89: Describe config features require broker >=0.11 SKIPPED [1] test/test_admin_integration.py:102: Describe config features require broker >=0.11 SKIPPED [1] test/test_admin_integration.py:117: Describe config features require broker >=0.11 SKIPPED [1] test/test_admin_integration.py:136: Describe config features require broker >=0.11 SKIPPED [1] test/test_admin_integration.py:146: Describe consumer group requires broker >=0.11 SKIPPED [1] test/test_admin_integration.py:154: Describe consumer group requires broker >=0.11 SKIPPED [1] test/test_admin_integration.py:243: Delete consumer groups requires broker >=1.1 SKIPPED [1] test/test_admin_integration.py:282: Delete consumer groups requires broker >=1.1 SKIPPED [1] test/test_codec.py:119: Zstd not available SKIPPED [1] test/test_consumer_group.py:21: No KAFKA_VERSION set SKIPPED [1] test/test_consumer_group.py:33: No KAFKA_VERSION set SKIPPED [1] test/test_consumer_group.py:43: Unsupported Kafka Version SKIPPED [1] test/test_consumer_group.py:133: No KAFKA_VERSION set SKIPPED [1] test/test_consumer_group.py:152: Unsupported Kafka Version SKIPPED [1] test/test_consumer_integration.py:15: No KAFKA_VERSION set SKIPPED [1] test/test_consumer_integration.py:26: No KAFKA_VERSION set SKIPPED [1] test/test_consumer_integration.py:45: No KAFKA_VERSION set SKIPPED [1] test/test_consumer_integration.py:63: No KAFKA_VERSION set SKIPPED [1] test/test_consumer_integration.py:102: Requires KAFKA_VERSION >= 0.8.1 SKIPPED [1] test/test_consumer_integration.py:146: Requires KAFKA_VERSION >= 0.10.1 SKIPPED [1] test/test_consumer_integration.py:165: Requires KAFKA_VERSION >= 0.10.1 SKIPPED [1] test/test_consumer_integration.py:191: Requires KAFKA_VERSION >= 0.10.1 SKIPPED [1] test/test_consumer_integration.py:240: Requires KAFKA_VERSION >= 0.10.1 SKIPPED [1] test/test_consumer_integration.py:278: Requires KAFKA_VERSION < 0.10.1 SKIPPED [1] test/test_consumer_integration.py:290: Requires KAFKA_VERSION >= 0.10.1 SKIPPED [5] test/test_producer.py:25: No KAFKA_VERSION set SKIPPED [5] test/test_producer.py:83: No KAFKA_VERSION set SKIPPED [1] test/test_sasl_integration.py:32: Requires KAFKA_VERSION >= 0.10 SKIPPED [2] test/test_sasl_integration.py:32: Requires KAFKA_VERSION >= 0.10.2 SKIPPED [1] test/test_sasl_integration.py:39: Requires KAFKA_VERSION >= 0.10 SKIPPED [2] test/test_sasl_integration.py:39: Requires KAFKA_VERSION >= 0.10.2 SKIPPED [1] test/test_sasl_integration.py:66: Requires KAFKA_VERSION >= 0.10 SKIPPED [2] test/test_sasl_integration.py:66: Requires KAFKA_VERSION >= 0.10.2 FAILED test/test_assignors.py::test_reassignment_with_random_subscriptions_and_changes[0-16-38] FAILED test/test_assignors.py::test_reassignment_with_random_subscriptions_and_changes[1-16-25] FAILED test/test_assignors.py::test_reassignment_with_random_subscriptions_and_changes[2-10-21] FAILED test/test_assignors.py::test_reassignment_with_random_subscriptions_and_changes[3-18-36] FAILED test/test_assignors.py::test_reassignment_with_random_subscriptions_and_changes[4-13-34] FAILED test/test_assignors.py::test_reassignment_with_random_subscriptions_and_changes[5-11-27] FAILED test/test_assignors.py::test_reassignment_with_random_subscriptions_and_changes[6-15-37] FAILED test/test_assignors.py::test_reassignment_with_random_subscriptions_and_changes[7-17-40] FAILED test/test_assignors.py::test_reassignment_with_random_subscriptions_and_changes[8-15-30] FAILED test/test_assignors.py::test_reassignment_with_random_subscriptions_and_changes[9-18-22] FAILED test/test_assignors.py::test_reassignment_with_random_subscriptions_and_changes[10-17-28] FAILED test/test_assignors.py::test_reassignment_with_random_subscriptions_and_changes[11-10-31] FAILED test/test_assignors.py::test_reassignment_with_random_subscriptions_and_changes[12-13-39] FAILED test/test_assignors.py::test_reassignment_with_random_subscriptions_and_changes[13-14-23] FAILED test/test_assignors.py::test_reassignment_with_random_subscriptions_and_changes[14-17-35] FAILED test/test_assignors.py::test_reassignment_with_random_subscriptions_and_changes[15-20-35] FAILED test/test_assignors.py::test_reassignment_with_random_subscriptions_and_changes[16-18-26] FAILED test/test_assignors.py::test_reassignment_with_random_subscriptions_and_changes[17-10-29] FAILED test/test_assignors.py::test_reassignment_with_random_subscriptions_and_changes[18-11-29] FAILED test/test_assignors.py::test_reassignment_with_random_subscriptions_and_changes[19-16-37] FAILED test/test_assignors.py::test_reassignment_with_random_subscriptions_and_changes[20-14-35] FAILED test/test_assignors.py::test_reassignment_with_random_subscriptions_and_changes[21-19-36] FAILED test/test_assignors.py::test_reassignment_with_random_subscriptions_and_changes[22-14-30] FAILED test/test_assignors.py::test_reassignment_with_random_subscriptions_and_changes[23-14-29] FAILED test/test_assignors.py::test_reassignment_with_random_subscriptions_and_changes[24-14-20] FAILED test/test_assignors.py::test_reassignment_with_random_subscriptions_and_changes[25-18-36] FAILED test/test_assignors.py::test_reassignment_with_random_subscriptions_and_changes[26-10-33] FAILED test/test_assignors.py::test_reassignment_with_random_subscriptions_and_changes[27-13-27] FAILED test/test_assignors.py::test_reassignment_with_random_subscriptions_and_changes[28-12-40] FAILED test/test_assignors.py::test_reassignment_with_random_subscriptions_and_changes[29-18-33] FAILED test/test_assignors.py::test_reassignment_with_random_subscriptions_and_changes[30-18-21] FAILED test/test_assignors.py::test_reassignment_with_random_subscriptions_and_changes[31-19-22] FAILED test/test_assignors.py::test_reassignment_with_random_subscriptions_and_changes[32-18-20] FAILED test/test_assignors.py::test_reassignment_with_random_subscriptions_and_changes[33-11-24] FAILED test/test_assignors.py::test_reassignment_with_random_subscriptions_and_changes[34-19-34] FAILED test/test_assignors.py::test_reassignment_with_random_subscriptions_and_changes[35-18-35] FAILED test/test_assignors.py::test_reassignment_with_random_subscriptions_and_changes[36-16-26] FAILED test/test_assignors.py::test_reassignment_with_random_subscriptions_and_changes[37-19-36] FAILED test/test_assignors.py::test_reassignment_with_random_subscriptions_and_changes[38-20-32] FAILED test/test_assignors.py::test_reassignment_with_random_subscriptions_and_changes[39-12-31] FAILED test/test_assignors.py::test_reassignment_with_random_subscriptions_and_changes[40-20-37] FAILED test/test_assignors.py::test_reassignment_with_random_subscriptions_and_changes[41-12-32] FAILED test/test_assignors.py::test_reassignment_with_random_subscriptions_and_changes[42-14-26] FAILED test/test_assignors.py::test_reassignment_with_random_subscriptions_and_changes[43-12-20] FAILED test/test_assignors.py::test_reassignment_with_random_subscriptions_and_changes[44-15-34] FAILED test/test_assignors.py::test_reassignment_with_random_subscriptions_and_changes[45-15-27] FAILED test/test_assignors.py::test_reassignment_with_random_subscriptions_and_changes[46-16-37] FAILED test/test_assignors.py::test_reassignment_with_random_subscriptions_and_changes[47-20-37] FAILED test/test_assignors.py::test_reassignment_with_random_subscriptions_and_changes[48-11-37] FAILED test/test_assignors.py::test_reassignment_with_random_subscriptions_and_changes[49-10-35] FAILED test/test_assignors.py::test_reassignment_with_random_subscriptions_and_changes[50-19-32] FAILED test/test_assignors.py::test_reassignment_with_random_subscriptions_and_changes[51-10-33] FAILED test/test_assignors.py::test_reassignment_with_random_subscriptions_and_changes[52-20-35] FAILED test/test_assignors.py::test_reassignment_with_random_subscriptions_and_changes[53-10-29] FAILED test/test_assignors.py::test_reassignment_with_random_subscriptions_and_changes[54-18-37] FAILED test/test_assignors.py::test_reassignment_with_random_subscriptions_and_changes[55-19-39] FAILED test/test_assignors.py::test_reassignment_with_random_subscriptions_and_changes[56-11-22] FAILED test/test_assignors.py::test_reassignment_with_random_subscriptions_and_changes[57-10-35] FAILED test/test_assignors.py::test_reassignment_with_random_subscriptions_and_changes[58-18-25] FAILED test/test_assignors.py::test_reassignment_with_random_subscriptions_and_changes[59-20-30] FAILED test/test_assignors.py::test_reassignment_with_random_subscriptions_and_changes[60-12-25] FAILED test/test_assignors.py::test_reassignment_with_random_subscriptions_and_changes[61-15-36] FAILED test/test_assignors.py::test_reassignment_with_random_subscriptions_and_changes[62-12-28] FAILED test/test_assignors.py::test_reassignment_with_random_subscriptions_and_changes[63-19-24] FAILED test/test_assignors.py::test_reassignment_with_random_subscriptions_and_changes[64-20-22] FAILED test/test_assignors.py::test_reassignment_with_random_subscriptions_and_changes[65-19-33] FAILED test/test_assignors.py::test_reassignment_with_random_subscriptions_and_changes[66-10-20] FAILED test/test_assignors.py::test_reassignment_with_random_subscriptions_and_changes[67-18-39] FAILED test/test_assignors.py::test_reassignment_with_random_subscriptions_and_changes[68-11-31] FAILED test/test_assignors.py::test_reassignment_with_random_subscriptions_and_changes[69-19-23] FAILED test/test_assignors.py::test_reassignment_with_random_subscriptions_and_changes[70-12-30] FAILED test/test_assignors.py::test_reassignment_with_random_subscriptions_and_changes[71-16-28] FAILED test/test_assignors.py::test_reassignment_with_random_subscriptions_and_changes[72-17-28] FAILED test/test_assignors.py::test_reassignment_with_random_subscriptions_and_changes[73-12-33] FAILED test/test_assignors.py::test_reassignment_with_random_subscriptions_and_changes[74-18-36] FAILED test/test_assignors.py::test_reassignment_with_random_subscriptions_and_changes[75-18-37] FAILED test/test_assignors.py::test_reassignment_with_random_subscriptions_and_changes[76-11-27] FAILED test/test_assignors.py::test_reassignment_with_random_subscriptions_and_changes[77-15-29] FAILED test/test_assignors.py::test_reassignment_with_random_subscriptions_and_changes[78-11-37] FAILED test/test_assignors.py::test_reassignment_with_random_subscriptions_and_changes[79-18-24] FAILED test/test_assignors.py::test_reassignment_with_random_subscriptions_and_changes[80-19-40] FAILED test/test_assignors.py::test_reassignment_with_random_subscriptions_and_changes[81-20-36] FAILED test/test_assignors.py::test_reassignment_with_random_subscriptions_and_changes[82-20-22] FAILED test/test_assignors.py::test_reassignment_with_random_subscriptions_and_changes[83-15-28] FAILED test/test_assignors.py::test_reassignment_with_random_subscriptions_and_changes[84-16-39] FAILED test/test_assignors.py::test_reassignment_with_random_subscriptions_and_changes[85-10-40] FAILED test/test_assignors.py::test_reassignment_with_random_subscriptions_and_changes[86-15-39] FAILED test/test_assignors.py::test_reassignment_with_random_subscriptions_and_changes[87-11-39] FAILED test/test_assignors.py::test_reassignment_with_random_subscriptions_and_changes[88-20-23] FAILED test/test_assignors.py::test_reassignment_with_random_subscriptions_and_changes[89-10-37] FAILED test/test_assignors.py::test_reassignment_with_random_subscriptions_and_changes[90-12-21] FAILED test/test_assignors.py::test_reassignment_with_random_subscriptions_and_changes[91-13-21] FAILED test/test_assignors.py::test_reassignment_with_random_subscriptions_and_changes[92-19-38] FAILED test/test_assignors.py::test_reassignment_with_random_subscriptions_and_changes[93-17-34] FAILED test/test_assignors.py::test_reassignment_with_random_subscriptions_and_changes[94-12-30] FAILED test/test_assignors.py::test_reassignment_with_random_subscriptions_and_changes[95-11-24] FAILED test/test_assignors.py::test_reassignment_with_random_subscriptions_and_changes[96-12-28] FAILED test/test_assignors.py::test_reassignment_with_random_subscriptions_and_changes[97-20-31] FAILED test/test_assignors.py::test_reassignment_with_random_subscriptions_and_changes[98-10-22] FAILED test/test_assignors.py::test_reassignment_with_random_subscriptions_and_changes[99-18-24] =========== 100 failed, 1100 passed, 45 skipped, 1 warning in 5.33s ============ ERROR: InvocationError for command /usr/src/RPM/BUILD/python3-module-kafka-2.0.2/.tox/py3/bin/py.test -vra (exited with code 1) py3 finish: run-test after 5.65 seconds py3 start: run-test-post py3 finish: run-test-post after 0.00 seconds ___________________________________ summary ____________________________________ ERROR: py3: commands failed cleanup /usr/src/RPM/BUILD/python3-module-kafka-2.0.2/.tox/.tmp/package/1/kafka_python-2.0.2-py2.py3-none-any.whl error: Bad exit status from /usr/src/tmp/rpm-tmp.40068 (%check) RPM build errors: Bad exit status from /usr/src/tmp/rpm-tmp.40068 (%check) Command exited with non-zero status 1 7.81user 0.81system 0:08.88elapsed 97%CPU (0avgtext+0avgdata 77700maxresident)k 0inputs+0outputs (0major+224997minor)pagefaults 0swaps hsh-rebuild: rebuild of `python3-module-kafka-2.0.2-alt2.src.rpm' failed. Command exited with non-zero status 1 5.37user 1.72system 0:20.38elapsed 34%CPU (0avgtext+0avgdata 126244maxresident)k 192inputs+0outputs (0major+316714minor)pagefaults 0swaps