Edgewall Software

Opened 8 years ago

Last modified 11 months ago

#11538 closed defect

Duplicate options are allowed in sections of trac.ini — at Version 1

Reported by: Ryan J Ollos Owned by:
Priority: normal Milestone: 1.5.3
Component: general Version:
Severity: normal Keywords: config python3
Cc: Branch:
Release Notes:
API Changes:
Internal Changes:

Description (last modified by Ryan J Ollos)

The sections of trac.ini allow duplicate options, with later values overwriting those that come first. Two patterns that could lead to confusing behavior when the user doesn't realize that the option's value is being changed later in the file are:

  1. Duplicate sections with the same option.
    [trac]
    default_handler = WikiModule
    
    ...
    
    [trac]
    default_handler = TicketModule
    
  2. Duplicate options within a section.
    [trac]
    default_handler = WikiModule
    
    ...
    
    default_handler = TicketModule
    

While Python 3.x has a much improved configparser module with a strict mode that raises an error when an option appears more than once, I'm not sure there is much we can do in Python 2.x using ConfigParser.

SO:5396653 suggests using a dict_type that allows multiple values with the same key, however dict_type is only supported in Python 2.6, so we wouldn't be able to apply as dict_type-based fix to 1.0-stable.

Change History (1)

comment:1 by Ryan J Ollos, 8 years ago

Description: modified (diff)
Note: See TracTickets for help on using tickets.