Repository: rq/rq (branch: feature/batch-jobs)
Commit date: 2024-01-18T01:12:19Z

Workflow file: .github/workflows/workflow.yml (Test)
name: Test

on:
  push:
    branches: [ master ]
  pull_request:
    branches: [ master ]

permissions:
  contents: read # to fetch code (actions/checkout)

jobs:
  ssl-test:
    name: Run SSL tests
    runs-on: ubuntu-20.04
    services:
      pypi_wayback:
        image: ghcr.io/waleko/pypi-wayback
        ports:
          - 8629:8080
    steps:
    - uses: actions/checkout@v3
    - name: Build the Docker test image for tox
      uses: docker/build-push-action@v4
      with:
        file: tests/Dockerfile
        tags: rqtest-image:latest
        push: false
    - name: Launch tox SSL env only (will only run SSL specific tests)
      uses: addnab/docker-run-action@v3
      with:
        image: rqtest-image:latest
        run: stunnel & redis-server & RUN_SSL_TESTS=1 hatch run tox run -e ssl

  test:
    name: Python${{ matrix.python-version }}/Redis${{ matrix.redis-version }}/redis-py${{ matrix.redis-py-version }}
    runs-on: ubuntu-20.04
    services:
      pypi_wayback:
        image: ghcr.io/waleko/pypi-wayback
        ports:
          - 8629:8080
    timeout-minutes: 10
    strategy:
      matrix:
        python-version: ["3.7", "3.8", "3.9", "3.10", "3.11"]
        redis-version: [4, 5, 6, 7]
        redis-py-version: [3.5.0]

    steps:
    - uses: actions/checkout@v3

    - name: Set up Python ${{ matrix.python-version }}
      uses: actions/setup-python@v4.7.1
      with:
        python-version: ${{ matrix.python-version }}

    - name: Start Redis
      uses: supercharge/redis-github-action@1.7.0
      with:
        redis-version: ${{ matrix.redis-version }}

    - name: Install dependencies
      run: |
        python -m pip install --upgrade pip
        pip install hatch
        pip install redis==${{ matrix.redis-py-version }}

    - name: Test with pytest
      run: |
        RUN_SLOW_TESTS_TOO=1 hatch run test:cov --durations=5

    - name: Upload coverage to Codecov
      uses: codecov/codecov-action@v3
      with:
        file: ./coverage.xml
        fail_ci_if_error: false

env:
  PIP_INDEX_URL: http://localhost:8629/2024-01-18
  UV_INDEX_URL: http://localhost:8629/2024-01-18


