From 2989b4c027b3230b1778e3777d2cce53c89808d9 Mon Sep 17 00:00:00 2001 From: Andrew Shadura Date: Thu, 20 Aug 2015 16:04:48 +0200 Subject: Imported Upstream version 0.1.74+git49a20890 --- reconfigure/__init__.py | 2 +- reconfigure/configs/base.py | 5 ++++- reconfigure/items/group.py | 12 ++++++++++++ reconfigure/items/passwd.py | 12 ++++++++++++ reconfigure/parsers/ini.py | 4 +++- 5 files changed, 32 insertions(+), 3 deletions(-) (limited to 'reconfigure') diff --git a/reconfigure/__init__.py b/reconfigure/__init__.py index 69f79d2..a52a5aa 100644 --- a/reconfigure/__init__.py +++ b/reconfigure/__init__.py @@ -1 +1 @@ -__version__ = "0.1.67" +__version__ = "0.1.74" diff --git a/reconfigure/configs/base.py b/reconfigure/configs/base.py index 5d0bb61..fc2ce6f 100644 --- a/reconfigure/configs/base.py +++ b/reconfigure/configs/base.py @@ -1,4 +1,6 @@ import chardet +import six +import sys class Reconfig (object): @@ -36,7 +38,8 @@ class Reconfig (object): self.content = open(self.origin, 'r').read() self.encoding = 'utf8' - if hasattr(self.content, 'decode'): # str (2) or bytes (3) + if (six.PY3 and isinstance(self.content, bytes)) or \ + (six.PY2 and isinstance(self.content, str)): try: self.content = self.content.decode('utf8') except (UnicodeDecodeError, AttributeError): diff --git a/reconfigure/items/group.py b/reconfigure/items/group.py index f95b28a..107bc64 100644 --- a/reconfigure/items/group.py +++ b/reconfigure/items/group.py @@ -1,3 +1,4 @@ +from reconfigure.nodes import Node, PropertyNode from reconfigure.items.bound import BoundData @@ -8,6 +9,17 @@ class GroupsData (BoundData): class GroupData (BoundData): fields = ['name', 'password', 'gid', 'users'] + def template(self): + return Node( + 'line', + *[ + Node('token', children=[ + PropertyNode('value', '') + ]) + for x in GroupData.fields + ] + ) + GroupsData.bind_collection('groups', item_class=GroupData) for i in range(0, len(GroupData.fields)): diff --git a/reconfigure/items/passwd.py b/reconfigure/items/passwd.py index 147bc8a..6943300 100644 --- a/reconfigure/items/passwd.py +++ b/reconfigure/items/passwd.py @@ -1,3 +1,4 @@ +from reconfigure.nodes import Node, PropertyNode from reconfigure.items.bound import BoundData @@ -8,6 +9,17 @@ class PasswdData (BoundData): class UserData (BoundData): fields = ['name', 'password', 'uid', 'gid', 'comment', 'home', 'shell'] + def template(self): + return Node( + 'line', + *[ + Node('token', children=[ + PropertyNode('value', '') + ]) + for x in UserData.fields + ] + ) + PasswdData.bind_collection('users', item_class=UserData) for i in range(0, len(UserData.fields)): diff --git a/reconfigure/parsers/ini.py b/reconfigure/parsers/ini.py index 2f3b82e..2f95d33 100644 --- a/reconfigure/parsers/ini.py +++ b/reconfigure/parsers/ini.py @@ -1,3 +1,5 @@ +import six + from reconfigure.nodes import * from reconfigure.parsers import BaseParser from reconfigure.parsers.iniparse import INIConfig @@ -67,7 +69,7 @@ class IniFileParser (BaseParser): if hasattr(cp[sectionname], '_lines'): self._set_comment(cp[sectionname]._lines[0], section.comment) - data = str(cp) + '\n' + data = (str if six.PY3 else unicode)(cp) + u'\n' if self.sectionless: data = data.replace('[' + self.nullsection + ']\n', '') return data -- cgit v1.2.3