online-judge icon indicating copy to clipboard operation
online-judge copied to clipboard

Pin packaging to 21.*

Open adambenali opened this issue 2 years ago • 2 comments

packaging 22 drops support for LegacyVersion which causes the version matrix page to fail when a language does not have a specified version. The stack trace is:

Traceback (most recent call last):
  File "/venv/lib/python3.10/site-packages/django/core/handlers/exception.py", line 47, in inner
    response = get_response(request)
  File "/venv/lib/python3.10/site-packages/django/core/handlers/base.py", line 181, in _get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
  File "/site/judge/views/status.py", line 98, in version_matrix
    versions.versions = [version.parse(runtime.version) for runtime in versions]
  File "/site/judge/views/status.py", line 98, in <listcomp>
    versions.versions = [version.parse(runtime.version) for runtime in versions]
  File "/venv/lib/python3.10/site-packages/packaging/version.py", line 52, in parse
    return Version(version)
  File "/venv/lib/python3.10/site-packages/packaging/version.py", line 197, in __init__
    raise InvalidVersion(f"Invalid version: '{version}'")
packaging.version.InvalidVersion: Invalid version: ''

Going back to packaging 21.3 fixes the issue.

I suggest to update requirements.txt to have

packaging<22

adambenali avatar Jan 08 '23 15:01 adambenali

Thanks for reporting this. I've pinned packaging to < 22, but will keep this issue open as a reminder to switch off of LegacyVersion.

Xyene avatar Jan 22 '23 23:01 Xyene

I think all languages that do have versions have valid versions that can be parsed. We just need to check languages that don't have versions.

Ninjaclasher avatar Feb 04 '23 19:02 Ninjaclasher