Failed build logs:
step_name: Python3.8Redis4redis-py3.5.0/7_Test with pytest.txt
log: ##[group]Run RUN_SLOW_TESTS_TOO=1 hatch run test:cov --durations=5
[36;1mRUN_SLOW_TESTS_TOO=1 hatch run test:cov --durations=5[0m
shell: /usr/bin/bash -e {0}
env:
  pythonLocation: /opt/hostedtoolcache/Python/3.8.18/x64
  PKG_CONFIG_PATH: /opt/hostedtoolcache/Python/3.8.18/x64/lib/pkgconfig
  Python_ROOT_DIR: /opt/hostedtoolcache/Python/3.8.18/x64
  Python2_ROOT_DIR: /opt/hostedtoolcache/Python/3.8.18/x64
  Python3_ROOT_DIR: /opt/hostedtoolcache/Python/3.8.18/x64
  LD_LIBRARY_PATH: /opt/hostedtoolcache/Python/3.8.18/x64/lib
##[endgroup]
Creating environment: test
Installing project in development mode
Checking dependencies
Syncing dependencies
============================= test session starts ==============================
platform linux -- Python 3.8.18, pytest-7.4.4, pluggy-1.3.0
rootdir: /home/runner/work/rq/rq
plugins: cov-4.1.0
collected 428 items

tests/test_callbacks.py .............                                    [  3%]
tests/test_cli.py ......................................                 [ 11%]
tests/test_commands.py ...                                               [ 12%]
tests/test_connection.py ....                                            [ 13%]
tests/test_decorator.py ...............                                  [ 17%]
tests/test_dependencies.py .........                                     [ 19%]
tests/test_executions.py .........                                       [ 21%]
tests/test_fixtures.py ..                                                [ 21%]
tests/test_group.py FFFFFFFFFFFFF                                        [ 24%]
tests/test_helpers.py .                                                  [ 25%]
tests/test_job.py s..................................................... [ 37%]
..........................                                               [ 43%]
tests/test_maintenance.py s                                              [ 43%]
tests/test_queue.py .........s...............................s.......... [ 56%]
                                                                         [ 56%]
tests/test_registry.py ............................                      [ 62%]
tests/test_results.py sssssssssssss                                      [ 65%]
tests/test_retry.py ......                                               [ 67%]
tests/test_scheduler.py .................s......                         [ 72%]
tests/test_sentry.py ...                                                 [ 73%]
tests/test_serializers.py .                                              [ 73%]
tests/test_timeouts.py .                                                 [ 73%]
tests/test_utils.py .................                                    [ 77%]
tests/test_worker.py ....................................s.............. [ 89%]
..s..............................                                        [ 97%]
tests/test_worker_pool.py .......                                        [ 99%]
tests/test_worker_registration.py ....                                   [100%]

=================================== FAILURES ===================================
___________________________ TestGroup.test_add_jobs ____________________________

self = <tests.test_group.TestGroup testMethod=test_add_jobs>

    def test_add_jobs(self):
        q = Queue(connection=self.testconn)
>       group = Group.create(connection=self.testconn)

tests/test_group.py:44: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

cls = <class 'rq.group.Group'>
connection = Redis<ConnectionPool<Connection<host=localhost,port=6379,db=4>>>
id = None

    @classmethod
    def create(cls, connection: Redis, id: Optional[str] = None):
>       return cls(id=id, connection=connection)
E       TypeError: __init__() got an unexpected keyword argument 'id'

rq/group.py:73: TypeError
____________________ TestGroup.test_all_returns_all_groups _____________________

self = <tests.test_group.TestGroup testMethod=test_all_returns_all_groups>

    def test_all_returns_all_groups(self):
        q = Queue(connection=self.testconn)
>       group1 = Group.create(name="group1", connection=self.testconn)
E       TypeError: create() got an unexpected keyword argument 'name'

tests/test_group.py:132: TypeError
_________________________ TestGroup.test_create_group __________________________

self = <tests.test_group.TestGroup testMethod=test_create_group>

    def test_create_group(self):
        q = Queue(connection=self.testconn)
>       group = Group.create(connection=self.testconn)

tests/test_group.py:20: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

cls = <class 'rq.group.Group'>
connection = Redis<ConnectionPool<Connection<host=localhost,port=6379,db=4>>>
id = None

    @classmethod
    def create(cls, connection: Redis, id: Optional[str] = None):
>       return cls(id=id, connection=connection)
E       TypeError: __init__() got an unexpected keyword argument 'id'

rq/group.py:73: TypeError
________________ TestGroup.test_deleted_jobs_removed_from_group ________________

self = <tests.test_group.TestGroup testMethod=test_deleted_jobs_removed_from_group>

    def test_deleted_jobs_removed_from_group(self):
        q = Queue(connection=self.testconn)
>       group = Group.create(connection=self.testconn)

tests/test_group.py:70: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

cls = <class 'rq.group.Group'>
connection = Redis<ConnectionPool<Connection<host=localhost,port=6379,db=4>>>
id = None

    @classmethod
    def create(cls, connection: Redis, id: Optional[str] = None):
>       return cls(id=id, connection=connection)
E       TypeError: __init__() got an unexpected keyword argument 'id'

rq/group.py:73: TypeError
______________ TestGroup.test_empty_group_removed_from_group_list ______________

self = <tests.test_group.TestGroup testMethod=test_empty_group_removed_from_group_list>

    @pytest.mark.slow
    def test_empty_group_removed_from_group_list(self):
        q = Queue(connection=self.testconn)
        w = SimpleWorker([q], connection=q.connection)
        short_lived_job = Queue.prepare_data(say_hello, result_ttl=1)
>       group = Group.create(connection=self.testconn)

tests/test_group.py:106: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

cls = <class 'rq.group.Group'>
connection = Redis<ConnectionPool<Connection<host=localhost,port=6379,db=4>>>
id = None

    @classmethod
    def create(cls, connection: Redis, id: Optional[str] = None):
>       return cls(id=id, connection=connection)
E       TypeError: __init__() got an unexpected keyword argument 'id'

rq/group.py:73: TypeError
________________ TestGroup.test_expired_jobs_removed_from_group ________________

self = <tests.test_group.TestGroup testMethod=test_expired_jobs_removed_from_group>

    @pytest.mark.slow
    def test_expired_jobs_removed_from_group(self):
        q = Queue(connection=self.testconn)
        w = SimpleWorker([q], connection=q.connection)
        short_lived_job = Queue.prepare_data(say_hello, result_ttl=1)
>       group = Group.create(connection=self.testconn)

tests/test_group.py:92: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

cls = <class 'rq.group.Group'>
connection = Redis<ConnectionPool<Connection<host=localhost,port=6379,db=4>>>
id = None

    @classmethod
    def create(cls, connection: Redis, id: Optional[str] = None):
>       return cls(id=id, connection=connection)
E       TypeError: __init__() got an unexpected keyword argument 'id'

rq/group.py:73: TypeError
_______________ TestGroup.test_fetch_expired_group_raises_error ________________

self = <tests.test_group.TestGroup testMethod=test_fetch_expired_group_raises_error>

    @pytest.mark.slow
    def test_fetch_expired_group_raises_error(self):
        q = Queue(connection=self.testconn)
        w = SimpleWorker([q], connection=q.connection)
        short_lived_job = Queue.prepare_data(say_hello, result_ttl=1)
>       group = Group.create(connection=self.testconn)

tests/test_group.py:119: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

cls = <class 'rq.group.Group'>
connection = Redis<ConnectionPool<Connection<host=localhost,port=6379,db=4>>>
id = None

    @classmethod
    def create(cls, connection: Redis, id: Optional[str] = None):
>       return cls(id=id, connection=connection)
E       TypeError: __init__() got an unexpected keyword argument 'id'

rq/group.py:73: TypeError
__________________________ TestGroup.test_fetch_group __________________________

self = <tests.test_group.TestGroup testMethod=test_fetch_group>

    def test_fetch_group(self):
        q = Queue(connection=self.testconn)
>       enqueued_group = Group.create(connection=self.testconn)

tests/test_group.py:35: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

cls = <class 'rq.group.Group'>
connection = Redis<ConnectionPool<Connection<host=localhost,port=6379,db=4>>>
id = None

    @classmethod
    def create(cls, connection: Redis, id: Optional[str] = None):
>       return cls(id=id, connection=connection)
E       TypeError: __init__() got an unexpected keyword argument 'id'

rq/group.py:73: TypeError
_________________________ TestGroup.test_get_group_key _________________________

self = <tests.test_group.TestGroup testMethod=test_get_group_key>

    def test_get_group_key(self):
>       group = Group(name="foo", connection=self.testconn)

tests/test_group.py:127: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <[AttributeError("'Group' object has no attribute 'id'") raised in repr()] Group object at 0x7efdaf2ec760>
connection = Redis<ConnectionPool<Connection<host=localhost,port=6379,db=4>>>
name = 'foo'

    def __init__(self, connection: Redis, name: str = None):
        self.name = name if name else str(uuid4())
        self.connection = connection
>       self.key = '{0}{1}'.format(self.REDIS_GROUP_NAME_PREFIX, self.id)
E       AttributeError: 'Group' object has no attribute 'id'

rq/group.py:23: AttributeError
____________________ TestGroup.test_group_added_to_registry ____________________

self = <tests.test_group.TestGroup testMethod=test_group_added_to_registry>

    def test_group_added_to_registry(self):
        q = Queue(connection=self.testconn)
>       group = Group.create(connection=self.testconn)

tests/test_group.py:81: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

cls = <class 'rq.group.Group'>
connection = Redis<ConnectionPool<Connection<host=localhost,port=6379,db=4>>>
id = None

    @classmethod
    def create(cls, connection: Redis, id: Optional[str] = None):
>       return cls(id=id, connection=connection)
E       TypeError: __init__() got an unexpected keyword argument 'id'

rq/group.py:73: TypeError
____________________ TestGroup.test_group_id_added_to_jobs _____________________

self = <tests.test_group.TestGroup testMethod=test_group_id_added_to_jobs>

    def test_group_id_added_to_jobs(self):
        q = Queue(connection=self.testconn)
>       group = Group.create(connection=self.testconn)

tests/test_group.py:62: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

cls = <class 'rq.group.Group'>
connection = Redis<ConnectionPool<Connection<host=localhost,port=6379,db=4>>>
id = None

    @classmethod
    def create(cls, connection: Redis, id: Optional[str] = None):
>       return cls(id=id, connection=connection)
E       TypeError: __init__() got an unexpected keyword argument 'id'

rq/group.py:73: TypeError
__________________________ TestGroup.test_group_jobs ___________________________

self = <tests.test_group.TestGroup testMethod=test_group_jobs>

    def test_group_jobs(self):
        q = Queue(connection=self.testconn)
>       group = Group.create(connection=self.testconn)

tests/test_group.py:28: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

cls = <class 'rq.group.Group'>
connection = Redis<ConnectionPool<Connection<host=localhost,port=6379,db=4>>>
id = None

    @classmethod
    def create(cls, connection: Redis, id: Optional[str] = None):
>       return cls(id=id, connection=connection)
E       TypeError: __init__() got an unexpected keyword argument 'id'

rq/group.py:73: TypeError
____________________ TestGroup.test_jobs_added_to_group_key ____________________

self = <tests.test_group.TestGroup testMethod=test_jobs_added_to_group_key>

    def test_jobs_added_to_group_key(self):
        q = Queue(connection=self.testconn)
>       group = Group.create(connection=self.testconn)

tests/test_group.py:53: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

cls = <class 'rq.group.Group'>
connection = Redis<ConnectionPool<Connection<host=localhost,port=6379,db=4>>>
id = None

    @classmethod
    def create(cls, connection: Redis, id: Optional[str] = None):
>       return cls(id=id, connection=connection)
E       TypeError: __init__() got an unexpected keyword argument 'id'

rq/group.py:73: TypeError
=============================== warnings summary ===============================
rq/connections.py:35: 1 warning
tests/test_cli.py: 31 warnings
tests/test_connection.py: 3 warnings
  /home/runner/work/rq/rq/rq/connections.py:35: DeprecationWarning: The Connection context manager is deprecated. Use the `connection` parameter instead.
    warnings.warn(

rq/connections.py:58: 1 warning
tests/test_callbacks.py: 12 warnings
tests/test_cli.py: 33 warnings
tests/test_commands.py: 1 warning
tests/test_connection.py: 4 warnings
tests/test_decorator.py: 1 warning
tests/test_dependencies.py: 18 warnings
tests/test_executions.py: 1 warning
tests/test_fixtures.py: 1 warning
tests/test_group.py: 1 warning
tests/test_helpers.py: 1 warning
tests/test_job.py: 1 warning
tests/test_maintenance.py: 1 warning
tests/test_queue.py: 2 warnings
tests/test_registry.py: 8 warnings
tests/test_retry.py: 1 warning
tests/test_scheduler.py: 4 warnings
tests/test_sentry.py: 2 warnings
tests/test_timeouts.py: 4 warnings
tests/test_utils.py: 1 warning
tests/test_worker.py: 13 warnings
tests/test_worker_registration.py: 1 warning
  /home/runner/work/rq/rq/rq/connections.py:58: DeprecationWarning: The `push_connection` function is deprecated. Pass the `connection` explicitly instead.
    warnings.warn(

rq/connections.py:72: 1 warning
tests/test_callbacks.py: 12 warnings
tests/test_cli.py: 33 warnings
tests/test_commands.py: 1 warning
tests/test_connection.py: 4 warnings
tests/test_decorator.py: 1 warning
tests/test_dependencies.py: 18 warnings
tests/test_executions.py: 1 warning
tests/test_fixtures.py: 1 warning
tests/test_group.py: 1 warning
tests/test_helpers.py: 1 warning
tests/test_job.py: 1 warning
tests/test_maintenance.py: 1 warning
tests/test_queue.py: 2 warnings
tests/test_registry.py: 8 warnings
tests/test_retry.py: 1 warning
tests/test_scheduler.py: 4 warnings
tests/test_sentry.py: 2 warnings
tests/test_timeouts.py: 4 warnings
tests/test_utils.py: 1 warning
tests/test_worker.py: 13 warnings
tests/test_worker_registration.py: 1 warning
  /home/runner/work/rq/rq/rq/connections.py:72: DeprecationWarning: The `pop_connection` function is deprecated. Pass the `connection` explicitly instead.
    warnings.warn(

tests/test_group.py:87
  /home/runner/work/rq/rq/tests/test_group.py:87: PytestUnknownMarkWarning: Unknown pytest.mark.slow - is this a typo?  You can register custom marks to avoid this warning - for details, see https://docs.pytest.org/en/stable/how-to/mark.html
    @pytest.mark.slow

tests/test_group.py:101
  /home/runner/work/rq/rq/tests/test_group.py:101: PytestUnknownMarkWarning: Unknown pytest.mark.slow - is this a typo?  You can register custom marks to avoid this warning - for details, see https://docs.pytest.org/en/stable/how-to/mark.html
    @pytest.mark.slow

tests/test_group.py:114
  /home/runner/work/rq/rq/tests/test_group.py:114: PytestUnknownMarkWarning: Unknown pytest.mark.slow - is this a typo?  You can register custom marks to avoid this warning - for details, see https://docs.pytest.org/en/stable/how-to/mark.html
    @pytest.mark.slow

tests/__init__.py:34
  /home/runner/work/rq/rq/tests/__init__.py:34: PytestUnknownMarkWarning: Unknown pytest.mark.ssl_test - is this a typo?  You can register custom marks to avoid this warning - for details, see https://docs.pytest.org/en/stable/how-to/mark.html
    f = pytest.mark.ssl_test(f)

tests/__init__.py:29
  /home/runner/work/rq/rq/tests/__init__.py:29: PytestUnknownMarkWarning: Unknown pytest.mark.slow - is this a typo?  You can register custom marks to avoid this warning - for details, see https://docs.pytest.org/en/stable/how-to/mark.html
    f = pytest.mark.slow(f)

tests/test_callbacks.py: 12 warnings
tests/test_decorator.py: 1 warning
  /home/runner/work/rq/rq/rq/job.py:260: DeprecationWarning: Passing a string or function for `on_success` is deprecated, pass `Callback` instead
    warnings.warn(

tests/test_callbacks.py: 7 warnings
tests/test_decorator.py: 3 warnings
tests/test_job.py: 1 warning
  /home/runner/work/rq/rq/rq/job.py:270: DeprecationWarning: Passing a string or function for `on_failure` is deprecated, pass `Callback` instead
    warnings.warn(

tests/test_callbacks.py::QueueCallbackTestCase::test_enqueue_many_callback
tests/test_callbacks.py::QueueCallbackTestCase::test_enqueue_with_stopped_callback
tests/test_callbacks.py::QueueCallbackTestCase::test_enqueue_with_stopped_callback
tests/test_callbacks.py::QueueCallbackTestCase::test_enqueue_with_stopped_callback
tests/test_callbacks.py::SyncJobCallback::test_stopped_callback
tests/test_callbacks.py::JobCallbackTestCase::test_job_creation_with_stopped_callback
tests/test_job.py::TestJob::test_persistence_of_callbacks
  /home/runner/work/rq/rq/rq/job.py:280: DeprecationWarning: Passing a string or function for `on_stopped` is deprecated, pass `Callback` instead
    warnings.warn(

tests/test_callbacks.py: 11 warnings
tests/test_cli.py: 82 warnings
tests/test_connection.py: 4 warnings
tests/test_decorator.py: 25 warnings
tests/test_dependencies.py: 5 warnings
tests/test_job.py: 107 warnings
tests/test_queue.py: 82 warnings
tests/test_registry.py: 2 warnings
tests/test_retry.py: 2 warnings
tests/test_worker.py: 164 warnings
tests/test_worker_registration.py: 7 warnings
  /home/runner/work/rq/rq/rq/connections.py:108: DeprecationWarning: The `resolve_connection` function is deprecated. Pass the `connection` explicitly instead.
    warnings.warn(

tests/test_callbacks.py: 14 warnings
tests/test_cli.py: 93 warnings
tests/test_connection.py: 4 warnings
tests/test_decorator.py: 25 warnings
tests/test_dependencies.py: 8 warnings
tests/test_fixtures.py: 1 warning
tests/test_job.py: 118 warnings
tests/test_queue.py: 83 warnings
tests/test_registry.py: 9 warnings
tests/test_retry.py: 3 warnings
tests/test_worker.py: 263 warnings
tests/test_worker_registration.py: 53 warnings
  /home/runner/work/rq/rq/rq/connections.py:87: DeprecationWarning: The `get_current_connection` function is deprecated. Pass the `connection` explicitly instead.
    warnings.warn(

tests/test_callbacks.py: 2 warnings
tests/test_cli.py: 3 warnings
tests/test_dependencies.py: 1 warning
tests/test_job.py: 6 warnings
tests/test_worker.py: 13 warnings
  /home/runner/work/rq/rq/rq/job.py:874: DeprecationWarning: job.result is deprecated, use job.return_value instead.
    warnings.warn("job.result is deprecated, use job.return_value instead.", DeprecationWarning)

tests/test_callbacks.py: 2 warnings
tests/test_job.py: 3 warnings
tests/test_registry.py: 1 warning
tests/test_timeouts.py: 1 warning
tests/test_worker.py: 4 warnings
  /home/runner/work/rq/rq/rq/job.py:810: DeprecationWarning: job.exc_info is deprecated, use job.latest_result() instead.
    warnings.warn("job.exc_info is deprecated, use job.latest_result() instead.", DeprecationWarning)

-- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html

---------- coverage: platform linux, python 3.8.18-final-0 -----------
Coverage XML written to file coverage.xml

============================= slowest 5 durations ==============================
66.12s call     tests/test_worker.py::WorkerShutdownTestCase::test_work_horse_force_death
30.28s call     tests/test_worker.py::TestRoundRobinWorker::test_round_robin
30.28s call     tests/test_worker.py::TestWorker::test_dequeue_random_strategy
30.27s call     tests/test_worker.py::TestWorker::test_dequeue_round_robin
30.27s call     tests/test_worker.py::TestRandomWorker::test_random_worker
=========================== short test summary info ============================
FAILED tests/test_group.py::TestGroup::test_add_jobs - TypeError: __init__() got an unexpected keyword argument 'id'
FAILED tests/test_group.py::TestGroup::test_all_returns_all_groups - TypeError: create() got an unexpected keyword argument 'name'
FAILED tests/test_group.py::TestGroup::test_create_group - TypeError: __init__() got an unexpected keyword argument 'id'
FAILED tests/test_group.py::TestGroup::test_deleted_jobs_removed_from_group - TypeError: __init__() got an unexpected keyword argument 'id'
FAILED tests/test_group.py::TestGroup::test_empty_group_removed_from_group_list - TypeError: __init__() got an unexpected keyword argument 'id'
FAILED tests/test_group.py::TestGroup::test_expired_jobs_removed_from_group - TypeError: __init__() got an unexpected keyword argument 'id'
FAILED tests/test_group.py::TestGroup::test_fetch_expired_group_raises_error - TypeError: __init__() got an unexpected keyword argument 'id'
FAILED tests/test_group.py::TestGroup::test_fetch_group - TypeError: __init__() got an unexpected keyword argument 'id'
FAILED tests/test_group.py::TestGroup::test_get_group_key - AttributeError: 'Group' object has no attribute 'id'
FAILED tests/test_group.py::TestGroup::test_group_added_to_registry - TypeError: __init__() got an unexpected keyword argument 'id'
FAILED tests/test_group.py::TestGroup::test_group_id_added_to_jobs - TypeError: __init__() got an unexpected keyword argument 'id'
FAILED tests/test_group.py::TestGroup::test_group_jobs - TypeError: __init__() got an unexpected keyword argument 'id'
FAILED tests/test_group.py::TestGroup::test_jobs_added_to_group_key - TypeError: __init__() got an unexpected keyword argument 'id'
==== 13 failed, 395 passed, 20 skipped, 1496 warnings in 411.25s (0:06:51) =====
##[error]Process completed with exit code 1.

step_name: Python3.10Redis4redis-py3.5.0/7_Test with pytest.txt
log: ##[group]Run RUN_SLOW_TESTS_TOO=1 hatch run test:cov --durations=5
[36;1mRUN_SLOW_TESTS_TOO=1 hatch run test:cov --durations=5[0m
shell: /usr/bin/bash -e {0}
env:
  pythonLocation: /opt/hostedtoolcache/Python/3.10.13/x64
  PKG_CONFIG_PATH: /opt/hostedtoolcache/Python/3.10.13/x64/lib/pkgconfig
  Python_ROOT_DIR: /opt/hostedtoolcache/Python/3.10.13/x64
  Python2_ROOT_DIR: /opt/hostedtoolcache/Python/3.10.13/x64
  Python3_ROOT_DIR: /opt/hostedtoolcache/Python/3.10.13/x64
  LD_LIBRARY_PATH: /opt/hostedtoolcache/Python/3.10.13/x64/lib
##[endgroup]
Creating environment: test
Installing project in development mode
Checking dependencies
Syncing dependencies
============================= test session starts ==============================
platform linux -- Python 3.10.13, pytest-7.4.4, pluggy-1.3.0
rootdir: /home/runner/work/rq/rq
plugins: cov-4.1.0
collected 428 items

tests/test_callbacks.py .............                                    [  3%]
tests/test_cli.py ......................................                 [ 11%]
tests/test_commands.py ...                                               [ 12%]
tests/test_connection.py ....                                            [ 13%]
tests/test_decorator.py ...............                                  [ 17%]
tests/test_dependencies.py .........                                     [ 19%]
tests/test_executions.py .........                                       [ 21%]
tests/test_fixtures.py ..                                                [ 21%]
tests/test_group.py FFFFFFFFFFFFF                                        [ 24%]
tests/test_helpers.py .                                                  [ 25%]
tests/test_job.py s..................................................... [ 37%]
..........................                                               [ 43%]
tests/test_maintenance.py s                                              [ 43%]
tests/test_queue.py .........s...............................s.......... [ 56%]
                                                                         [ 56%]
tests/test_registry.py ............................                      [ 62%]
tests/test_results.py sssssssssssss                                      [ 65%]
tests/test_retry.py ......                                               [ 67%]
tests/test_scheduler.py .................s......                         [ 72%]
tests/test_sentry.py ...                                                 [ 73%]
tests/test_serializers.py .                                              [ 73%]
tests/test_timeouts.py .                                                 [ 73%]
tests/test_utils.py .................                                    [ 77%]
tests/test_worker.py ....................................s.............. [ 89%]
..s..............................                                        [ 97%]
tests/test_worker_pool.py .......                                        [ 99%]
tests/test_worker_registration.py ....                                   [100%]

=================================== FAILURES ===================================
___________________________ TestGroup.test_add_jobs ____________________________

self = <tests.test_group.TestGroup testMethod=test_add_jobs>

    def test_add_jobs(self):
        q = Queue(connection=self.testconn)
>       group = Group.create(connection=self.testconn)

tests/test_group.py:44: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

cls = <class 'rq.group.Group'>
connection = Redis<ConnectionPool<Connection<host=localhost,port=6379,db=4>>>
id = None

    @classmethod
    def create(cls, connection: Redis, id: Optional[str] = None):
>       return cls(id=id, connection=connection)
E       TypeError: Group.__init__() got an unexpected keyword argument 'id'

rq/group.py:73: TypeError
____________________ TestGroup.test_all_returns_all_groups _____________________

self = <tests.test_group.TestGroup testMethod=test_all_returns_all_groups>

    def test_all_returns_all_groups(self):
        q = Queue(connection=self.testconn)
>       group1 = Group.create(name="group1", connection=self.testconn)
E       TypeError: Group.create() got an unexpected keyword argument 'name'

tests/test_group.py:132: TypeError
_________________________ TestGroup.test_create_group __________________________

self = <tests.test_group.TestGroup testMethod=test_create_group>

    def test_create_group(self):
        q = Queue(connection=self.testconn)
>       group = Group.create(connection=self.testconn)

tests/test_group.py:20: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

cls = <class 'rq.group.Group'>
connection = Redis<ConnectionPool<Connection<host=localhost,port=6379,db=4>>>
id = None

    @classmethod
    def create(cls, connection: Redis, id: Optional[str] = None):
>       return cls(id=id, connection=connection)
E       TypeError: Group.__init__() got an unexpected keyword argument 'id'

rq/group.py:73: TypeError
________________ TestGroup.test_deleted_jobs_removed_from_group ________________

self = <tests.test_group.TestGroup testMethod=test_deleted_jobs_removed_from_group>

    def test_deleted_jobs_removed_from_group(self):
        q = Queue(connection=self.testconn)
>       group = Group.create(connection=self.testconn)

tests/test_group.py:70: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

cls = <class 'rq.group.Group'>
connection = Redis<ConnectionPool<Connection<host=localhost,port=6379,db=4>>>
id = None

    @classmethod
    def create(cls, connection: Redis, id: Optional[str] = None):
>       return cls(id=id, connection=connection)
E       TypeError: Group.__init__() got an unexpected keyword argument 'id'

rq/group.py:73: TypeError
______________ TestGroup.test_empty_group_removed_from_group_list ______________

self = <tests.test_group.TestGroup testMethod=test_empty_group_removed_from_group_list>

    @pytest.mark.slow
    def test_empty_group_removed_from_group_list(self):
        q = Queue(connection=self.testconn)
        w = SimpleWorker([q], connection=q.connection)
        short_lived_job = Queue.prepare_data(say_hello, result_ttl=1)
>       group = Group.create(connection=self.testconn)

tests/test_group.py:106: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

cls = <class 'rq.group.Group'>
connection = Redis<ConnectionPool<Connection<host=localhost,port=6379,db=4>>>
id = None

    @classmethod
    def create(cls, connection: Redis, id: Optional[str] = None):
>       return cls(id=id, connection=connection)
E       TypeError: Group.__init__() got an unexpected keyword argument 'id'

rq/group.py:73: TypeError
________________ TestGroup.test_expired_jobs_removed_from_group ________________

self = <tests.test_group.TestGroup testMethod=test_expired_jobs_removed_from_group>

    @pytest.mark.slow
    def test_expired_jobs_removed_from_group(self):
        q = Queue(connection=self.testconn)
        w = SimpleWorker([q], connection=q.connection)
        short_lived_job = Queue.prepare_data(say_hello, result_ttl=1)
>       group = Group.create(connection=self.testconn)

tests/test_group.py:92: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

cls = <class 'rq.group.Group'>
connection = Redis<ConnectionPool<Connection<host=localhost,port=6379,db=4>>>
id = None

    @classmethod
    def create(cls, connection: Redis, id: Optional[str] = None):
>       return cls(id=id, connection=connection)
E       TypeError: Group.__init__() got an unexpected keyword argument 'id'

rq/group.py:73: TypeError
_______________ TestGroup.test_fetch_expired_group_raises_error ________________

self = <tests.test_group.TestGroup testMethod=test_fetch_expired_group_raises_error>

    @pytest.mark.slow
    def test_fetch_expired_group_raises_error(self):
        q = Queue(connection=self.testconn)
        w = SimpleWorker([q], connection=q.connection)
        short_lived_job = Queue.prepare_data(say_hello, result_ttl=1)
>       group = Group.create(connection=self.testconn)

tests/test_group.py:119: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

cls = <class 'rq.group.Group'>
connection = Redis<ConnectionPool<Connection<host=localhost,port=6379,db=4>>>
id = None

    @classmethod
    def create(cls, connection: Redis, id: Optional[str] = None):
>       return cls(id=id, connection=connection)
E       TypeError: Group.__init__() got an unexpected keyword argument 'id'

rq/group.py:73: TypeError
__________________________ TestGroup.test_fetch_group __________________________

self = <tests.test_group.TestGroup testMethod=test_fetch_group>

    def test_fetch_group(self):
        q = Queue(connection=self.testconn)
>       enqueued_group = Group.create(connection=self.testconn)

tests/test_group.py:35: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

cls = <class 'rq.group.Group'>
connection = Redis<ConnectionPool<Connection<host=localhost,port=6379,db=4>>>
id = None

    @classmethod
    def create(cls, connection: Redis, id: Optional[str] = None):
>       return cls(id=id, connection=connection)
E       TypeError: Group.__init__() got an unexpected keyword argument 'id'

rq/group.py:73: TypeError
_________________________ TestGroup.test_get_group_key _________________________

self = <tests.test_group.TestGroup testMethod=test_get_group_key>

    def test_get_group_key(self):
>       group = Group(name="foo", connection=self.testconn)

tests/test_group.py:127: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <[AttributeError("'Group' object has no attribute 'id'") raised in repr()] Group object at 0x7f551cd60b80>
connection = Redis<ConnectionPool<Connection<host=localhost,port=6379,db=4>>>
name = 'foo'

    def __init__(self, connection: Redis, name: str = None):
        self.name = name if name else str(uuid4())
        self.connection = connection
>       self.key = '{0}{1}'.format(self.REDIS_GROUP_NAME_PREFIX, self.id)
E       AttributeError: 'Group' object has no attribute 'id'

rq/group.py:23: AttributeError
____________________ TestGroup.test_group_added_to_registry ____________________

self = <tests.test_group.TestGroup testMethod=test_group_added_to_registry>

    def test_group_added_to_registry(self):
        q = Queue(connection=self.testconn)
>       group = Group.create(connection=self.testconn)

tests/test_group.py:81: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

cls = <class 'rq.group.Group'>
connection = Redis<ConnectionPool<Connection<host=localhost,port=6379,db=4>>>
id = None

    @classmethod
    def create(cls, connection: Redis, id: Optional[str] = None):
>       return cls(id=id, connection=connection)
E       TypeError: Group.__init__() got an unexpected keyword argument 'id'

rq/group.py:73: TypeError
____________________ TestGroup.test_group_id_added_to_jobs _____________________

self = <tests.test_group.TestGroup testMethod=test_group_id_added_to_jobs>

    def test_group_id_added_to_jobs(self):
        q = Queue(connection=self.testconn)
>       group = Group.create(connection=self.testconn)

tests/test_group.py:62: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

cls = <class 'rq.group.Group'>
connection = Redis<ConnectionPool<Connection<host=localhost,port=6379,db=4>>>
id = None

    @classmethod
    def create(cls, connection: Redis, id: Optional[str] = None):
>       return cls(id=id, connection=connection)
E       TypeError: Group.__init__() got an unexpected keyword argument 'id'

rq/group.py:73: TypeError
__________________________ TestGroup.test_group_jobs ___________________________

self = <tests.test_group.TestGroup testMethod=test_group_jobs>

    def test_group_jobs(self):
        q = Queue(connection=self.testconn)
>       group = Group.create(connection=self.testconn)

tests/test_group.py:28: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

cls = <class 'rq.group.Group'>
connection = Redis<ConnectionPool<Connection<host=localhost,port=6379,db=4>>>
id = None

    @classmethod
    def create(cls, connection: Redis, id: Optional[str] = None):
>       return cls(id=id, connection=connection)
E       TypeError: Group.__init__() got an unexpected keyword argument 'id'

rq/group.py:73: TypeError
____________________ TestGroup.test_jobs_added_to_group_key ____________________

self = <tests.test_group.TestGroup testMethod=test_jobs_added_to_group_key>

    def test_jobs_added_to_group_key(self):
        q = Queue(connection=self.testconn)
>       group = Group.create(connection=self.testconn)

tests/test_group.py:53: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

cls = <class 'rq.group.Group'>
connection = Redis<ConnectionPool<Connection<host=localhost,port=6379,db=4>>>
id = None

    @classmethod
    def create(cls, connection: Redis, id: Optional[str] = None):
>       return cls(id=id, connection=connection)
E       TypeError: Group.__init__() got an unexpected keyword argument 'id'

rq/group.py:73: TypeError
=============================== warnings summary ===============================
rq/connections.py:35: 1 warning
tests/test_cli.py: 31 warnings
tests/test_connection.py: 3 warnings
  /home/runner/work/rq/rq/rq/connections.py:35: DeprecationWarning: The Connection context manager is deprecated. Use the `connection` parameter instead.
    warnings.warn(

rq/connections.py:58: 1 warning
tests/test_callbacks.py: 12 warnings
tests/test_cli.py: 33 warnings
tests/test_commands.py: 1 warning
tests/test_connection.py: 4 warnings
tests/test_decorator.py: 1 warning
tests/test_dependencies.py: 18 warnings
tests/test_executions.py: 1 warning
tests/test_fixtures.py: 1 warning
tests/test_group.py: 1 warning
tests/test_helpers.py: 1 warning
tests/test_job.py: 1 warning
tests/test_maintenance.py: 1 warning
tests/test_queue.py: 2 warnings
tests/test_registry.py: 8 warnings
tests/test_retry.py: 1 warning
tests/test_scheduler.py: 4 warnings
tests/test_sentry.py: 2 warnings
tests/test_timeouts.py: 4 warnings
tests/test_utils.py: 1 warning
tests/test_worker.py: 13 warnings
tests/test_worker_registration.py: 1 warning
  /home/runner/work/rq/rq/rq/connections.py:58: DeprecationWarning: The `push_connection` function is deprecated. Pass the `connection` explicitly instead.
    warnings.warn(

rq/connections.py:72: 1 warning
tests/test_callbacks.py: 12 warnings
tests/test_cli.py: 33 warnings
tests/test_commands.py: 1 warning
tests/test_connection.py: 4 warnings
tests/test_decorator.py: 1 warning
tests/test_dependencies.py: 18 warnings
tests/test_executions.py: 1 warning
tests/test_fixtures.py: 1 warning
tests/test_group.py: 1 warning
tests/test_helpers.py: 1 warning
tests/test_job.py: 1 warning
tests/test_maintenance.py: 1 warning
tests/test_queue.py: 2 warnings
tests/test_registry.py: 8 warnings
tests/test_retry.py: 1 warning
tests/test_scheduler.py: 4 warnings
tests/test_sentry.py: 2 warnings
tests/test_timeouts.py: 4 warnings
tests/test_utils.py: 1 warning
tests/test_worker.py: 13 warnings
tests/test_worker_registration.py: 1 warning
  /home/runner/work/rq/rq/rq/connections.py:72: DeprecationWarning: The `pop_connection` function is deprecated. Pass the `connection` explicitly instead.
    warnings.warn(

tests/test_group.py:87
  /home/runner/work/rq/rq/tests/test_group.py:87: PytestUnknownMarkWarning: Unknown pytest.mark.slow - is this a typo?  You can register custom marks to avoid this warning - for details, see https://docs.pytest.org/en/stable/how-to/mark.html
    @pytest.mark.slow

tests/test_group.py:101
  /home/runner/work/rq/rq/tests/test_group.py:101: PytestUnknownMarkWarning: Unknown pytest.mark.slow - is this a typo?  You can register custom marks to avoid this warning - for details, see https://docs.pytest.org/en/stable/how-to/mark.html
    @pytest.mark.slow

tests/test_group.py:114
  /home/runner/work/rq/rq/tests/test_group.py:114: PytestUnknownMarkWarning: Unknown pytest.mark.slow - is this a typo?  You can register custom marks to avoid this warning - for details, see https://docs.pytest.org/en/stable/how-to/mark.html
    @pytest.mark.slow

tests/__init__.py:34
  /home/runner/work/rq/rq/tests/__init__.py:34: PytestUnknownMarkWarning: Unknown pytest.mark.ssl_test - is this a typo?  You can register custom marks to avoid this warning - for details, see https://docs.pytest.org/en/stable/how-to/mark.html
    f = pytest.mark.ssl_test(f)

tests/__init__.py:29
  /home/runner/work/rq/rq/tests/__init__.py:29: PytestUnknownMarkWarning: Unknown pytest.mark.slow - is this a typo?  You can register custom marks to avoid this warning - for details, see https://docs.pytest.org/en/stable/how-to/mark.html
    f = pytest.mark.slow(f)

tests/test_callbacks.py: 12 warnings
tests/test_decorator.py: 1 warning
  /home/runner/work/rq/rq/rq/job.py:260: DeprecationWarning: Passing a string or function for `on_success` is deprecated, pass `Callback` instead
    warnings.warn(

tests/test_callbacks.py: 7 warnings
tests/test_decorator.py: 3 warnings
tests/test_job.py: 1 warning
  /home/runner/work/rq/rq/rq/job.py:270: DeprecationWarning: Passing a string or function for `on_failure` is deprecated, pass `Callback` instead
    warnings.warn(

tests/test_callbacks.py::QueueCallbackTestCase::test_enqueue_many_callback
tests/test_callbacks.py::QueueCallbackTestCase::test_enqueue_with_stopped_callback
tests/test_callbacks.py::QueueCallbackTestCase::test_enqueue_with_stopped_callback
tests/test_callbacks.py::QueueCallbackTestCase::test_enqueue_with_stopped_callback
tests/test_callbacks.py::SyncJobCallback::test_stopped_callback
tests/test_callbacks.py::JobCallbackTestCase::test_job_creation_with_stopped_callback
tests/test_job.py::TestJob::test_persistence_of_callbacks
  /home/runner/work/rq/rq/rq/job.py:280: DeprecationWarning: Passing a string or function for `on_stopped` is deprecated, pass `Callback` instead
    warnings.warn(

tests/test_callbacks.py: 11 warnings
tests/test_cli.py: 82 warnings
tests/test_connection.py: 4 warnings
tests/test_decorator.py: 25 warnings
tests/test_dependencies.py: 5 warnings
tests/test_job.py: 107 warnings
tests/test_queue.py: 82 warnings
tests/test_registry.py: 2 warnings
tests/test_retry.py: 2 warnings
tests/test_worker.py: 164 warnings
tests/test_worker_registration.py: 7 warnings
  /home/runner/work/rq/rq/rq/connections.py:108: DeprecationWarning: The `resolve_connection` function is deprecated. Pass the `connection` explicitly instead.
    warnings.warn(

tests/test_callbacks.py: 14 warnings
tests/test_cli.py: 93 warnings
tests/test_connection.py: 4 warnings
tests/test_decorator.py: 25 warnings
tests/test_dependencies.py: 8 warnings
tests/test_fixtures.py: 1 warning
tests/test_job.py: 118 warnings
tests/test_queue.py: 83 warnings
tests/test_registry.py: 9 warnings
tests/test_retry.py: 3 warnings
tests/test_worker.py: 263 warnings
tests/test_worker_registration.py: 53 warnings
  /home/runner/work/rq/rq/rq/connections.py:87: DeprecationWarning: The `get_current_connection` function is deprecated. Pass the `connection` explicitly instead.
    warnings.warn(

tests/test_callbacks.py: 2 warnings
tests/test_cli.py: 3 warnings
tests/test_dependencies.py: 1 warning
tests/test_job.py: 6 warnings
tests/test_worker.py: 13 warnings
  /home/runner/work/rq/rq/rq/job.py:874: DeprecationWarning: job.result is deprecated, use job.return_value instead.
    warnings.warn("job.result is deprecated, use job.return_value instead.", DeprecationWarning)

tests/test_callbacks.py: 2 warnings
tests/test_job.py: 3 warnings
tests/test_registry.py: 1 warning
tests/test_timeouts.py: 1 warning
tests/test_worker.py: 4 warnings
  /home/runner/work/rq/rq/rq/job.py:810: DeprecationWarning: job.exc_info is deprecated, use job.latest_result() instead.
    warnings.warn("job.exc_info is deprecated, use job.latest_result() instead.", DeprecationWarning)

-- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html

---------- coverage: platform linux, python 3.10.13-final-0 ----------
Coverage XML written to file coverage.xml

============================= slowest 5 durations ==============================
66.12s call     tests/test_worker.py::WorkerShutdownTestCase::test_work_horse_force_death
30.28s call     tests/test_worker.py::TestWorker::test_dequeue_round_robin
30.27s call     tests/test_worker.py::TestRoundRobinWorker::test_round_robin
30.27s call     tests/test_worker.py::TestRandomWorker::test_random_worker
30.27s call     tests/test_worker.py::TestWorker::test_dequeue_random_strategy
=========================== short test summary info ============================
FAILED tests/test_group.py::TestGroup::test_add_jobs - TypeError: Group.__init__() got an unexpected keyword argument 'id'
FAILED tests/test_group.py::TestGroup::test_all_returns_all_groups - TypeError: Group.create() got an unexpected keyword argument 'name'
FAILED tests/test_group.py::TestGroup::test_create_group - TypeError: Group.__init__() got an unexpected keyword argument 'id'
FAILED tests/test_group.py::TestGroup::test_deleted_jobs_removed_from_group - TypeError: Group.__init__() got an unexpected keyword argument 'id'
FAILED tests/test_group.py::TestGroup::test_empty_group_removed_from_group_list - TypeError: Group.__init__() got an unexpected keyword argument 'id'
FAILED tests/test_group.py::TestGroup::test_expired_jobs_removed_from_group - TypeError: Group.__init__() got an unexpected keyword argument 'id'
FAILED tests/test_group.py::TestGroup::test_fetch_expired_group_raises_error - TypeError: Group.__init__() got an unexpected keyword argument 'id'
FAILED tests/test_group.py::TestGroup::test_fetch_group - TypeError: Group.__init__() got an unexpected keyword argument 'id'
FAILED tests/test_group.py::TestGroup::test_get_group_key - AttributeError: 'Group' object has no attribute 'id'
FAILED tests/test_group.py::TestGroup::test_group_added_to_registry - TypeError: Group.__init__() got an unexpected keyword argument 'id'
FAILED tests/test_group.py::TestGroup::test_group_id_added_to_jobs - TypeError: Group.__init__() got an unexpected keyword argument 'id'
FAILED tests/test_group.py::TestGroup::test_group_jobs - TypeError: Group.__init__() got an unexpected keyword argument 'id'
FAILED tests/test_group.py::TestGroup::test_jobs_added_to_group_key - TypeError: Group.__init__() got an unexpected keyword argument 'id'
==== 13 failed, 395 passed, 20 skipped, 1496 warnings in 411.54s (0:06:51) =====
##[error]Process completed with exit code 1.

step_name: Python3.10Redis7redis-py3.5.0/7_Test with pytest.txt
log: ##[group]Run RUN_SLOW_TESTS_TOO=1 hatch run test:cov --durations=5
[36;1mRUN_SLOW_TESTS_TOO=1 hatch run test:cov --durations=5[0m
shell: /usr/bin/bash -e {0}
env:
  pythonLocation: /opt/hostedtoolcache/Python/3.10.13/x64
  PKG_CONFIG_PATH: /opt/hostedtoolcache/Python/3.10.13/x64/lib/pkgconfig
  Python_ROOT_DIR: /opt/hostedtoolcache/Python/3.10.13/x64
  Python2_ROOT_DIR: /opt/hostedtoolcache/Python/3.10.13/x64
  Python3_ROOT_DIR: /opt/hostedtoolcache/Python/3.10.13/x64
  LD_LIBRARY_PATH: /opt/hostedtoolcache/Python/3.10.13/x64/lib
##[endgroup]
Creating environment: test
Installing project in development mode
Checking dependencies
Syncing dependencies
============================= test session starts ==============================
platform linux -- Python 3.10.13, pytest-7.4.4, pluggy-1.3.0
rootdir: /home/runner/work/rq/rq
plugins: cov-4.1.0
collected 428 items

tests/test_callbacks.py .............                                    [  3%]
tests/test_cli.py ......................................                 [ 11%]
tests/test_commands.py ...                                               [ 12%]
tests/test_connection.py ....                                            [ 13%]
tests/test_decorator.py ...............                                  [ 17%]
tests/test_dependencies.py .........                                     [ 19%]
tests/test_executions.py .........                                       [ 21%]
tests/test_fixtures.py ..                                                [ 21%]
tests/test_group.py FFFFFFFFFFFFF                                        [ 24%]
tests/test_helpers.py .                                                  [ 25%]
tests/test_job.py ...................................................... [ 37%]
..........................                                               [ 43%]
tests/test_maintenance.py .                                              [ 43%]
tests/test_queue.py .................................................... [ 56%]
                                                                         [ 56%]
tests/test_registry.py ............................                      [ 62%]
tests/test_results.py .............                                      [ 65%]
tests/test_retry.py ......                                               [ 67%]
tests/test_scheduler.py .................s......                         [ 72%]
tests/test_sentry.py ...                                                 [ 73%]
tests/test_serializers.py .                                              [ 73%]
tests/test_timeouts.py .                                                 [ 73%]
tests/test_utils.py .................                                    [ 77%]
tests/test_worker.py ................................................... [ 89%]
.................................                                        [ 97%]
tests/test_worker_pool.py .......                                        [ 99%]
tests/test_worker_registration.py ....                                   [100%]

=================================== FAILURES ===================================
___________________________ TestGroup.test_add_jobs ____________________________

self = <tests.test_group.TestGroup testMethod=test_add_jobs>

    def test_add_jobs(self):
        q = Queue(connection=self.testconn)
>       group = Group.create(connection=self.testconn)

tests/test_group.py:44: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

cls = <class 'rq.group.Group'>
connection = Redis<ConnectionPool<Connection<host=localhost,port=6379,db=4>>>
id = None

    @classmethod
    def create(cls, connection: Redis, id: Optional[str] = None):
>       return cls(id=id, connection=connection)
E       TypeError: Group.__init__() got an unexpected keyword argument 'id'

rq/group.py:73: TypeError
____________________ TestGroup.test_all_returns_all_groups _____________________

self = <tests.test_group.TestGroup testMethod=test_all_returns_all_groups>

    def test_all_returns_all_groups(self):
        q = Queue(connection=self.testconn)
>       group1 = Group.create(name="group1", connection=self.testconn)
E       TypeError: Group.create() got an unexpected keyword argument 'name'

tests/test_group.py:132: TypeError
_________________________ TestGroup.test_create_group __________________________

self = <tests.test_group.TestGroup testMethod=test_create_group>

    def test_create_group(self):
        q = Queue(connection=self.testconn)
>       group = Group.create(connection=self.testconn)

tests/test_group.py:20: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

cls = <class 'rq.group.Group'>
connection = Redis<ConnectionPool<Connection<host=localhost,port=6379,db=4>>>
id = None

    @classmethod
    def create(cls, connection: Redis, id: Optional[str] = None):
>       return cls(id=id, connection=connection)
E       TypeError: Group.__init__() got an unexpected keyword argument 'id'

rq/group.py:73: TypeError
________________ TestGroup.test_deleted_jobs_removed_from_group ________________

self = <tests.test_group.TestGroup testMethod=test_deleted_jobs_removed_from_group>

    def test_deleted_jobs_removed_from_group(self):
        q = Queue(connection=self.testconn)
>       group = Group.create(connection=self.testconn)

tests/test_group.py:70: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

cls = <class 'rq.group.Group'>
connection = Redis<ConnectionPool<Connection<host=localhost,port=6379,db=4>>>
id = None

    @classmethod
    def create(cls, connection: Redis, id: Optional[str] = None):
>       return cls(id=id, connection=connection)
E       TypeError: Group.__init__() got an unexpected keyword argument 'id'

rq/group.py:73: TypeError
______________ TestGroup.test_empty_group_removed_from_group_list ______________

self = <tests.test_group.TestGroup testMethod=test_empty_group_removed_from_group_list>

    @pytest.mark.slow
    def test_empty_group_removed_from_group_list(self):
        q = Queue(connection=self.testconn)
        w = SimpleWorker([q], connection=q.connection)
        short_lived_job = Queue.prepare_data(say_hello, result_ttl=1)
>       group = Group.create(connection=self.testconn)

tests/test_group.py:106: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

cls = <class 'rq.group.Group'>
connection = Redis<ConnectionPool<Connection<host=localhost,port=6379,db=4>>>
id = None

    @classmethod
    def create(cls, connection: Redis, id: Optional[str] = None):
>       return cls(id=id, connection=connection)
E       TypeError: Group.__init__() got an unexpected keyword argument 'id'

rq/group.py:73: TypeError
________________ TestGroup.test_expired_jobs_removed_from_group ________________

self = <tests.test_group.TestGroup testMethod=test_expired_jobs_removed_from_group>

    @pytest.mark.slow
    def test_expired_jobs_removed_from_group(self):
        q = Queue(connection=self.testconn)
        w = SimpleWorker([q], connection=q.connection)
        short_lived_job = Queue.prepare_data(say_hello, result_ttl=1)
>       group = Group.create(connection=self.testconn)

tests/test_group.py:92: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

cls = <class 'rq.group.Group'>
connection = Redis<ConnectionPool<Connection<host=localhost,port=6379,db=4>>>
id = None

    @classmethod
    def create(cls, connection: Redis, id: Optional[str] = None):
>       return cls(id=id, connection=connection)
E       TypeError: Group.__init__() got an unexpected keyword argument 'id'

rq/group.py:73: TypeError
_______________ TestGroup.test_fetch_expired_group_raises_error ________________

self = <tests.test_group.TestGroup testMethod=test_fetch_expired_group_raises_error>

    @pytest.mark.slow
    def test_fetch_expired_group_raises_error(self):
        q = Queue(connection=self.testconn)
        w = SimpleWorker([q], connection=q.connection)
        short_lived_job = Queue.prepare_data(say_hello, result_ttl=1)
>       group = Group.create(connection=self.testconn)

tests/test_group.py:119: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

cls = <class 'rq.group.Group'>
connection = Redis<ConnectionPool<Connection<host=localhost,port=6379,db=4>>>
id = None

    @classmethod
    def create(cls, connection: Redis, id: Optional[str] = None):
>       return cls(id=id, connection=connection)
E       TypeError: Group.__init__() got an unexpected keyword argument 'id'

rq/group.py:73: TypeError
__________________________ TestGroup.test_fetch_group __________________________

self = <tests.test_group.TestGroup testMethod=test_fetch_group>

    def test_fetch_group(self):
        q = Queue(connection=self.testconn)
>       enqueued_group = Group.create(connection=self.testconn)

tests/test_group.py:35: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

cls = <class 'rq.group.Group'>
connection = Redis<ConnectionPool<Connection<host=localhost,port=6379,db=4>>>
id = None

    @classmethod
    def create(cls, connection: Redis, id: Optional[str] = None):
>       return cls(id=id, connection=connection)
E       TypeError: Group.__init__() got an unexpected keyword argument 'id'

rq/group.py:73: TypeError
_________________________ TestGroup.test_get_group_key _________________________

self = <tests.test_group.TestGroup testMethod=test_get_group_key>

    def test_get_group_key(self):
>       group = Group(name="foo", connection=self.testconn)

tests/test_group.py:127: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <[AttributeError("'Group' object has no attribute 'id'") raised in repr()] Group object at 0x7f911f9fe7a0>
connection = Redis<ConnectionPool<Connection<host=localhost,port=6379,db=4>>>
name = 'foo'

    def __init__(self, connection: Redis, name: str = None):
        self.name = name if name else str(uuid4())
        self.connection = connection
>       self.key = '{0}{1}'.format(self.REDIS_GROUP_NAME_PREFIX, self.id)
E       AttributeError: 'Group' object has no attribute 'id'

rq/group.py:23: AttributeError
____________________ TestGroup.test_group_added_to_registry ____________________

self = <tests.test_group.TestGroup testMethod=test_group_added_to_registry>

    def test_group_added_to_registry(self):
        q = Queue(connection=self.testconn)
>       group = Group.create(connection=self.testconn)

tests/test_group.py:81: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

cls = <class 'rq.group.Group'>
connection = Redis<ConnectionPool<Connection<host=localhost,port=6379,db=4>>>
id = None

    @classmethod
    def create(cls, connection: Redis, id: Optional[str] = None):
>       return cls(id=id, connection=connection)
E       TypeError: Group.__init__() got an unexpected keyword argument 'id'

rq/group.py:73: TypeError
____________________ TestGroup.test_group_id_added_to_jobs _____________________

self = <tests.test_group.TestGroup testMethod=test_group_id_added_to_jobs>

    def test_group_id_added_to_jobs(self):
        q = Queue(connection=self.testconn)
>       group = Group.create(connection=self.testconn)

tests/test_group.py:62: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

cls = <class 'rq.group.Group'>
connection = Redis<ConnectionPool<Connection<host=localhost,port=6379,db=4>>>
id = None

    @classmethod
    def create(cls, connection: Redis, id: Optional[str] = None):
>       return cls(id=id, connection=connection)
E       TypeError: Group.__init__() got an unexpected keyword argument 'id'

rq/group.py:73: TypeError
__________________________ TestGroup.test_group_jobs ___________________________

self = <tests.test_group.TestGroup testMethod=test_group_jobs>

    def test_group_jobs(self):
        q = Queue(connection=self.testconn)
>       group = Group.create(connection=self.testconn)

tests/test_group.py:28: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

cls = <class 'rq.group.Group'>
connection = Redis<ConnectionPool<Connection<host=localhost,port=6379,db=4>>>
id = None

    @classmethod
    def create(cls, connection: Redis, id: Optional[str] = None):
>       return cls(id=id, connection=connection)
E       TypeError: Group.__init__() got an unexpected keyword argument 'id'

rq/group.py:73: TypeError
____________________ TestGroup.test_jobs_added_to_group_key ____________________

self = <tests.test_group.TestGroup testMethod=test_jobs_added_to_group_key>

    def test_jobs_added_to_group_key(self):
        q = Queue(connection=self.testconn)
>       group = Group.create(connection=self.testconn)

tests/test_group.py:53: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

cls = <class 'rq.group.Group'>
connection = Redis<ConnectionPool<Connection<host=localhost,port=6379,db=4>>>
id = None

    @classmethod
    def create(cls, connection: Redis, id: Optional[str] = None):
>       return cls(id=id, connection=connection)
E       TypeError: Group.__init__() got an unexpected keyword argument 'id'

rq/group.py:73: TypeError
=============================== warnings summary ===============================
rq/connections.py:35: 1 warning
tests/test_cli.py: 31 warnings
tests/test_connection.py: 3 warnings
  /home/runner/work/rq/rq/rq/connections.py:35: DeprecationWarning: The Connection context manager is deprecated. Use the `connection` parameter instead.
    warnings.warn(

rq/connections.py:58: 1 warning
tests/test_callbacks.py: 12 warnings
tests/test_cli.py: 33 warnings
tests/test_commands.py: 1 warning
tests/test_connection.py: 4 warnings
tests/test_decorator.py: 1 warning
tests/test_dependencies.py: 18 warnings
tests/test_executions.py: 1 warning
tests/test_fixtures.py: 1 warning
tests/test_group.py: 1 warning
tests/test_helpers.py: 1 warning
tests/test_job.py: 1 warning
tests/test_maintenance.py: 1 warning
tests/test_queue.py: 2 warnings
tests/test_registry.py: 8 warnings
tests/test_results.py: 1 warning
tests/test_retry.py: 1 warning
tests/test_scheduler.py: 4 warnings
tests/test_sentry.py: 2 warnings
tests/test_timeouts.py: 4 warnings
tests/test_utils.py: 1 warning
tests/test_worker.py: 13 warnings
tests/test_worker_registration.py: 1 warning
  /home/runner/work/rq/rq/rq/connections.py:58: DeprecationWarning: The `push_connection` function is deprecated. Pass the `connection` explicitly instead.
    warnings.warn(

rq/connections.py:72: 1 warning
tests/test_callbacks.py: 12 warnings
tests/test_cli.py: 33 warnings
tests/test_commands.py: 1 warning
tests/test_connection.py: 4 warnings
tests/test_decorator.py: 1 warning
tests/test_dependencies.py: 18 warnings
tests/test_executions.py: 1 warning
tests/test_fixtures.py: 1 warning
tests/test_group.py: 1 warning
tests/test_helpers.py: 1 warning
tests/test_job.py: 1 warning
tests/test_maintenance.py: 1 warning
tests/test_queue.py: 2 warnings
tests/test_registry.py: 8 warnings
tests/test_results.py: 1 warning
tests/test_retry.py: 1 warning
tests/test_scheduler.py: 4 warnings
tests/test_sentry.py: 2 warnings
tests/test_timeouts.py: 4 warnings
tests/test_utils.py: 1 warning
tests/test_worker.py: 13 warnings
tests/test_worker_registration.py: 1 warning
  /home/runner/work/rq/rq/rq/connections.py:72: DeprecationWarning: The `pop_connection` function is deprecated. Pass the `connection` explicitly instead.
    warnings.warn(

tests/test_group.py:87
  /home/runner/work/rq/rq/tests/test_group.py:87: PytestUnknownMarkWarning: Unknown pytest.mark.slow - is this a typo?  You can register custom marks to avoid this warning - for details, see https://docs.pytest.org/en/stable/how-to/mark.html
    @pytest.mark.slow

tests/test_group.py:101
  /home/runner/work/rq/rq/tests/test_group.py:101: PytestUnknownMarkWarning: Unknown pytest.mark.slow - is this a typo?  You can register custom marks to avoid this warning - for details, see https://docs.pytest.org/en/stable/how-to/mark.html
    @pytest.mark.slow

tests/test_group.py:114
  /home/runner/work/rq/rq/tests/test_group.py:114: PytestUnknownMarkWarning: Unknown pytest.mark.slow - is this a typo?  You can register custom marks to avoid this warning - for details, see https://docs.pytest.org/en/stable/how-to/mark.html
    @pytest.mark.slow

tests/__init__.py:34
  /home/runner/work/rq/rq/tests/__init__.py:34: PytestUnknownMarkWarning: Unknown pytest.mark.ssl_test - is this a typo?  You can register custom marks to avoid this warning - for details, see https://docs.pytest.org/en/stable/how-to/mark.html
    f = pytest.mark.ssl_test(f)

tests/__init__.py:29
  /home/runner/work/rq/rq/tests/__init__.py:29: PytestUnknownMarkWarning: Unknown pytest.mark.slow - is this a typo?  You can register custom marks to avoid this warning - for details, see https://docs.pytest.org/en/stable/how-to/mark.html
    f = pytest.mark.slow(f)

tests/test_callbacks.py: 12 warnings
tests/test_decorator.py: 1 warning
  /home/runner/work/rq/rq/rq/job.py:260: DeprecationWarning: Passing a string or function for `on_success` is deprecated, pass `Callback` instead
    warnings.warn(

tests/test_callbacks.py: 7 warnings
tests/test_decorator.py: 3 warnings
tests/test_job.py: 1 warning
  /home/runner/work/rq/rq/rq/job.py:270: DeprecationWarning: Passing a string or function for `on_failure` is deprecated, pass `Callback` instead
    warnings.warn(

tests/test_callbacks.py::QueueCallbackTestCase::test_enqueue_many_callback
tests/test_callbacks.py::QueueCallbackTestCase::test_enqueue_with_stopped_callback
tests/test_callbacks.py::QueueCallbackTestCase::test_enqueue_with_stopped_callback
tests/test_callbacks.py::QueueCallbackTestCase::test_enqueue_with_stopped_callback
tests/test_callbacks.py::SyncJobCallback::test_stopped_callback
tests/test_callbacks.py::JobCallbackTestCase::test_job_creation_with_stopped_callback
tests/test_job.py::TestJob::test_persistence_of_callbacks
  /home/runner/work/rq/rq/rq/job.py:280: DeprecationWarning: Passing a string or function for `on_stopped` is deprecated, pass `Callback` instead
    warnings.warn(

tests/test_callbacks.py: 11 warnings
tests/test_cli.py: 82 warnings
tests/test_connection.py: 4 warnings
tests/test_decorator.py: 25 warnings
tests/test_dependencies.py: 5 warnings
tests/test_job.py: 107 warnings
tests/test_queue.py: 82 warnings
tests/test_registry.py: 2 warnings
tests/test_retry.py: 2 warnings
tests/test_worker.py: 164 warnings
tests/test_worker_registration.py: 7 warnings
  /home/runner/work/rq/rq/rq/connections.py:108: DeprecationWarning: The `resolve_connection` function is deprecated. Pass the `connection` explicitly instead.
    warnings.warn(

tests/test_callbacks.py: 14 warnings
tests/test_cli.py: 93 warnings
tests/test_connection.py: 4 warnings
tests/test_decorator.py: 25 warnings
tests/test_dependencies.py: 8 warnings
tests/test_fixtures.py: 1 warning
tests/test_job.py: 118 warnings
tests/test_queue.py: 83 warnings
tests/test_registry.py: 9 warnings
tests/test_results.py: 4 warnings
tests/test_retry.py: 3 warnings
tests/test_worker.py: 265 warnings
tests/test_worker_registration.py: 53 warnings
  /home/runner/work/rq/rq/rq/connections.py:87: DeprecationWarning: The `get_current_connection` function is deprecated. Pass the `connection` explicitly instead.
    warnings.warn(

tests/test_callbacks.py: 2 warnings
tests/test_cli.py: 3 warnings
tests/test_dependencies.py: 1 warning
tests/test_job.py: 6 warnings
tests/test_results.py: 2 warnings
tests/test_worker.py: 13 warnings
  /home/runner/work/rq/rq/rq/job.py:874: DeprecationWarning: job.result is deprecated, use job.return_value instead.
    warnings.warn("job.result is deprecated, use job.return_value instead.", DeprecationWarning)

tests/test_callbacks.py: 2 warnings
tests/test_job.py: 3 warnings
tests/test_registry.py: 1 warning
tests/test_results.py: 2 warnings
tests/test_timeouts.py: 1 warning
tests/test_worker.py: 5 warnings
  /home/runner/work/rq/rq/rq/job.py:810: DeprecationWarning: job.exc_info is deprecated, use job.latest_result() instead.
    warnings.warn("job.exc_info is deprecated, use job.latest_result() instead.", DeprecationWarning)

-- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html

---------- coverage: platform linux, python 3.10.13-final-0 ----------
Coverage XML written to file coverage.xml

============================= slowest 5 durations ==============================
66.12s call     tests/test_worker.py::WorkerShutdownTestCase::test_work_horse_force_death
30.28s call     tests/test_worker.py::TestRoundRobinWorker::test_round_robin
30.28s call     tests/test_worker.py::TestRandomWorker::test_random_worker
30.28s call     tests/test_worker.py::TestWorker::test_dequeue_round_robin
30.27s call     tests/test_worker.py::TestWorker::test_dequeue_random_strategy
=========================== short test summary info ============================
FAILED tests/test_group.py::TestGroup::test_add_jobs - TypeError: Group.__init__() got an unexpected keyword argument 'id'
FAILED tests/test_group.py::TestGroup::test_all_returns_all_groups - TypeError: Group.create() got an unexpected keyword argument 'name'
FAILED tests/test_group.py::TestGroup::test_create_group - TypeError: Group.__init__() got an unexpected keyword argument 'id'
FAILED tests/test_group.py::TestGroup::test_deleted_jobs_removed_from_group - TypeError: Group.__init__() got an unexpected keyword argument 'id'
FAILED tests/test_group.py::TestGroup::test_empty_group_removed_from_group_list - TypeError: Group.__init__() got an unexpected keyword argument 'id'
FAILED tests/test_group.py::TestGroup::test_expired_jobs_removed_from_group - TypeError: Group.__init__() got an unexpected keyword argument 'id'
FAILED tests/test_group.py::TestGroup::test_fetch_expired_group_raises_error - TypeError: Group.__init__() got an unexpected keyword argument 'id'
FAILED tests/test_group.py::TestGroup::test_fetch_group - TypeError: Group.__init__() got an unexpected keyword argument 'id'
FAILED tests/test_group.py::TestGroup::test_get_group_key - AttributeError: 'Group' object has no attribute 'id'
FAILED tests/test_group.py::TestGroup::test_group_added_to_registry - TypeError: Group.__init__() got an unexpected keyword argument 'id'
FAILED tests/test_group.py::TestGroup::test_group_id_added_to_jobs - TypeError: Group.__init__() got an unexpected keyword argument 'id'
FAILED tests/test_group.py::TestGroup::test_group_jobs - TypeError: Group.__init__() got an unexpected keyword argument 'id'
FAILED tests/test_group.py::TestGroup::test_jobs_added_to_group_key - TypeError: Group.__init__() got an unexpected keyword argument 'id'
===== 13 failed, 414 passed, 1 skipped, 1509 warnings in 413.84s (0:06:53) =====
##[error]Process completed with exit code 1.

step_name: Python3.11Redis4redis-py3.5.0/7_Test with pytest.txt
log: ##[group]Run RUN_SLOW_TESTS_TOO=1 hatch run test:cov --durations=5
[36;1mRUN_SLOW_TESTS_TOO=1 hatch run test:cov --durations=5[0m
shell: /usr/bin/bash -e {0}
env:
  pythonLocation: /opt/hostedtoolcache/Python/3.11.7/x64
  PKG_CONFIG_PATH: /opt/hostedtoolcache/Python/3.11.7/x64/lib/pkgconfig
  Python_ROOT_DIR: /opt/hostedtoolcache/Python/3.11.7/x64
  Python2_ROOT_DIR: /opt/hostedtoolcache/Python/3.11.7/x64
  Python3_ROOT_DIR: /opt/hostedtoolcache/Python/3.11.7/x64
  LD_LIBRARY_PATH: /opt/hostedtoolcache/Python/3.11.7/x64/lib
##[endgroup]
Creating environment: test
Installing project in development mode
Checking dependencies
Syncing dependencies
============================= test session starts ==============================
platform linux -- Python 3.11.7, pytest-7.4.4, pluggy-1.3.0
rootdir: /home/runner/work/rq/rq
plugins: cov-4.1.0
collected 428 items

tests/test_callbacks.py .............                                    [  3%]
tests/test_cli.py ......................................                 [ 11%]
tests/test_commands.py ...                                               [ 12%]
tests/test_connection.py ....                                            [ 13%]
tests/test_decorator.py ...............                                  [ 17%]
tests/test_dependencies.py .........                                     [ 19%]
tests/test_executions.py .........                                       [ 21%]
tests/test_fixtures.py ..                                                [ 21%]
tests/test_group.py FFFFFFFFFFFFF                                        [ 24%]
tests/test_helpers.py .                                                  [ 25%]
tests/test_job.py s..................................................... [ 37%]
..........................                                               [ 43%]
tests/test_maintenance.py s                                              [ 43%]
tests/test_queue.py .........s...............................s.......... [ 56%]
                                                                         [ 56%]
tests/test_registry.py ............................                      [ 62%]
tests/test_results.py sssssssssssss                                      [ 65%]
tests/test_retry.py ......                                               [ 67%]
tests/test_scheduler.py .................s......                         [ 72%]
tests/test_sentry.py ...                                                 [ 73%]
tests/test_serializers.py .                                              [ 73%]
tests/test_timeouts.py .                                                 [ 73%]
tests/test_utils.py .................                                    [ 77%]
tests/test_worker.py ....................................s.............. [ 89%]
..s..............................                                        [ 97%]
tests/test_worker_pool.py .......                                        [ 99%]
tests/test_worker_registration.py ....                                   [100%]

=================================== FAILURES ===================================
___________________________ TestGroup.test_add_jobs ____________________________

self = <tests.test_group.TestGroup testMethod=test_add_jobs>

    def test_add_jobs(self):
        q = Queue(connection=self.testconn)
>       group = Group.create(connection=self.testconn)

tests/test_group.py:44: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

cls = <class 'rq.group.Group'>
connection = Redis<ConnectionPool<Connection<host=localhost,port=6379,db=4>>>
id = None

    @classmethod
    def create(cls, connection: Redis, id: Optional[str] = None):
>       return cls(id=id, connection=connection)
E       TypeError: Group.__init__() got an unexpected keyword argument 'id'

rq/group.py:73: TypeError
____________________ TestGroup.test_all_returns_all_groups _____________________

self = <tests.test_group.TestGroup testMethod=test_all_returns_all_groups>

    def test_all_returns_all_groups(self):
        q = Queue(connection=self.testconn)
>       group1 = Group.create(name="group1", connection=self.testconn)
E       TypeError: Group.create() got an unexpected keyword argument 'name'

tests/test_group.py:132: TypeError
_________________________ TestGroup.test_create_group __________________________

self = <tests.test_group.TestGroup testMethod=test_create_group>

    def test_create_group(self):
        q = Queue(connection=self.testconn)
>       group = Group.create(connection=self.testconn)

tests/test_group.py:20: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

cls = <class 'rq.group.Group'>
connection = Redis<ConnectionPool<Connection<host=localhost,port=6379,db=4>>>
id = None

    @classmethod
    def create(cls, connection: Redis, id: Optional[str] = None):
>       return cls(id=id, connection=connection)
E       TypeError: Group.__init__() got an unexpected keyword argument 'id'

rq/group.py:73: TypeError
________________ TestGroup.test_deleted_jobs_removed_from_group ________________

self = <tests.test_group.TestGroup testMethod=test_deleted_jobs_removed_from_group>

    def test_deleted_jobs_removed_from_group(self):
        q = Queue(connection=self.testconn)
>       group = Group.create(connection=self.testconn)

tests/test_group.py:70: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

cls = <class 'rq.group.Group'>
connection = Redis<ConnectionPool<Connection<host=localhost,port=6379,db=4>>>
id = None

    @classmethod
    def create(cls, connection: Redis, id: Optional[str] = None):
>       return cls(id=id, connection=connection)
E       TypeError: Group.__init__() got an unexpected keyword argument 'id'

rq/group.py:73: TypeError
______________ TestGroup.test_empty_group_removed_from_group_list ______________

self = <tests.test_group.TestGroup testMethod=test_empty_group_removed_from_group_list>

    @pytest.mark.slow
    def test_empty_group_removed_from_group_list(self):
        q = Queue(connection=self.testconn)
        w = SimpleWorker([q], connection=q.connection)
        short_lived_job = Queue.prepare_data(say_hello, result_ttl=1)
>       group = Group.create(connection=self.testconn)

tests/test_group.py:106: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

cls = <class 'rq.group.Group'>
connection = Redis<ConnectionPool<Connection<host=localhost,port=6379,db=4>>>
id = None

    @classmethod
    def create(cls, connection: Redis, id: Optional[str] = None):
>       return cls(id=id, connection=connection)
E       TypeError: Group.__init__() got an unexpected keyword argument 'id'

rq/group.py:73: TypeError
________________ TestGroup.test_expired_jobs_removed_from_group ________________

self = <tests.test_group.TestGroup testMethod=test_expired_jobs_removed_from_group>

    @pytest.mark.slow
    def test_expired_jobs_removed_from_group(self):
        q = Queue(connection=self.testconn)
        w = SimpleWorker([q], connection=q.connection)
        short_lived_job = Queue.prepare_data(say_hello, result_ttl=1)
>       group = Group.create(connection=self.testconn)

tests/test_group.py:92: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

cls = <class 'rq.group.Group'>
connection = Redis<ConnectionPool<Connection<host=localhost,port=6379,db=4>>>
id = None

    @classmethod
    def create(cls, connection: Redis, id: Optional[str] = None):
>       return cls(id=id, connection=connection)
E       TypeError: Group.__init__() got an unexpected keyword argument 'id'

rq/group.py:73: TypeError
_______________ TestGroup.test_fetch_expired_group_raises_error ________________

self = <tests.test_group.TestGroup testMethod=test_fetch_expired_group_raises_error>

    @pytest.mark.slow
    def test_fetch_expired_group_raises_error(self):
        q = Queue(connection=self.testconn)
        w = SimpleWorker([q], connection=q.connection)
        short_lived_job = Queue.prepare_data(say_hello, result_ttl=1)
>       group = Group.create(connection=self.testconn)

tests/test_group.py:119: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

cls = <class 'rq.group.Group'>
connection = Redis<ConnectionPool<Connection<host=localhost,port=6379,db=4>>>
id = None

    @classmethod
    def create(cls, connection: Redis, id: Optional[str] = None):
>       return cls(id=id, connection=connection)
E       TypeError: Group.__init__() got an unexpected keyword argument 'id'

rq/group.py:73: TypeError
__________________________ TestGroup.test_fetch_group __________________________

self = <tests.test_group.TestGroup testMethod=test_fetch_group>

    def test_fetch_group(self):
        q = Queue(connection=self.testconn)
>       enqueued_group = Group.create(connection=self.testconn)

tests/test_group.py:35: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

cls = <class 'rq.group.Group'>
connection = Redis<ConnectionPool<Connection<host=localhost,port=6379,db=4>>>
id = None

    @classmethod
    def create(cls, connection: Redis, id: Optional[str] = None):
>       return cls(id=id, connection=connection)
E       TypeError: Group.__init__() got an unexpected keyword argument 'id'

rq/group.py:73: TypeError
_________________________ TestGroup.test_get_group_key _________________________

self = <tests.test_group.TestGroup testMethod=test_get_group_key>

    def test_get_group_key(self):
>       group = Group(name="foo", connection=self.testconn)

tests/test_group.py:127: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <[AttributeError("'Group' object has no attribute 'id'") raised in repr()] Group object at 0x7f71906f3410>
connection = Redis<ConnectionPool<Connection<host=localhost,port=6379,db=4>>>
name = 'foo'

    def __init__(self, connection: Redis, name: str = None):
        self.name = name if name else str(uuid4())
        self.connection = connection
>       self.key = '{0}{1}'.format(self.REDIS_GROUP_NAME_PREFIX, self.id)
E       AttributeError: 'Group' object has no attribute 'id'

rq/group.py:23: AttributeError
____________________ TestGroup.test_group_added_to_registry ____________________

self = <tests.test_group.TestGroup testMethod=test_group_added_to_registry>

    def test_group_added_to_registry(self):
        q = Queue(connection=self.testconn)
>       group = Group.create(connection=self.testconn)

tests/test_group.py:81: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

cls = <class 'rq.group.Group'>
connection = Redis<ConnectionPool<Connection<host=localhost,port=6379,db=4>>>
id = None

    @classmethod
    def create(cls, connection: Redis, id: Optional[str] = None):
>       return cls(id=id, connection=connection)
E       TypeError: Group.__init__() got an unexpected keyword argument 'id'

rq/group.py:73: TypeError
____________________ TestGroup.test_group_id_added_to_jobs _____________________

self = <tests.test_group.TestGroup testMethod=test_group_id_added_to_jobs>

    def test_group_id_added_to_jobs(self):
        q = Queue(connection=self.testconn)
>       group = Group.create(connection=self.testconn)

tests/test_group.py:62: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

cls = <class 'rq.group.Group'>
connection = Redis<ConnectionPool<Connection<host=localhost,port=6379,db=4>>>
id = None

    @classmethod
    def create(cls, connection: Redis, id: Optional[str] = None):
>       return cls(id=id, connection=connection)
E       TypeError: Group.__init__() got an unexpected keyword argument 'id'

rq/group.py:73: TypeError
__________________________ TestGroup.test_group_jobs ___________________________

self = <tests.test_group.TestGroup testMethod=test_group_jobs>

    def test_group_jobs(self):
        q = Queue(connection=self.testconn)
>       group = Group.create(connection=self.testconn)

tests/test_group.py:28: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

cls = <class 'rq.group.Group'>
connection = Redis<ConnectionPool<Connection<host=localhost,port=6379,db=4>>>
id = None

    @classmethod
    def create(cls, connection: Redis, id: Optional[str] = None):
>       return cls(id=id, connection=connection)
E       TypeError: Group.__init__() got an unexpected keyword argument 'id'

rq/group.py:73: TypeError
____________________ TestGroup.test_jobs_added_to_group_key ____________________

self = <tests.test_group.TestGroup testMethod=test_jobs_added_to_group_key>

    def test_jobs_added_to_group_key(self):
        q = Queue(connection=self.testconn)
>       group = Group.create(connection=self.testconn)

tests/test_group.py:53: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

cls = <class 'rq.group.Group'>
connection = Redis<ConnectionPool<Connection<host=localhost,port=6379,db=4>>>
id = None

    @classmethod
    def create(cls, connection: Redis, id: Optional[str] = None):
>       return cls(id=id, connection=connection)
E       TypeError: Group.__init__() got an unexpected keyword argument 'id'

rq/group.py:73: TypeError
=============================== warnings summary ===============================
rq/connections.py:35: 1 warning
tests/test_cli.py: 31 warnings
tests/test_connection.py: 3 warnings
  /home/runner/work/rq/rq/rq/connections.py:35: DeprecationWarning: The Connection context manager is deprecated. Use the `connection` parameter instead.
    warnings.warn(

rq/connections.py:58: 1 warning
tests/test_callbacks.py: 12 warnings
tests/test_cli.py: 33 warnings
tests/test_commands.py: 1 warning
tests/test_connection.py: 4 warnings
tests/test_decorator.py: 1 warning
tests/test_dependencies.py: 18 warnings
tests/test_executions.py: 1 warning
tests/test_fixtures.py: 1 warning
tests/test_group.py: 1 warning
tests/test_helpers.py: 1 warning
tests/test_job.py: 1 warning
tests/test_maintenance.py: 1 warning
tests/test_queue.py: 2 warnings
tests/test_registry.py: 8 warnings
tests/test_retry.py: 1 warning
tests/test_scheduler.py: 4 warnings
tests/test_sentry.py: 2 warnings
tests/test_timeouts.py: 4 warnings
tests/test_utils.py: 1 warning
tests/test_worker.py: 13 warnings
tests/test_worker_registration.py: 1 warning
  /home/runner/work/rq/rq/rq/connections.py:58: DeprecationWarning: The `push_connection` function is deprecated. Pass the `connection` explicitly instead.
    warnings.warn(

rq/connections.py:72: 1 warning
tests/test_callbacks.py: 12 warnings
tests/test_cli.py: 33 warnings
tests/test_commands.py: 1 warning
tests/test_connection.py: 4 warnings
tests/test_decorator.py: 1 warning
tests/test_dependencies.py: 18 warnings
tests/test_executions.py: 1 warning
tests/test_fixtures.py: 1 warning
tests/test_group.py: 1 warning
tests/test_helpers.py: 1 warning
tests/test_job.py: 1 warning
tests/test_maintenance.py: 1 warning
tests/test_queue.py: 2 warnings
tests/test_registry.py: 8 warnings
tests/test_retry.py: 1 warning
tests/test_scheduler.py: 4 warnings
tests/test_sentry.py: 2 warnings
tests/test_timeouts.py: 4 warnings
tests/test_utils.py: 1 warning
tests/test_worker.py: 13 warnings
tests/test_worker_registration.py: 1 warning
  /home/runner/work/rq/rq/rq/connections.py:72: DeprecationWarning: The `pop_connection` function is deprecated. Pass the `connection` explicitly instead.
    warnings.warn(

tests/test_group.py:87
  /home/runner/work/rq/rq/tests/test_group.py:87: PytestUnknownMarkWarning: Unknown pytest.mark.slow - is this a typo?  You can register custom marks to avoid this warning - for details, see https://docs.pytest.org/en/stable/how-to/mark.html
    @pytest.mark.slow

tests/test_group.py:101
  /home/runner/work/rq/rq/tests/test_group.py:101: PytestUnknownMarkWarning: Unknown pytest.mark.slow - is this a typo?  You can register custom marks to avoid this warning - for details, see https://docs.pytest.org/en/stable/how-to/mark.html
    @pytest.mark.slow

tests/test_group.py:114
  /home/runner/work/rq/rq/tests/test_group.py:114: PytestUnknownMarkWarning: Unknown pytest.mark.slow - is this a typo?  You can register custom marks to avoid this warning - for details, see https://docs.pytest.org/en/stable/how-to/mark.html
    @pytest.mark.slow

tests/__init__.py:34
  /home/runner/work/rq/rq/tests/__init__.py:34: PytestUnknownMarkWarning: Unknown pytest.mark.ssl_test - is this a typo?  You can register custom marks to avoid this warning - for details, see https://docs.pytest.org/en/stable/how-to/mark.html
    f = pytest.mark.ssl_test(f)

tests/__init__.py:29
  /home/runner/work/rq/rq/tests/__init__.py:29: PytestUnknownMarkWarning: Unknown pytest.mark.slow - is this a typo?  You can register custom marks to avoid this warning - for details, see https://docs.pytest.org/en/stable/how-to/mark.html
    f = pytest.mark.slow(f)

tests/test_callbacks.py: 12 warnings
tests/test_decorator.py: 1 warning
  /home/runner/work/rq/rq/rq/job.py:260: DeprecationWarning: Passing a string or function for `on_success` is deprecated, pass `Callback` instead
    warnings.warn(

tests/test_callbacks.py: 7 warnings
tests/test_decorator.py: 3 warnings
tests/test_job.py: 1 warning
  /home/runner/work/rq/rq/rq/job.py:270: DeprecationWarning: Passing a string or function for `on_failure` is deprecated, pass `Callback` instead
    warnings.warn(

tests/test_callbacks.py::QueueCallbackTestCase::test_enqueue_many_callback
tests/test_callbacks.py::QueueCallbackTestCase::test_enqueue_with_stopped_callback
tests/test_callbacks.py::QueueCallbackTestCase::test_enqueue_with_stopped_callback
tests/test_callbacks.py::QueueCallbackTestCase::test_enqueue_with_stopped_callback
tests/test_callbacks.py::SyncJobCallback::test_stopped_callback
tests/test_callbacks.py::JobCallbackTestCase::test_job_creation_with_stopped_callback
tests/test_job.py::TestJob::test_persistence_of_callbacks
  /home/runner/work/rq/rq/rq/job.py:280: DeprecationWarning: Passing a string or function for `on_stopped` is deprecated, pass `Callback` instead
    warnings.warn(

tests/test_callbacks.py: 11 warnings
tests/test_cli.py: 82 warnings
tests/test_connection.py: 4 warnings
tests/test_decorator.py: 25 warnings
tests/test_dependencies.py: 5 warnings
tests/test_job.py: 107 warnings
tests/test_queue.py: 82 warnings
tests/test_registry.py: 2 warnings
tests/test_retry.py: 2 warnings
tests/test_worker.py: 164 warnings
tests/test_worker_registration.py: 7 warnings
  /home/runner/work/rq/rq/rq/connections.py:108: DeprecationWarning: The `resolve_connection` function is deprecated. Pass the `connection` explicitly instead.
    warnings.warn(

tests/test_callbacks.py: 14 warnings
tests/test_cli.py: 93 warnings
tests/test_connection.py: 4 warnings
tests/test_decorator.py: 25 warnings
tests/test_dependencies.py: 8 warnings
tests/test_fixtures.py: 1 warning
tests/test_job.py: 118 warnings
tests/test_queue.py: 83 warnings
tests/test_registry.py: 9 warnings
tests/test_retry.py: 3 warnings
tests/test_worker.py: 263 warnings
tests/test_worker_registration.py: 53 warnings
  /home/runner/work/rq/rq/rq/connections.py:87: DeprecationWarning: The `get_current_connection` function is deprecated. Pass the `connection` explicitly instead.
    warnings.warn(

tests/test_callbacks.py: 2 warnings
tests/test_cli.py: 3 warnings
tests/test_dependencies.py: 1 warning
tests/test_job.py: 6 warnings
tests/test_worker.py: 13 warnings
  /home/runner/work/rq/rq/rq/job.py:874: DeprecationWarning: job.result is deprecated, use job.return_value instead.
    warnings.warn("job.result is deprecated, use job.return_value instead.", DeprecationWarning)

tests/test_callbacks.py: 2 warnings
tests/test_job.py: 3 warnings
tests/test_registry.py: 1 warning
tests/test_timeouts.py: 1 warning
tests/test_worker.py: 4 warnings
  /home/runner/work/rq/rq/rq/job.py:810: DeprecationWarning: job.exc_info is deprecated, use job.latest_result() instead.
    warnings.warn("job.exc_info is deprecated, use job.latest_result() instead.", DeprecationWarning)

-- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html

---------- coverage: platform linux, python 3.11.7-final-0 -----------
Coverage XML written to file coverage.xml

============================= slowest 5 durations ==============================
66.12s call     tests/test_worker.py::WorkerShutdownTestCase::test_work_horse_force_death
30.27s call     tests/test_worker.py::TestRandomWorker::test_random_worker
30.27s call     tests/test_worker.py::TestRoundRobinWorker::test_round_robin
30.27s call     tests/test_worker.py::TestWorker::test_dequeue_round_robin
30.27s call     tests/test_worker.py::TestWorker::test_dequeue_random_strategy
=========================== short test summary info ============================
FAILED tests/test_group.py::TestGroup::test_add_jobs - TypeError: Group.__init__() got an unexpected keyword argument 'id'
FAILED tests/test_group.py::TestGroup::test_all_returns_all_groups - TypeError: Group.create() got an unexpected keyword argument 'name'
FAILED tests/test_group.py::TestGroup::test_create_group - TypeError: Group.__init__() got an unexpected keyword argument 'id'
FAILED tests/test_group.py::TestGroup::test_deleted_jobs_removed_from_group - TypeError: Group.__init__() got an unexpected keyword argument 'id'
FAILED tests/test_group.py::TestGroup::test_empty_group_removed_from_group_list - TypeError: Group.__init__() got an unexpected keyword argument 'id'
FAILED tests/test_group.py::TestGroup::test_expired_jobs_removed_from_group - TypeError: Group.__init__() got an unexpected keyword argument 'id'
FAILED tests/test_group.py::TestGroup::test_fetch_expired_group_raises_error - TypeError: Group.__init__() got an unexpected keyword argument 'id'
FAILED tests/test_group.py::TestGroup::test_fetch_group - TypeError: Group.__init__() got an unexpected keyword argument 'id'
FAILED tests/test_group.py::TestGroup::test_get_group_key - AttributeError: 'Group' object has no attribute 'id'
FAILED tests/test_group.py::TestGroup::test_group_added_to_registry - TypeError: Group.__init__() got an unexpected keyword argument 'id'
FAILED tests/test_group.py::TestGroup::test_group_id_added_to_jobs - TypeError: Group.__init__() got an unexpected keyword argument 'id'
FAILED tests/test_group.py::TestGroup::test_group_jobs - TypeError: Group.__init__() got an unexpected keyword argument 'id'
FAILED tests/test_group.py::TestGroup::test_jobs_added_to_group_key - TypeError: Group.__init__() got an unexpected keyword argument 'id'
==== 13 failed, 395 passed, 20 skipped, 1496 warnings in 412.32s (0:06:52) =====
##[error]Process completed with exit code 1.

step_name: Python3.11Redis5redis-py3.5.0/7_Test with pytest.txt
log: ##[group]Run RUN_SLOW_TESTS_TOO=1 hatch run test:cov --durations=5
[36;1mRUN_SLOW_TESTS_TOO=1 hatch run test:cov --durations=5[0m
shell: /usr/bin/bash -e {0}
env:
  pythonLocation: /opt/hostedtoolcache/Python/3.11.7/x64
  PKG_CONFIG_PATH: /opt/hostedtoolcache/Python/3.11.7/x64/lib/pkgconfig
  Python_ROOT_DIR: /opt/hostedtoolcache/Python/3.11.7/x64
  Python2_ROOT_DIR: /opt/hostedtoolcache/Python/3.11.7/x64
  Python3_ROOT_DIR: /opt/hostedtoolcache/Python/3.11.7/x64
  LD_LIBRARY_PATH: /opt/hostedtoolcache/Python/3.11.7/x64/lib
##[endgroup]
Creating environment: test
Installing project in development mode
Checking dependencies
Syncing dependencies
============================= test session starts ==============================
platform linux -- Python 3.11.7, pytest-7.4.4, pluggy-1.3.0
rootdir: /home/runner/work/rq/rq
plugins: cov-4.1.0
collected 428 items

tests/test_callbacks.py .............                                    [  3%]
tests/test_cli.py ......................................                 [ 11%]
tests/test_commands.py ...                                               [ 12%]
tests/test_connection.py ....                                            [ 13%]
tests/test_decorator.py ...............                                  [ 17%]
tests/test_dependencies.py .........                                     [ 19%]
tests/test_executions.py .........                                       [ 21%]
tests/test_fixtures.py ..                                                [ 21%]
tests/test_group.py FFFFFFFFFFFFF                                        [ 24%]
tests/test_helpers.py .                                                  [ 25%]
tests/test_job.py ...................................................... [ 37%]
..........................                                               [ 43%]
tests/test_maintenance.py s                                              [ 43%]
tests/test_queue.py .........s...............................s.......... [ 56%]
                                                                         [ 56%]
tests/test_registry.py ............................                      [ 62%]
tests/test_results.py .............                                      [ 65%]
tests/test_retry.py ......                                               [ 67%]
tests/test_scheduler.py .................s......                         [ 72%]
tests/test_sentry.py ...                                                 [ 73%]
tests/test_serializers.py .                                              [ 73%]
tests/test_timeouts.py .                                                 [ 73%]
tests/test_utils.py .................                                    [ 77%]
tests/test_worker.py ....................................s.............. [ 89%]
..s..............................                                        [ 97%]
tests/test_worker_pool.py .......                                        [ 99%]
tests/test_worker_registration.py ....                                   [100%]

=================================== FAILURES ===================================
___________________________ TestGroup.test_add_jobs ____________________________

self = <tests.test_group.TestGroup testMethod=test_add_jobs>

    def test_add_jobs(self):
        q = Queue(connection=self.testconn)
>       group = Group.create(connection=self.testconn)

tests/test_group.py:44: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

cls = <class 'rq.group.Group'>
connection = Redis<ConnectionPool<Connection<host=localhost,port=6379,db=4>>>
id = None

    @classmethod
    def create(cls, connection: Redis, id: Optional[str] = None):
>       return cls(id=id, connection=connection)
E       TypeError: Group.__init__() got an unexpected keyword argument 'id'

rq/group.py:73: TypeError
____________________ TestGroup.test_all_returns_all_groups _____________________

self = <tests.test_group.TestGroup testMethod=test_all_returns_all_groups>

    def test_all_returns_all_groups(self):
        q = Queue(connection=self.testconn)
>       group1 = Group.create(name="group1", connection=self.testconn)
E       TypeError: Group.create() got an unexpected keyword argument 'name'

tests/test_group.py:132: TypeError
_________________________ TestGroup.test_create_group __________________________

self = <tests.test_group.TestGroup testMethod=test_create_group>

    def test_create_group(self):
        q = Queue(connection=self.testconn)
>       group = Group.create(connection=self.testconn)

tests/test_group.py:20: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

cls = <class 'rq.group.Group'>
connection = Redis<ConnectionPool<Connection<host=localhost,port=6379,db=4>>>
id = None

    @classmethod
    def create(cls, connection: Redis, id: Optional[str] = None):
>       return cls(id=id, connection=connection)
E       TypeError: Group.__init__() got an unexpected keyword argument 'id'

rq/group.py:73: TypeError
________________ TestGroup.test_deleted_jobs_removed_from_group ________________

self = <tests.test_group.TestGroup testMethod=test_deleted_jobs_removed_from_group>

    def test_deleted_jobs_removed_from_group(self):
        q = Queue(connection=self.testconn)
>       group = Group.create(connection=self.testconn)

tests/test_group.py:70: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

cls = <class 'rq.group.Group'>
connection = Redis<ConnectionPool<Connection<host=localhost,port=6379,db=4>>>
id = None

    @classmethod
    def create(cls, connection: Redis, id: Optional[str] = None):
>       return cls(id=id, connection=connection)
E       TypeError: Group.__init__() got an unexpected keyword argument 'id'

rq/group.py:73: TypeError
______________ TestGroup.test_empty_group_removed_from_group_list ______________

self = <tests.test_group.TestGroup testMethod=test_empty_group_removed_from_group_list>

    @pytest.mark.slow
    def test_empty_group_removed_from_group_list(self):
        q = Queue(connection=self.testconn)
        w = SimpleWorker([q], connection=q.connection)
        short_lived_job = Queue.prepare_data(say_hello, result_ttl=1)
>       group = Group.create(connection=self.testconn)

tests/test_group.py:106: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

cls = <class 'rq.group.Group'>
connection = Redis<ConnectionPool<Connection<host=localhost,port=6379,db=4>>>
id = None

    @classmethod
    def create(cls, connection: Redis, id: Optional[str] = None):
>       return cls(id=id, connection=connection)
E       TypeError: Group.__init__() got an unexpected keyword argument 'id'

rq/group.py:73: TypeError
________________ TestGroup.test_expired_jobs_removed_from_group ________________

self = <tests.test_group.TestGroup testMethod=test_expired_jobs_removed_from_group>

    @pytest.mark.slow
    def test_expired_jobs_removed_from_group(self):
        q = Queue(connection=self.testconn)
        w = SimpleWorker([q], connection=q.connection)
        short_lived_job = Queue.prepare_data(say_hello, result_ttl=1)
>       group = Group.create(connection=self.testconn)

tests/test_group.py:92: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

cls = <class 'rq.group.Group'>
connection = Redis<ConnectionPool<Connection<host=localhost,port=6379,db=4>>>
id = None

    @classmethod
    def create(cls, connection: Redis, id: Optional[str] = None):
>       return cls(id=id, connection=connection)
E       TypeError: Group.__init__() got an unexpected keyword argument 'id'

rq/group.py:73: TypeError
_______________ TestGroup.test_fetch_expired_group_raises_error ________________

self = <tests.test_group.TestGroup testMethod=test_fetch_expired_group_raises_error>

    @pytest.mark.slow
    def test_fetch_expired_group_raises_error(self):
        q = Queue(connection=self.testconn)
        w = SimpleWorker([q], connection=q.connection)
        short_lived_job = Queue.prepare_data(say_hello, result_ttl=1)
>       group = Group.create(connection=self.testconn)

tests/test_group.py:119: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

cls = <class 'rq.group.Group'>
connection = Redis<ConnectionPool<Connection<host=localhost,port=6379,db=4>>>
id = None

    @classmethod
    def create(cls, connection: Redis, id: Optional[str] = None):
>       return cls(id=id, connection=connection)
E       TypeError: Group.__init__() got an unexpected keyword argument 'id'

rq/group.py:73: TypeError
__________________________ TestGroup.test_fetch_group __________________________

self = <tests.test_group.TestGroup testMethod=test_fetch_group>

    def test_fetch_group(self):
        q = Queue(connection=self.testconn)
>       enqueued_group = Group.create(connection=self.testconn)

tests/test_group.py:35: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

cls = <class 'rq.group.Group'>
connection = Redis<ConnectionPool<Connection<host=localhost,port=6379,db=4>>>
id = None

    @classmethod
    def create(cls, connection: Redis, id: Optional[str] = None):
>       return cls(id=id, connection=connection)
E       TypeError: Group.__init__() got an unexpected keyword argument 'id'

rq/group.py:73: TypeError
_________________________ TestGroup.test_get_group_key _________________________

self = <tests.test_group.TestGroup testMethod=test_get_group_key>

    def test_get_group_key(self):
>       group = Group(name="foo", connection=self.testconn)

tests/test_group.py:127: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <[AttributeError("'Group' object has no attribute 'id'") raised in repr()] Group object at 0x7f86ff1eb710>
connection = Redis<ConnectionPool<Connection<host=localhost,port=6379,db=4>>>
name = 'foo'

    def __init__(self, connection: Redis, name: str = None):
        self.name = name if name else str(uuid4())
        self.connection = connection
>       self.key = '{0}{1}'.format(self.REDIS_GROUP_NAME_PREFIX, self.id)
E       AttributeError: 'Group' object has no attribute 'id'

rq/group.py:23: AttributeError
____________________ TestGroup.test_group_added_to_registry ____________________

self = <tests.test_group.TestGroup testMethod=test_group_added_to_registry>

    def test_group_added_to_registry(self):
        q = Queue(connection=self.testconn)
>       group = Group.create(connection=self.testconn)

tests/test_group.py:81: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

cls = <class 'rq.group.Group'>
connection = Redis<ConnectionPool<Connection<host=localhost,port=6379,db=4>>>
id = None

    @classmethod
    def create(cls, connection: Redis, id: Optional[str] = None):
>       return cls(id=id, connection=connection)
E       TypeError: Group.__init__() got an unexpected keyword argument 'id'

rq/group.py:73: TypeError
____________________ TestGroup.test_group_id_added_to_jobs _____________________

self = <tests.test_group.TestGroup testMethod=test_group_id_added_to_jobs>

    def test_group_id_added_to_jobs(self):
        q = Queue(connection=self.testconn)
>       group = Group.create(connection=self.testconn)

tests/test_group.py:62: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

cls = <class 'rq.group.Group'>
connection = Redis<ConnectionPool<Connection<host=localhost,port=6379,db=4>>>
id = None

    @classmethod
    def create(cls, connection: Redis, id: Optional[str] = None):
>       return cls(id=id, connection=connection)
E       TypeError: Group.__init__() got an unexpected keyword argument 'id'

rq/group.py:73: TypeError
__________________________ TestGroup.test_group_jobs ___________________________

self = <tests.test_group.TestGroup testMethod=test_group_jobs>

    def test_group_jobs(self):
        q = Queue(connection=self.testconn)
>       group = Group.create(connection=self.testconn)

tests/test_group.py:28: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

cls = <class 'rq.group.Group'>
connection = Redis<ConnectionPool<Connection<host=localhost,port=6379,db=4>>>
id = None

    @classmethod
    def create(cls, connection: Redis, id: Optional[str] = None):
>       return cls(id=id, connection=connection)
E       TypeError: Group.__init__() got an unexpected keyword argument 'id'

rq/group.py:73: TypeError
____________________ TestGroup.test_jobs_added_to_group_key ____________________

self = <tests.test_group.TestGroup testMethod=test_jobs_added_to_group_key>

    def test_jobs_added_to_group_key(self):
        q = Queue(connection=self.testconn)
>       group = Group.create(connection=self.testconn)

tests/test_group.py:53: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

cls = <class 'rq.group.Group'>
connection = Redis<ConnectionPool<Connection<host=localhost,port=6379,db=4>>>
id = None

    @classmethod
    def create(cls, connection: Redis, id: Optional[str] = None):
>       return cls(id=id, connection=connection)
E       TypeError: Group.__init__() got an unexpected keyword argument 'id'

rq/group.py:73: TypeError
=============================== warnings summary ===============================
rq/connections.py:35: 1 warning
tests/test_cli.py: 31 warnings
tests/test_connection.py: 3 warnings
  /home/runner/work/rq/rq/rq/connections.py:35: DeprecationWarning: The Connection context manager is deprecated. Use the `connection` parameter instead.
    warnings.warn(

rq/connections.py:58: 1 warning
tests/test_callbacks.py: 12 warnings
tests/test_cli.py: 33 warnings
tests/test_commands.py: 1 warning
tests/test_connection.py: 4 warnings
tests/test_decorator.py: 1 warning
tests/test_dependencies.py: 18 warnings
tests/test_executions.py: 1 warning
tests/test_fixtures.py: 1 warning
tests/test_group.py: 1 warning
tests/test_helpers.py: 1 warning
tests/test_job.py: 1 warning
tests/test_maintenance.py: 1 warning
tests/test_queue.py: 2 warnings
tests/test_registry.py: 8 warnings
tests/test_results.py: 1 warning
tests/test_retry.py: 1 warning
tests/test_scheduler.py: 4 warnings
tests/test_sentry.py: 2 warnings
tests/test_timeouts.py: 4 warnings
tests/test_utils.py: 1 warning
tests/test_worker.py: 13 warnings
tests/test_worker_registration.py: 1 warning
  /home/runner/work/rq/rq/rq/connections.py:58: DeprecationWarning: The `push_connection` function is deprecated. Pass the `connection` explicitly instead.
    warnings.warn(

rq/connections.py:72: 1 warning
tests/test_callbacks.py: 12 warnings
tests/test_cli.py: 33 warnings
tests/test_commands.py: 1 warning
tests/test_connection.py: 4 warnings
tests/test_decorator.py: 1 warning
tests/test_dependencies.py: 18 warnings
tests/test_executions.py: 1 warning
tests/test_fixtures.py: 1 warning
tests/test_group.py: 1 warning
tests/test_helpers.py: 1 warning
tests/test_job.py: 1 warning
tests/test_maintenance.py: 1 warning
tests/test_queue.py: 2 warnings
tests/test_registry.py: 8 warnings
tests/test_results.py: 1 warning
tests/test_retry.py: 1 warning
tests/test_scheduler.py: 4 warnings
tests/test_sentry.py: 2 warnings
tests/test_timeouts.py: 4 warnings
tests/test_utils.py: 1 warning
tests/test_worker.py: 13 warnings
tests/test_worker_registration.py: 1 warning
  /home/runner/work/rq/rq/rq/connections.py:72: DeprecationWarning: The `pop_connection` function is deprecated. Pass the `connection` explicitly instead.
    warnings.warn(

tests/test_group.py:87
  /home/runner/work/rq/rq/tests/test_group.py:87: PytestUnknownMarkWarning: Unknown pytest.mark.slow - is this a typo?  You can register custom marks to avoid this warning - for details, see https://docs.pytest.org/en/stable/how-to/mark.html
    @pytest.mark.slow

tests/test_group.py:101
  /home/runner/work/rq/rq/tests/test_group.py:101: PytestUnknownMarkWarning: Unknown pytest.mark.slow - is this a typo?  You can register custom marks to avoid this warning - for details, see https://docs.pytest.org/en/stable/how-to/mark.html
    @pytest.mark.slow

tests/test_group.py:114
  /home/runner/work/rq/rq/tests/test_group.py:114: PytestUnknownMarkWarning: Unknown pytest.mark.slow - is this a typo?  You can register custom marks to avoid this warning - for details, see https://docs.pytest.org/en/stable/how-to/mark.html
    @pytest.mark.slow

tests/__init__.py:34
  /home/runner/work/rq/rq/tests/__init__.py:34: PytestUnknownMarkWarning: Unknown pytest.mark.ssl_test - is this a typo?  You can register custom marks to avoid this warning - for details, see https://docs.pytest.org/en/stable/how-to/mark.html
    f = pytest.mark.ssl_test(f)

tests/__init__.py:29
  /home/runner/work/rq/rq/tests/__init__.py:29: PytestUnknownMarkWarning: Unknown pytest.mark.slow - is this a typo?  You can register custom marks to avoid this warning - for details, see https://docs.pytest.org/en/stable/how-to/mark.html
    f = pytest.mark.slow(f)

tests/test_callbacks.py: 12 warnings
tests/test_decorator.py: 1 warning
  /home/runner/work/rq/rq/rq/job.py:260: DeprecationWarning: Passing a string or function for `on_success` is deprecated, pass `Callback` instead
    warnings.warn(

tests/test_callbacks.py: 7 warnings
tests/test_decorator.py: 3 warnings
tests/test_job.py: 1 warning
  /home/runner/work/rq/rq/rq/job.py:270: DeprecationWarning: Passing a string or function for `on_failure` is deprecated, pass `Callback` instead
    warnings.warn(

tests/test_callbacks.py::QueueCallbackTestCase::test_enqueue_many_callback
tests/test_callbacks.py::QueueCallbackTestCase::test_enqueue_with_stopped_callback
tests/test_callbacks.py::QueueCallbackTestCase::test_enqueue_with_stopped_callback
tests/test_callbacks.py::QueueCallbackTestCase::test_enqueue_with_stopped_callback
tests/test_callbacks.py::SyncJobCallback::test_stopped_callback
tests/test_callbacks.py::JobCallbackTestCase::test_job_creation_with_stopped_callback
tests/test_job.py::TestJob::test_persistence_of_callbacks
  /home/runner/work/rq/rq/rq/job.py:280: DeprecationWarning: Passing a string or function for `on_stopped` is deprecated, pass `Callback` instead
    warnings.warn(

tests/test_callbacks.py: 11 warnings
tests/test_cli.py: 82 warnings
tests/test_connection.py: 4 warnings
tests/test_decorator.py: 25 warnings
tests/test_dependencies.py: 5 warnings
tests/test_job.py: 107 warnings
tests/test_queue.py: 82 warnings
tests/test_registry.py: 2 warnings
tests/test_retry.py: 2 warnings
tests/test_worker.py: 164 warnings
tests/test_worker_registration.py: 7 warnings
  /home/runner/work/rq/rq/rq/connections.py:108: DeprecationWarning: The `resolve_connection` function is deprecated. Pass the `connection` explicitly instead.
    warnings.warn(

tests/test_callbacks.py: 14 warnings
tests/test_cli.py: 93 warnings
tests/test_connection.py: 4 warnings
tests/test_decorator.py: 25 warnings
tests/test_dependencies.py: 8 warnings
tests/test_fixtures.py: 1 warning
tests/test_job.py: 118 warnings
tests/test_queue.py: 83 warnings
tests/test_registry.py: 9 warnings
tests/test_results.py: 4 warnings
tests/test_retry.py: 3 warnings
tests/test_worker.py: 263 warnings
tests/test_worker_registration.py: 53 warnings
  /home/runner/work/rq/rq/rq/connections.py:87: DeprecationWarning: The `get_current_connection` function is deprecated. Pass the `connection` explicitly instead.
    warnings.warn(

tests/test_callbacks.py: 2 warnings
tests/test_cli.py: 3 warnings
tests/test_dependencies.py: 1 warning
tests/test_job.py: 6 warnings
tests/test_results.py: 2 warnings
tests/test_worker.py: 13 warnings
  /home/runner/work/rq/rq/rq/job.py:874: DeprecationWarning: job.result is deprecated, use job.return_value instead.
    warnings.warn("job.result is deprecated, use job.return_value instead.", DeprecationWarning)

tests/test_callbacks.py: 2 warnings
tests/test_job.py: 3 warnings
tests/test_registry.py: 1 warning
tests/test_results.py: 2 warnings
tests/test_timeouts.py: 1 warning
tests/test_worker.py: 5 warnings
  /home/runner/work/rq/rq/rq/job.py:810: DeprecationWarning: job.exc_info is deprecated, use job.latest_result() instead.
    warnings.warn("job.exc_info is deprecated, use job.latest_result() instead.", DeprecationWarning)

-- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html

---------- coverage: platform linux, python 3.11.7-final-0 -----------
Coverage XML written to file coverage.xml

============================= slowest 5 durations ==============================
66.12s call     tests/test_worker.py::WorkerShutdownTestCase::test_work_horse_force_death
30.27s call     tests/test_worker.py::TestWorker::test_dequeue_round_robin
30.27s call     tests/test_worker.py::TestRandomWorker::test_random_worker
30.27s call     tests/test_worker.py::TestRoundRobinWorker::test_round_robin
30.27s call     tests/test_worker.py::TestWorker::test_dequeue_random_strategy
=========================== short test summary info ============================
FAILED tests/test_group.py::TestGroup::test_add_jobs - TypeError: Group.__init__() got an unexpected keyword argument 'id'
FAILED tests/test_group.py::TestGroup::test_all_returns_all_groups - TypeError: Group.create() got an unexpected keyword argument 'name'
FAILED tests/test_group.py::TestGroup::test_create_group - TypeError: Group.__init__() got an unexpected keyword argument 'id'
FAILED tests/test_group.py::TestGroup::test_deleted_jobs_removed_from_group - TypeError: Group.__init__() got an unexpected keyword argument 'id'
FAILED tests/test_group.py::TestGroup::test_empty_group_removed_from_group_list - TypeError: Group.__init__() got an unexpected keyword argument 'id'
FAILED tests/test_group.py::TestGroup::test_expired_jobs_removed_from_group - TypeError: Group.__init__() got an unexpected keyword argument 'id'
FAILED tests/test_group.py::TestGroup::test_fetch_expired_group_raises_error - TypeError: Group.__init__() got an unexpected keyword argument 'id'
FAILED tests/test_group.py::TestGroup::test_fetch_group - TypeError: Group.__init__() got an unexpected keyword argument 'id'
FAILED tests/test_group.py::TestGroup::test_get_group_key - AttributeError: 'Group' object has no attribute 'id'
FAILED tests/test_group.py::TestGroup::test_group_added_to_registry - TypeError: Group.__init__() got an unexpected keyword argument 'id'
FAILED tests/test_group.py::TestGroup::test_group_id_added_to_jobs - TypeError: Group.__init__() got an unexpected keyword argument 'id'
FAILED tests/test_group.py::TestGroup::test_group_jobs - TypeError: Group.__init__() got an unexpected keyword argument 'id'
FAILED tests/test_group.py::TestGroup::test_jobs_added_to_group_key - TypeError: Group.__init__() got an unexpected keyword argument 'id'
===== 13 failed, 409 passed, 6 skipped, 1507 warnings in 414.22s (0:06:54) =====
##[error]Process completed with exit code 1.


Changed files:
rq/group.py
tests/test_group.py

Fix diff:
diff --git a/rq/group.py b/rq/group.py
index 3da974e..b1894db 100644
--- a/rq/group.py
+++ b/rq/group.py
@@ -20,16 +20,16 @@ class Group:
     def __init__(self, connection: Redis, name: str = None):
         self.name = name if name else str(uuid4())
         self.connection = connection
-        self.key = '{0}{1}'.format(self.REDIS_GROUP_NAME_PREFIX, self.id)
+        self.key = '{0}{1}'.format(self.REDIS_GROUP_NAME_PREFIX, self.name)
 
     def __repr__(self):
-        return "Group(id={})".format(self.id)
+        return "Group(id={})".format(self.name)
 
     def _add_jobs(self, jobs: List[Job], pipeline: Pipeline):
         """Add jobs to the group"""
         pipe = pipeline if pipeline else self.connection.pipeline()
         pipe.sadd(self.key, *[job.id for job in jobs])
-        pipe.sadd(self.REDIS_GROUP_KEY, self.id)
+        pipe.sadd(self.REDIS_GROUP_KEY, self.name)
         if pipeline is None:
             pipe.execute()
 
@@ -37,14 +37,14 @@ class Group:
         """Delete jobs from the group's job registry that have been deleted or expired from Redis.
         We assume while running this that alive jobs have all been fetched from Redis in fetch_jobs method"""
         pipe = pipeline if pipeline else self.connection.pipeline()
-        Group.cleanup_group(self.id, self.connection, pipeline=pipe)
+        Group.cleanup_group(self.name, self.connection, pipeline=pipe)
         if pipeline is None:
             pipe.execute()
 
     def enqueue_many(self, queue: Queue, job_datas: List['EnqueueData'], pipeline: Optional['Pipeline'] = None):
         pipe = pipeline if pipeline else self.connection.pipeline()
 
-        jobs = queue.enqueue_many(job_datas, group_id=self.id, pipeline=pipe)
+        jobs = queue.enqueue_many(job_datas, group_id=self.name, pipeline=pipe)
 
         self._add_jobs(jobs, pipeline=pipe)
 
@@ -69,21 +69,21 @@ class Group:
             pipe.execute()
 
     @classmethod
-    def create(cls, connection: Redis, id: Optional[str] = None):
-        return cls(id=id, connection=connection)
+    def create(cls, connection: Redis, name: Optional[str] = None):
+        return cls(name=name, connection=connection)
 
     @classmethod
-    def fetch(cls, id: str, connection: Redis):
+    def fetch(cls, name: str, connection: Redis):
         """Fetch an existing group from Redis"""
-        group = cls(id=id, connection=connection)
-        if not connection.exists(Group.get_key(group.id)):
+        group = cls(name=name, connection=connection)
+        if not connection.exists(Group.get_key(group.name)):
             raise NoSuchGroupError
         return group
 
     @classmethod
-    def cleanup_group(cls, id: str, connection: Redis, pipeline: Optional['Pipeline'] = None):
+    def cleanup_group(cls, name: str, connection: Redis, pipeline: Optional['Pipeline'] = None):
         pipe = pipeline if pipeline else connection.pipeline()
-        key = cls.get_key(id)
+        key = cls.get_key(name)
         job_ids = [as_text(job) for job in list(connection.smembers(key))]
         expired_job_ids = []
         with connection.pipeline() as p:
@@ -107,9 +107,9 @@ class Group:
         return [Group.fetch(key, connection=connection) for key in group_keys]
 
     @classmethod
-    def get_key(cls, id: str) -> str:
+    def get_key(cls, name: str) -> str:
         """Return the Redis key of the set containing a group's jobs"""
-        return cls.REDIS_GROUP_NAME_PREFIX + id
+        return cls.REDIS_GROUP_NAME_PREFIX + name
 
     @classmethod
     def clean_registries(cls, connection: 'Redis'):
@@ -118,6 +118,7 @@ class Group:
         groups = connection.smembers(Group.REDIS_GROUP_KEY)
         for group in groups:
             try:
+                Group.cleanup_group(name=as_text(group), connection=connection)
                 group = Group.fetch(as_text(group), connection)
             except NoSuchGroupError:
                 connection.srem(Group.REDIS_GROUP_KEY, as_text(group))
diff --git a/tests/test_group.py b/tests/test_group.py
index 44f4028..4cdca18 100644
--- a/tests/test_group.py
+++ b/tests/test_group.py
@@ -34,7 +34,7 @@ class TestGroup(RQTestCase):
         q = Queue(connection=self.testconn)
         enqueued_group = Group.create(connection=self.testconn)
         enqueued_group.enqueue_many(q, [self.job_1_data, self.job_2_data])
-        fetched_group = Group.fetch(enqueued_group.id, self.testconn)
+        fetched_group = Group.fetch(enqueued_group.name, self.testconn)
         self.assertCountEqual(enqueued_group.get_jobs(), fetched_group.get_jobs())
         assert len(fetched_group.get_jobs()) == 2
         q.empty()
@@ -45,7 +45,7 @@ class TestGroup(RQTestCase):
         group.enqueue_many(q, [self.job_1_data, self.job_2_data])
         job2 = group.enqueue_many(q, [self.job_1_data, self.job_2_data])[0]
         assert job2 in group.get_jobs()
-        self.assertEqual(job2.group_id, group.id)
+        self.assertEqual(job2.group_id, group.name)
         q.empty()
 
     def test_jobs_added_to_group_key(self):
@@ -61,9 +61,9 @@ class TestGroup(RQTestCase):
         q = Queue(connection=self.testconn)
         group = Group.create(connection=self.testconn)
         jobs = group.enqueue_many(q, [self.job_1_data])
-        assert jobs[0].group_id == group.id
+        assert jobs[0].group_id == group.name
         fetched_job = Job.fetch(jobs[0].id, connection=self.testconn)
-        assert fetched_job.group_id == group.id
+        assert fetched_job.group_id == group.name
 
     def test_deleted_jobs_removed_from_group(self):
         q = Queue(connection=self.testconn)
@@ -81,7 +81,7 @@ class TestGroup(RQTestCase):
         group = Group.create(connection=self.testconn)
         group.enqueue_many(q, [self.job_1_data])
         redis_groups = {as_text(group) for group in self.testconn.smembers("rq:groups")}
-        assert group.id in redis_groups
+        assert group.name in redis_groups
         q.empty()
 
     @pytest.mark.slow
@@ -95,7 +95,7 @@ class TestGroup(RQTestCase):
         sleep(2)
         group.cleanup()
         assert len(group.get_jobs()) == 1
-        assert self.job_1_data in group.get_jobs()
+        assert self.job_1_data.job_id in [job.id for job in group.get_jobs()]
         q.empty()
 
     @pytest.mark.slow
@@ -109,7 +109,7 @@ class TestGroup(RQTestCase):
         sleep(2)
         w.run_maintenance_tasks()
         redis_groups = {as_text(group) for group in self.testconn.smembers("rq:groups")}
-        assert group.id not in redis_groups
+        assert group.name not in redis_groups
 
     @pytest.mark.slow
     def test_fetch_expired_group_raises_error(self):
@@ -120,12 +120,13 @@ class TestGroup(RQTestCase):
         group.enqueue_many(q, [short_lived_job])
         w.work(burst=True, max_jobs=1)
         sleep(2)
-        self.assertRaises(NoSuchGroupError, Group.fetch, group.id, group.connection)
+        w.run_maintenance_tasks()
+        self.assertRaises(NoSuchGroupError, Group.fetch, group.name, group.connection)
         q.empty()
 
     def test_get_group_key(self):
         group = Group(name="foo", connection=self.testconn)
-        self.assertEqual(Group.get_key(group.id), "rq:group:foo")
+        self.assertEqual(Group.get_key(group.name), "rq:group:foo")
 
     def test_all_returns_all_groups(self):
         q = Queue(connection=self.testconn)
@@ -134,5 +135,5 @@ class TestGroup(RQTestCase):
         group1.enqueue_many(q, [self.job_1_data, self.job_2_data])
         all_groups = Group.all(self.testconn)
         assert len(all_groups) == 1
-        assert "group1" in [group.id for group in all_groups]
-        assert "group2" not in [group.id for group in all_groups]
+        assert "group1" in [group.name for group in all_groups]
+        assert "group2" not in [group.name for group in all_groups]