Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

DeprecationWarning: pkg_resources is deprecated as an API #646

Open
Dimasbka opened this issue Sep 24, 2024 · 1 comment
Open

DeprecationWarning: pkg_resources is deprecated as an API #646

Dimasbka opened this issue Sep 24, 2024 · 1 comment

Comments

@Dimasbka
Copy link

Dimasbka commented Sep 24, 2024

Steps to reproduce

create a faust.App instance during testing
for the example, there are only 2 files app.py files with a single topic and an event handler
and a test.py file that calls this handler

#### src/kafka/app.py
import faust

class EngineState(faust.Record):
    state: str

class EngineCommand(faust.Record):
    command: str

app = faust.App( id=GROUP_ID, broker=BROKER, broker_credentials=broker_credentials, topic_disable_leader=True,    autodiscover=('tickseed.src.kafka.handlers',))

changed_topic = app.topic( 'servis-changed', value_type=EngineState, value_serializer='json')

@app.agent(changed_topic)
async def changed_topic_agent(stream: AsyncIterable[Dict]) -> None:
    async for event in stream:
        logger.info(f'Received state engine change message {event}')  # noqa: WPS305
        engine_state: EngineState = EngineState.from_data(event)
        await engine_state_changed(engine_state)

async def engine_state_changed(engine_state: EngineState) -> None: 
    pass
    await save_to_db({'command': 'copy_files_to_s3'})


async def save_to_db(data: dict ) -> None: 
    pass

#### tests/test.py

import pytest
from src.kafka.app import engine_state_changed

@pytest.fixture
def mock_save_to_db():
    with patch('src.kafka.app.save_to_db') as mocked:
        yield mocked

@pytest.mark.anyio
async def test_changed_topic(
    mock_save_to_db,
) -> None:
    response_faust_record = EngineState.from_data({'state': 'file_redy'})
    await engine_state_changed(response_faust_record)
    mock_save_to_db.assert_awaited_once()

Expected behavior

I want to test event handlers from kafka by calling them directly with a prepared dataset while working directly with faust.Record.
and I want to use the test log in the Pipeline.

Actual behavior

Testing works, but I'm getting side effects DeprecationWarning: pkg_resources is deprecated as an API

Full traceback

$ python -Werror -m pytest
================================================================================ test session starts =================================================================================
platform linux -- Python 3.11.10, pytest-8.3.2, pluggy-1.5.0
rootdir: /home/dmitry/
configfile: pytest.ini
plugins: metadata-3.1.1, cov-5.0.0, Faker-25.9.2, anyio-4.4.0, html-4.1.1
collected 44 items / 1 error                                                                                                                                                         

======================================================================================= ERRORS =======================================================================================
    from src.kafka.app import app
src/kafka/app.py:11: in <module>
    app = faust.App(
.venv/lib/python3.11/site-packages/faust/app/base.py:498: in __init__
    self.fixups = self._init_fixups()
.venv/lib/python3.11/site-packages/faust/app/base.py:550: in _init_fixups
    return list(fixups(self))
.venv/lib/python3.11/site-packages/faust/fixups/__init__.py:28: in fixups
    for Fixup in FIXUPS.iterate():
.venv/lib/python3.11/site-packages/mode/utils/imports.py:96: in iterate
    self._maybe_finalize()
.venv/lib/python3.11/site-packages/mode/utils/imports.py:132: in _maybe_finalize
    self._finalize()
.venv/lib/python3.11/site-packages/mode/utils/imports.py:136: in _finalize
    self.aliases.update(dict(load_extension_class_names(namespace)))
.venv/lib/python3.11/site-packages/mode/utils/imports.py:371: in load_extension_class_names
    from pkg_resources import iter_entry_points
.venv/lib/python3.11/site-packages/pkg_resources/__init__.py:111: in <module>
    warnings.warn(
E   DeprecationWarning: pkg_resources is deprecated as an API. See https://setuptools.pypa.io/en/latest/pkg_resources.html
============================================================================== short test summary info ===============================================================================
ERROR tests/test.py - DeprecationWarning: pkg_resources is deprecated as an API. See https://setuptools.pypa.io/en/latest/pkg_resources.html
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! Interrupted: 1 error during collection !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
================================================================================== 1 error in 0.66s ==================================================================================

Versions

  • Python version 3.11
  • Faust version faust-streaming = "^0.11.0"
  • Operating system ubuntu 22.04
  • Kafka version Docker image: [apache/kafka:3.8.0]
  • RocksDB version (if applicable) n/a
@wbarnha
Copy link
Member

wbarnha commented Nov 13, 2024

Hi, this is a known issue in faust-streaming/mode#60 I've been trying to tackle. I've also been taking a break from open-source development, so I'll hopefully get back to this soon.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants