#11982 closed enhancement (fixed)
Remove dependency on ConfigObj
| Reported by: | Ryan J Ollos | Owned by: | Ryan J Ollos |
|---|---|---|---|
| Priority: | normal | Milestone: | 1.1.5 |
| Component: | general | Version: | |
| Severity: | normal | Keywords: | authzpolicy configobj config |
| Cc: | Branch: | ||
| Release Notes: |
Removed dependency on |
||
| API Changes: |
Added |
||
| Internal Changes: | |||
Description
It seems like the dependency on ConfigObj in tracopt.perm.authz_policy may be unnecessary. After extracting a class from the trac.config module that provides a thin wrapper over ConfigParser, we can use that class instead of ConfigObj.
Attachments (0)
Change History (11)
comment:1 by , 11 years ago
| Milestone: | next-dev-1.1.x → 1.1.5 |
|---|---|
| Owner: | set to |
| Status: | new → assigned |
comment:2 by , 11 years ago
Revised changes in log:rjollos.git:t11982-remove-configobj.1. Tested so far on Mac OSX with Python 2.6 and Python 2.7.
comment:3 by , 11 years ago
| API Changes: | modified (diff) |
|---|---|
| Release Notes: | modified (diff) |
| Resolution: | → fixed |
| Status: | assigned → closed |
Tested also with Python 2.6 and 2.7 on Windows 7. Committed to trunk in [13993:13995]. More work on config module is forthcoming in #6551, and yet-to-be-created tickets.
I'll update the 1.1 documentation soon to remove ConfigObj from the optional dependencies.
comment:4 by , 11 years ago
I started to confirm [13393:13995]. At least, I think we should move the following try...except ImportError:... statements in trac/config.py to trac/util/compat.py like cleandoc() in trac-1.0.5.
29 try: 30 from collections import OrderedDict 31 except ImportError: 32 from trac.util.compat import OrderedDict
After moving that, we could simply replace with:
from trac.util.compat import OrderedDict
comment:5 by , 11 years ago
Thanks, I modified the imports and removed some Python 2.7 compatibility code in the OrderedDict class in [13996].
Documentation edited in:
comment:6 by , 11 years ago
comment:8 by , 10 years ago
Additional refactoring committed in [14130]: localizes utf-8 encoding / decoding to the UnicodeConfigParser class and removes ConfigurationStub.
comment:9 by , 10 years ago
Additional refactoring is proposed in log:rjollos.git:t11982_refactoring_configuration. The aim is to avoid directly accessing UnicodeConfigParser._sections, not just because it is bad practice to access a protected attribute, but because the contents of _sections is utf-8 encoded and the content is decoded to unicode through the public interface of UnicodeConfigParser. All of the config module code works with unicode strings, except UnicodeConfigParser which serves as the boundary for encoding/decoding.
comment:11 by , 9 years ago
These changes introduced a regression described in comment:8:ticket:12649.



Proposed changes in log:rjollos.git:t11982-remove-configobj:
ConfigParserdoesn't throw an exception due to duplicate sections or options.ComponentManagerorOptionclasses. The class with knowledge ofComponentManagerandOptionwould utilize this extracted class to read and write the environment configuration. The extracted class could be utilized by theauthz_policymodule so that we have the capability to write authz files as well as read them.