Edgewall Software

Opened 7 years ago

Last modified 7 years ago

#12708 closed defect

Traceback when single file plugin raises VersionConflict — at Version 1

Reported by: Ryan J Ollos Owned by:
Priority: normal Milestone: 1.2.1
Component: general Version:
Severity: normal Keywords:
Cc: Branch:
Release Notes:

VersionConflict exceptions from single file plugins are logged at ERROR level. Previously a traceback would result.

API Changes:
Internal Changes:

Description

A packaged plugin that fails a version requirement such as pkg_resources.require('Trac >= 1.4') results in a log message at ERROR level:

13:40:08 Trac[loader] ERROR: Skipping "tractags = tractags": (version conflict "VersionConflict: (Trac 1.3.2.dev0 (/Users/rjollos/Documents/Workspace/trac-dev/teo-rjollos.git), Requirement.parse('Trac>=1.4'))")

A single file plugin with the same statement results in a traceback:

13:31:06 Trac[loader] ERROR: Failed to load plugin from /Users/rjollos/Documents/Workspace/trac-dev/tracenvs/proj-1.3/plugins/upcomingmilestoneschartmacro.py: 
Traceback (most recent call last):
  File "/Users/rjollos/Documents/Workspace/trac-dev/teo-rjollos.git/trac/loader.py", line 92, in _load_py_files
    module = imp.load_source(plugin_name, plugin_file)
  File "/Users/rjollos/Documents/Workspace/trac-dev/tracenvs/proj-1.3/plugins/upcomingmilestoneschartmacro.py", line 22, in <module>
    pkg_resources.require('Trac >= 1.4')
  File "/Users/rjollos/Documents/Workspace/trac-dev/pve/lib/python2.7/site-packages/pkg_resources/__init__.py", line 968, in require
    needed = self.resolve(parse_requirements(requirements))
  File "/Users/rjollos/Documents/Workspace/trac-dev/pve/lib/python2.7/site-packages/pkg_resources/__init__.py", line 859, in resolve
    raise VersionConflict(dist, req).with_context(dependent_req)
VersionConflict: (Trac 1.3.2.dev0 (/Users/rjollos/Documents/Workspace/trac-dev/teo-rjollos.git), Requirement.parse('Trac>=1.4'))

The proposed changes result in:

13:56:26 Trac[loader] ERROR: Skipping "upcomingmilestoneschartmacro": (version conflict "VersionConflict: (Trac 1.3.2.dev0 (/Users/rjollos/Documents/Workspace/trac-dev/teo-rjollos.git), Requirement.parse('Trac>=1.4'))")

Maybe there are other exceptions that are handled for eggs which should be handled for single file plugins?: tags/trac-1.2/trac/loader.py@:48#L36.

Change History (1)

comment:1 by Ryan J Ollos, 7 years ago

Release Notes: modified (diff)

Lightly tested changes: log:rjollos.git:t12708_versionconflict_singlefile_plugin. I'll do more investigation before committing, and perhaps also trap ImportErrors.

Note: See TracTickets for help on using tickets.