SmileyChris / easy-thumbnails

Easy thumbnails for Django
http://easy-thumbnails.readthedocs.org/
BSD 3-Clause "New" or "Revised" License
1.38k stars 318 forks source link

pytest failing #581

Closed Mogost closed 2 years ago

Mogost commented 2 years ago

After upgrading to version 2.8, I have tests crashing in my project, with very unusual exceptions that do not directly refer to easy_thumbnail. But I'm pretty sure it's due to the addition of these strings:

https://github.com/SmileyChris/easy-thumbnails/blob/aaf7695ea9ccb4a65283b9b17c29d7aead2299e9/easy_thumbnails/conf.py#L23-L26

(I tried to comment out these lines and the tests passed)

I don't think that trace will help anything.

Traceback (most recent call last):
  File "/Applications/PyCharm.app/Contents/plugins/python/helpers/pycharm/_jb_pytest_runner.py", line 51, in <module>
    sys.exit(pytest.main(args, plugins_to_load + [Plugin]))
  File "/Users/user/.pyenv/versions/proj/lib/python3.8/site-packages/_pytest/config/__init__.py", line 143, in main
    config = _prepareconfig(args, plugins)
  File "/Users/user/.pyenv/versions/proj/lib/python3.8/site-packages/_pytest/config/__init__.py", line 318, in _prepareconfig
    config = pluginmanager.hook.pytest_cmdline_parse(
  File "/Users/user/.pyenv/versions/proj/lib/python3.8/site-packages/pluggy/_hooks.py", line 265, in __call__
    return self._hookexec(self.name, self.get_hookimpls(), kwargs, firstresult)
  File "/Users/user/.pyenv/versions/proj/lib/python3.8/site-packages/pluggy/_manager.py", line 80, in _hookexec
    return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
  File "/Users/user/.pyenv/versions/proj/lib/python3.8/site-packages/pluggy/_callers.py", line 55, in _multicall
    gen.send(outcome)
  File "/Users/user/.pyenv/versions/proj/lib/python3.8/site-packages/_pytest/helpconfig.py", line 100, in pytest_cmdline_parse
    config: Config = outcome.get_result()
  File "/Users/user/.pyenv/versions/proj/lib/python3.8/site-packages/pluggy/_result.py", line 60, in get_result
    raise ex[1].with_traceback(ex[2])
  File "/Users/user/.pyenv/versions/proj/lib/python3.8/site-packages/pluggy/_callers.py", line 39, in _multicall
    res = hook_impl.function(*args)
  File "/Users/user/.pyenv/versions/proj/lib/python3.8/site-packages/_pytest/config/__init__.py", line 1003, in pytest_cmdline_parse
    self.parse(args)
  File "/Users/user/.pyenv/versions/proj/lib/python3.8/site-packages/_pytest/config/__init__.py", line 1283, in parse
    self._preparse(args, addopts=addopts)
  File "/Users/user/.pyenv/versions/proj/lib/python3.8/site-packages/_pytest/config/__init__.py", line 1191, in _preparse
    self.hook.pytest_load_initial_conftests(
  File "/Users/user/.pyenv/versions/proj/lib/python3.8/site-packages/pluggy/_hooks.py", line 265, in __call__
    return self._hookexec(self.name, self.get_hookimpls(), kwargs, firstresult)
  File "/Users/user/.pyenv/versions/proj/lib/python3.8/site-packages/pluggy/_manager.py", line 80, in _hookexec
    return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
  File "/Users/user/.pyenv/versions/proj/lib/python3.8/site-packages/pluggy/_callers.py", line 60, in _multicall
    return outcome.get_result()
  File "/Users/user/.pyenv/versions/proj/lib/python3.8/site-packages/pluggy/_result.py", line 60, in get_result
    raise ex[1].with_traceback(ex[2])
  File "/Users/user/.pyenv/versions/proj/lib/python3.8/site-packages/pluggy/_callers.py", line 39, in _multicall
    res = hook_impl.function(*args)
  File "/Users/user/.pyenv/versions/proj/lib/python3.8/site-packages/pytest_django/plugin.py", line 349, in pytest_load_initial_conftests
    _setup_django()
  File "/Users/user/.pyenv/versions/proj/lib/python3.8/site-packages/pytest_django/plugin.py", line 235, in _setup_django
    django.setup()
  File "/Users/user/.pyenv/versions/proj/lib/python3.8/site-packages/django/__init__.py", line 24, in setup
    apps.populate(settings.INSTALLED_APPS)
  File "/Users/user/.pyenv/versions/proj/lib/python3.8/site-packages/django/apps/registry.py", line 122, in populate
    app_config.ready()
  File "/Users/user/.pyenv/versions/proj/lib/python3.8/site-packages/aldjemy/apps.py", line 13, in ready
    for model, sa_model in construct_models(MetaData()).items():
  File "/Users/user/.pyenv/versions/proj/lib/python3.8/site-packages/aldjemy/orm.py", line 163, in construct_models
    attrs = _extract_model_attrs(metadata, model, sa_models)
  File "/Users/user/.pyenv/versions/proj/lib/python3.8/site-packages/aldjemy/orm.py", line 103, in _extract_model_attrs
    if fk.model() != model:
  File "/Users/user/work/pojdir/proj/common/tracker.py", line 11, in __init__
    super().__init__(*args, **kwargs)
  File "/Users/user/.pyenv/versions/proj/lib/python3.8/site-packages/django/db/models/base.py", line 477, in __init__
    val = field.get_default()
  File "/Users/user/.pyenv/versions/proj/lib/python3.8/site-packages/django/db/models/fields/__init__.py", line 850, in get_default
    return self._get_default()
  File "/Users/user/work/pojdir/proj/users/models.py", line 273, in get_default_praises_budget
    return config.MONTHLY_PRAISES_LIMIT
  File "/Users/user/.pyenv/versions/proj/lib/python3.8/site-packages/django/utils/functional.py", line 247, in inner
    return func(self._wrapped, *args)
  File "/Users/user/.pyenv/versions/proj/lib/python3.8/site-packages/constance/base.py", line 19, in __getattr__
    result = self._backend.get(key)
  File "/Users/user/.pyenv/versions/proj/lib/python3.8/site-packages/constance/backends/database/__init__.py", line 80, in get
    value = self._model._default_manager.get(key=key).value
  File "/Users/user/.pyenv/versions/proj/lib/python3.8/site-packages/django/db/models/manager.py", line 85, in manager_method
    return getattr(self.get_queryset(), name)(*args, **kwargs)
  File "/Users/user/.pyenv/versions/proj/lib/python3.8/site-packages/django/db/models/query.py", line 431, in get
    num = len(clone)
  File "/Users/user/.pyenv/versions/proj/lib/python3.8/site-packages/django/db/models/query.py", line 262, in __len__
    self._fetch_all()
  File "/Users/user/.pyenv/versions/proj/lib/python3.8/site-packages/django/db/models/query.py", line 1324, in _fetch_all
    self._result_cache = list(self._iterable_class(self))
  File "/Users/user/.pyenv/versions/proj/lib/python3.8/site-packages/django/db/models/query.py", line 51, in __iter__
    results = compiler.execute_sql(chunked_fetch=self.chunked_fetch, chunk_size=self.chunk_size)
  File "/Users/user/.pyenv/versions/proj/lib/python3.8/site-packages/django/db/models/sql/compiler.py", line 1173, in execute_sql
    cursor = self.connection.cursor()
  File "/Users/user/.pyenv/versions/proj/lib/python3.8/site-packages/django/utils/asyncio.py", line 33, in inner
    return func(*args, **kwargs)
  File "/Users/user/.pyenv/versions/proj/lib/python3.8/site-packages/django/db/backends/base/base.py", line 259, in cursor
    return self._cursor()
  File "/Users/user/.pyenv/versions/proj/lib/python3.8/site-packages/django/db/backends/base/base.py", line 235, in _cursor
    self.ensure_connection()
  File "/Users/user/.pyenv/versions/proj/lib/python3.8/site-packages/django/utils/asyncio.py", line 33, in inner
    return func(*args, **kwargs)
  File "/Users/user/.pyenv/versions/proj/lib/python3.8/site-packages/django/db/backends/base/base.py", line 219, in ensure_connection
    self.connect()
  File "/Users/user/.pyenv/versions/proj/lib/python3.8/site-packages/django/utils/asyncio.py", line 33, in inner
    return func(*args, **kwargs)
  File "/Users/user/.pyenv/versions/proj/lib/python3.8/site-packages/django/db/backends/base/base.py", line 203, in connect
    connection_created.send(sender=self.__class__, connection=self)
  File "/Users/user/.pyenv/versions/proj/lib/python3.8/site-packages/django/dispatch/dispatcher.py", line 180, in send
    return [
  File "/Users/user/.pyenv/versions/proj/lib/python3.8/site-packages/django/dispatch/dispatcher.py", line 181, in <listcomp>
    (receiver, receiver(signal=self, sender=sender, **named))
  File "/Users/user/.pyenv/versions/proj/lib/python3.8/site-packages/aldjemy/orm.py", line 24, in new_session
    get_session(alias=connection.alias, recreate=True)
  File "/Users/user/.pyenv/versions/proj/lib/python3.8/site-packages/aldjemy/orm.py", line 16, in get_session
    engine = get_engine(alias, **kwargs)
  File "/Users/user/.pyenv/versions/proj/lib/python3.8/site-packages/aldjemy/core.py", line 55, in get_engine
    get_connection_string(alias), pool=pool, **kwargs
  File "/Users/user/.pyenv/versions/proj/lib/python3.8/site-packages/aldjemy/core.py", line 40, in get_connection_string
    engine = SQLALCHEMY_ENGINES[get_engine_string(alias)]
KeyError: 'backend'
Mogost commented 2 years ago

Issue come from https://github.com/SmileyChris/easy-thumbnails/pull/560

jrief commented 2 years ago

This error report does not describe a reproducible set up. -> closing

Mogost commented 2 years ago

@jrief I think you're wrong. There may indeed be no steps to reproduction, but the issue still exists. The project has more than 70 open issues that no one closes and does not react to them in any way. In this case I am focusing on exactly 4 lines of code that cause a crash in code that has been stable for many years.

jrief commented 2 years ago

Then give me a recipe on how to reproduce that crash. There is not even one function in your stack trace, which is part of easy-thumbnails, so why should I dig further into it?