Page Menu
Home
Solus
Search
Configure Global Search
Log In
Files
F11032775
D1909.id4806.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Flag For Later
Size
27 KB
Referenced Files
None
Subscribers
None
D1909.id4806.diff
View Options
diff --git a/Makefile b/Makefile
new file mode 100644
--- /dev/null
+++ b/Makefile
@@ -0,0 +1 @@
+include ../Makefile.common
diff --git a/files/0001-Fix-handling-of-REM-xxxxxxxx-as-a-comment-but-REMXXX.patch b/files/0001-Fix-handling-of-REM-xxxxxxxx-as-a-comment-but-REMXXX.patch
new file mode 100644
--- /dev/null
+++ b/files/0001-Fix-handling-of-REM-xxxxxxxx-as-a-comment-but-REMXXX.patch
@@ -0,0 +1,27 @@
+From 0a51771cd9fc3cb3d8688fa25f536a1d604678bd Mon Sep 17 00:00:00 2001
+From: Tim Lauridsen <timlau@fedoraproject.org>
+Date: Fri, 7 Mar 2014 19:06:40 +0100
+Subject: [PATCH 1/3] Fix handling of REM xxxxxxxx as a comment, but REMXXXX is
+ not (upstream issue #28)
+
+---
+ tests/test_ini.py | 3 +--
+ 1 file changed, 1 insertion(+), 2 deletions(-)
+
+diff --git a/tests/test_ini.py b/tests/test_ini.py
+index 6a76edb..78b2b3c 100644
+--- a/tests/test_ini.py
++++ b/tests/test_ini.py
+@@ -144,8 +144,7 @@ class test_comment_line(unittest.TestCase):
+ '#this is a comment',
+ ';; this is also a comment',
+ '; so is this ',
+- 'Rem and this',
+- 'remthis too!'
++ 'Rem and this'
+ ]
+ def test_parsing(self):
+ for l in self.lines:
+--
+2.15.1
+
diff --git a/files/0002-Python-3-compatibility.patch b/files/0002-Python-3-compatibility.patch
new file mode 100644
--- /dev/null
+++ b/files/0002-Python-3-compatibility.patch
@@ -0,0 +1,547 @@
+From 41535e2dd3eb66c65c2cfdb8cbc5111a177ce51a Mon Sep 17 00:00:00 2001
+From: Tim Lauridsen <timlau@fedoraproject.org>
+Date: Wed, 2 Oct 2013 19:21:34 +0200
+Subject: [PATCH 2/3] Python 3 compatibility
+
+---
+ iniparse/__init__.py | 20 ++++++++++----------
+ iniparse/compat.py | 30 ++++++++++++++++--------------
+ iniparse/config.py | 16 ++++++++--------
+ iniparse/configparser.py | 7 +++++++
+ iniparse/ini.py | 20 ++++++++++++--------
+ iniparse/utils.py | 4 ++--
+ tests/__init__.py | 14 +++++++-------
+ tests/test_compat.py | 23 +++++++++++++++--------
+ tests/test_fuzz.py | 18 +++++++++---------
+ tests/test_ini.py | 8 ++++----
+ tests/test_misc.py | 4 ++--
+ tests/test_tidy.py | 2 +-
+ tests/test_unicode.py | 10 +++++-----
+ 13 files changed, 98 insertions(+), 78 deletions(-)
+ create mode 100644 iniparse/configparser.py
+
+diff --git a/iniparse/__init__.py b/iniparse/__init__.py
+index 8de756f..7193f92 100644
+--- a/iniparse/__init__.py
++++ b/iniparse/__init__.py
+@@ -3,17 +3,17 @@
+ # Copyright (c) 2007 Tim Lauridsen <tla@rasmil.dk>
+ # All Rights Reserved. See LICENSE-PSF & LICENSE for details.
+
+-from ini import INIConfig, change_comment_syntax
+-from config import BasicConfig, ConfigNamespace
+-from compat import RawConfigParser, ConfigParser, SafeConfigParser
+-from utils import tidy
++from .ini import INIConfig, change_comment_syntax
++from .config import BasicConfig, ConfigNamespace
++from .compat import RawConfigParser, ConfigParser, SafeConfigParser
++from .utils import tidy
+
+-from ConfigParser import DuplicateSectionError, \
+- NoSectionError, NoOptionError, \
+- InterpolationMissingOptionError, \
+- InterpolationDepthError, \
+- InterpolationSyntaxError, \
+- DEFAULTSECT, MAX_INTERPOLATION_DEPTH
++from .configparser import DuplicateSectionError, \
++ NoSectionError, NoOptionError, \
++ InterpolationMissingOptionError, \
++ InterpolationDepthError, \
++ InterpolationSyntaxError, \
++ DEFAULTSECT, MAX_INTERPOLATION_DEPTH
+
+ __all__ = [
+ 'BasicConfig', 'ConfigNamespace',
+diff --git a/iniparse/compat.py b/iniparse/compat.py
+index db89ed8..f95c25c 100644
+--- a/iniparse/compat.py
++++ b/iniparse/compat.py
+@@ -12,19 +12,21 @@ The underlying INIConfig object can be accessed as cfg.data
+ """
+
+ import re
+-from ConfigParser import DuplicateSectionError, \
+- NoSectionError, NoOptionError, \
+- InterpolationMissingOptionError, \
+- InterpolationDepthError, \
+- InterpolationSyntaxError, \
+- DEFAULTSECT, MAX_INTERPOLATION_DEPTH
++from .configparser import DuplicateSectionError, \
++ NoSectionError, NoOptionError, \
++ InterpolationMissingOptionError, \
++ InterpolationDepthError, \
++ InterpolationSyntaxError, \
++ DEFAULTSECT, MAX_INTERPOLATION_DEPTH
+
+ # These are imported only for compatiability.
+ # The code below does not reference them directly.
+-from ConfigParser import Error, InterpolationError, \
+- MissingSectionHeaderError, ParsingError
++from .configparser import Error, InterpolationError, \
++ MissingSectionHeaderError, ParsingError
+
+-import ini
++import six
++
++from . import ini
+
+ class RawConfigParser(object):
+ def __init__(self, defaults=None, dict_type=dict):
+@@ -56,7 +58,7 @@ class RawConfigParser(object):
+ # The default section is the only one that gets the case-insensitive
+ # treatment - so it is special-cased here.
+ if section.lower() == "default":
+- raise ValueError, 'Invalid section name: %s' % section
++ raise ValueError('Invalid section name: %s' % section)
+
+ if self.has_section(section):
+ raise DuplicateSectionError(section)
+@@ -88,7 +90,7 @@ class RawConfigParser(object):
+ filename may also be given.
+ """
+ files_read = []
+- if isinstance(filenames, basestring):
++ if isinstance(filenames, six.string_types):
+ filenames = [filenames]
+ for filename in filenames:
+ try:
+@@ -143,7 +145,7 @@ class RawConfigParser(object):
+ def getboolean(self, section, option):
+ v = self.get(section, option)
+ if v.lower() not in self._boolean_states:
+- raise ValueError, 'Not a boolean: %s' % v
++ raise ValueError('Not a boolean: %s' % v)
+ return self._boolean_states[v.lower()]
+
+ def has_option(self, section, option):
+@@ -234,7 +236,7 @@ class ConfigParser(RawConfigParser):
+ if "%(" in value:
+ try:
+ value = value % vars
+- except KeyError, e:
++ except KeyError as e:
+ raise InterpolationMissingOptionError(
+ option, section, rawval, e.args[0])
+ else:
+@@ -283,7 +285,7 @@ class SafeConfigParser(ConfigParser):
+ _badpercent_re = re.compile(r"%[^%]|%$")
+
+ def set(self, section, option, value):
+- if not isinstance(value, basestring):
++ if not isinstance(value, six.string_types):
+ raise TypeError("option values must be strings")
+ # check for bad percent signs:
+ # first, replace all "good" interpolations
+diff --git a/iniparse/config.py b/iniparse/config.py
+index 5cfa2ea..3b28549 100644
+--- a/iniparse/config.py
++++ b/iniparse/config.py
+@@ -143,7 +143,7 @@ class BasicConfig(ConfigNamespace):
+
+ >>> n.aaa = 42
+ >>> del n.x
+- >>> print n
++ >>> print(n)
+ aaa = 42
+ name.first = paramjit
+ name.last = oberoi
+@@ -152,7 +152,7 @@ class BasicConfig(ConfigNamespace):
+
+ >>> isinstance(n.name, ConfigNamespace)
+ True
+- >>> print n.name
++ >>> print(n.name)
+ first = paramjit
+ last = oberoi
+ >>> sorted(list(n.name))
+@@ -160,7 +160,7 @@ class BasicConfig(ConfigNamespace):
+
+ Finally, values can be read from a file as follows:
+
+- >>> from StringIO import StringIO
++ >>> from six import StringIO
+ >>> sio = StringIO('''
+ ... # comment
+ ... ui.height = 100
+@@ -171,7 +171,7 @@ class BasicConfig(ConfigNamespace):
+ ... ''')
+ >>> n = BasicConfig()
+ >>> n._readfp(sio)
+- >>> print n
++ >>> print(n)
+ complexity = medium
+ data.secret.password = goodness=gracious me
+ have_python
+@@ -199,7 +199,7 @@ class BasicConfig(ConfigNamespace):
+
+ def __str__(self, prefix=''):
+ lines = []
+- keys = self._data.keys()
++ keys = list(self._data.keys())
+ keys.sort()
+ for name in keys:
+ value = self._data[name]
+@@ -258,7 +258,7 @@ def update_config(target, source):
+ >>> n.ui.display_clock = True
+ >>> n.ui.display_qlength = True
+ >>> n.ui.width = 150
+- >>> print n
++ >>> print(n)
+ playlist.expand_playlist = True
+ ui.display_clock = True
+ ui.display_qlength = True
+@@ -267,7 +267,7 @@ def update_config(target, source):
+ >>> from iniparse import ini
+ >>> i = ini.INIConfig()
+ >>> update_config(i, n)
+- >>> print i
++ >>> print(i)
+ [playlist]
+ expand_playlist = True
+ <BLANKLINE>
+@@ -277,7 +277,7 @@ def update_config(target, source):
+ width = 150
+
+ """
+- for name in source:
++ for name in sorted(source):
+ value = source[name]
+ if isinstance(value, ConfigNamespace):
+ if name in target:
+diff --git a/iniparse/configparser.py b/iniparse/configparser.py
+new file mode 100644
+index 0000000..c543d50
+--- /dev/null
++++ b/iniparse/configparser.py
+@@ -0,0 +1,7 @@
++try:
++ from ConfigParser import *
++ # not all objects get imported with __all__
++ from ConfigParser import Error, InterpolationMissingOptionError
++except ImportError:
++ from configparser import *
++ from configparser import Error, InterpolationMissingOptionError
+diff --git a/iniparse/ini.py b/iniparse/ini.py
+index 408354d..052d9e9 100644
+--- a/iniparse/ini.py
++++ b/iniparse/ini.py
+@@ -7,7 +7,7 @@
+
+ Example:
+
+- >>> from StringIO import StringIO
++ >>> from six import StringIO
+ >>> sio = StringIO('''# configure foo-application
+ ... [foo]
+ ... bar1 = qualia
+@@ -16,14 +16,14 @@ Example:
+ ... special = 1''')
+
+ >>> cfg = INIConfig(sio)
+- >>> print cfg.foo.bar1
++ >>> print(cfg.foo.bar1)
+ qualia
+- >>> print cfg['foo-ext'].special
++ >>> print(cfg['foo-ext'].special)
+ 1
+ >>> cfg.foo.newopt = 'hi!'
+ >>> cfg.baz.enabled = 0
+
+- >>> print cfg
++ >>> print(cfg)
+ # configure foo-application
+ [foo]
+ bar1 = qualia
+@@ -42,9 +42,11 @@ Example:
+ # Backward-compatiable with ConfigParser
+
+ import re
+-from ConfigParser import DEFAULTSECT, ParsingError, MissingSectionHeaderError
++from .configparser import DEFAULTSECT, ParsingError, MissingSectionHeaderError
+
+-import config
++import six
++
++from . import config
+
+ class LineType(object):
+ line = None
+@@ -278,6 +280,8 @@ class LineContainer(object):
+ value = property(get_value, set_value)
+
+ def __str__(self):
++ for c in self.contents:
++ pass#print(c.__str__())
+ s = [x.__str__() for x in self.contents]
+ return '\n'.join(s)
+
+@@ -465,7 +469,7 @@ class INIConfig(config.ConfigNamespace):
+ self._sections = {}
+ if defaults is None: defaults = {}
+ self._defaults = INISection(LineContainer(), optionxformsource=self)
+- for name, value in defaults.iteritems():
++ for name, value in defaults.items():
+ self._defaults[name] = value
+ if fp is not None:
+ self._readfp(fp)
+@@ -551,7 +555,7 @@ class INIConfig(config.ConfigNamespace):
+
+ for line in readline_iterator(fp):
+ # Check for BOM on first line
+- if linecount == 0 and isinstance(line, unicode):
++ if linecount == 0 and isinstance(line, six.text_type):
+ if line[0] == u'\ufeff':
+ line = line[1:]
+ self._bom = True
+diff --git a/iniparse/utils.py b/iniparse/utils.py
+index 829fc28..f8b773a 100644
+--- a/iniparse/utils.py
++++ b/iniparse/utils.py
+@@ -1,5 +1,5 @@
+-import compat
+-from ini import LineContainer, EmptyLine
++from . import compat
++from .ini import LineContainer, EmptyLine
+
+ def tidy(cfg):
+ """Clean up blank lines.
+diff --git a/tests/__init__.py b/tests/__init__.py
+index f1fa321..88689fb 100644
+--- a/tests/__init__.py
++++ b/tests/__init__.py
+@@ -1,12 +1,12 @@
+ import unittest, doctest
+
+-import test_ini
+-import test_misc
+-import test_fuzz
+-import test_compat
+-import test_unicode
+-import test_tidy
+-import test_multiprocessing
++from . import test_ini
++from . import test_misc
++from . import test_fuzz
++from . import test_compat
++from . import test_unicode
++from . import test_tidy
++from . import test_multiprocessing
+ from iniparse import config
+ from iniparse import ini
+
+diff --git a/tests/test_compat.py b/tests/test_compat.py
+index b8da3d5..b6dfb5c 100644
+--- a/tests/test_compat.py
++++ b/tests/test_compat.py
+@@ -1,9 +1,16 @@
+ from iniparse import compat as ConfigParser
+-import StringIO
++from six import StringIO
++try:
++ import UserDict
++except ImportError:
++ import collections as UserDict
+ import unittest
+-import UserDict
+
+-from test import test_support
++import sys
++if sys.version_info[0] < 3:
++ from test import test_support
++else:
++ from test import support as test_support
+
+ class SortedDict(UserDict.UserDict):
+ def items(self):
+@@ -35,7 +42,7 @@ class TestCaseBase(unittest.TestCase):
+
+ def fromstring(self, string, defaults=None):
+ cf = self.newconfig(defaults)
+- sio = StringIO.StringIO(string)
++ sio = StringIO(string)
+ cf.readfp(sio)
+ return cf
+
+@@ -161,7 +168,7 @@ class TestCaseBase(unittest.TestCase):
+ "No Section!\n")
+
+ def parse_error(self, exc, src):
+- sio = StringIO.StringIO(src)
++ sio = StringIO(src)
+ self.assertRaises(exc, self.cf.readfp, sio)
+
+ def test_query_errors(self):
+@@ -181,7 +188,7 @@ class TestCaseBase(unittest.TestCase):
+ def get_error(self, exc, section, option):
+ try:
+ self.cf.get(section, option)
+- except exc, e:
++ except exc as e:
+ return e
+ else:
+ self.fail("expected exception type %s.%s"
+@@ -227,7 +234,7 @@ class TestCaseBase(unittest.TestCase):
+ "foo: another very\n"
+ " long line"
+ )
+- output = StringIO.StringIO()
++ output = StringIO()
+ cf.write(output)
+ self.assertEqual(
+ output.getvalue(),
+@@ -465,7 +472,7 @@ class SortedTestCase(RawConfigParserTestCase):
+ "o1=4\n"
+ "[a]\n"
+ "k=v\n")
+- output = StringIO.StringIO()
++ output = StringIO()
+ self.cf.write(output)
+ self.assertEquals(output.getvalue(),
+ "[a]\n"
+diff --git a/tests/test_fuzz.py b/tests/test_fuzz.py
+index 5420dcc..b219500 100644
+--- a/tests/test_fuzz.py
++++ b/tests/test_fuzz.py
+@@ -1,9 +1,10 @@
+ import re
+ import os
+ import random
++import sys
+ import unittest
+-import ConfigParser
+-from StringIO import StringIO
++from six import StringIO
++from six.moves import configparser
+ from iniparse import compat, ini, tidy
+
+ # TODO:
+@@ -96,24 +97,25 @@ class test_fuzz(unittest.TestCase):
+ s = '\n'.join(good_lines)
+ cc = compat.RawConfigParser()
+ cc.readfp(StringIO(s))
+- cc_py = ConfigParser.RawConfigParser()
++ cc_py = configparser.RawConfigParser()
+ cc_py.readfp(StringIO(s))
+ # compare the two configparsers
+ self.assertEqualConfig(cc_py, cc)
+ # check that tidy does not change semantics
+ tidy(cc)
+- cc_tidy = ConfigParser.RawConfigParser()
++ cc_tidy = configparser.RawConfigParser()
+ cc_tidy.readfp(StringIO(str(cc.data)))
+ self.assertEqualConfig(cc_py, cc_tidy)
+ except AssertionError:
+ fname = 'fuzz-test-iter-%d.ini' % fuzz_iter
+- print 'Fuzz test failed at iteration', fuzz_iter
+- print 'Writing out failing INI file as', fname
++ print('Fuzz test failed at iteration', fuzz_iter)
++ print('Writing out failing INI file as', fname)
+ f = open(fname, 'w')
+ f.write(s)
+ f.close()
+ raise
+
++ @unittest.skipIf(sys.version_info[0] > 2, 'http://code.google.com/p/iniparse/issues/detail?id=22#c9')
+ def assertEqualConfig(self, c1, c2):
+ self.assertEqualSorted(c1.sections(), c2.sections())
+ self.assertEqualSorted(c1.defaults().items(), c2.defaults().items())
+@@ -123,9 +125,7 @@ class test_fuzz(unittest.TestCase):
+ self.assertEqual(c1.get(sec, opt), c2.get(sec, opt))
+
+ def assertEqualSorted(self, l1, l2):
+- l1.sort()
+- l2.sort()
+- self.assertEqual(l1, l2)
++ self.assertEqual(sorted(l1), sorted(l2))
+
+ class suite(unittest.TestSuite):
+ def __init__(self):
+diff --git a/tests/test_ini.py b/tests/test_ini.py
+index 78b2b3c..6d974f0 100644
+--- a/tests/test_ini.py
++++ b/tests/test_ini.py
+@@ -1,5 +1,5 @@
+ import unittest
+-from StringIO import StringIO
++from six import StringIO
+
+ from iniparse import ini
+ from iniparse import compat
+@@ -195,13 +195,13 @@ but = also me
+ self.assertEqual(p._data.find('section2').find('just').value, 'kidding')
+
+ itr = p._data.finditer('section1')
+- v = itr.next()
++ v = next(itr)
+ self.assertEqual(v.find('help').value, 'yourself')
+ self.assertEqual(v.find('but').value, 'also me')
+- v = itr.next()
++ v = next(itr)
+ self.assertEqual(v.find('help').value, 'me')
+ self.assertEqual(v.find('I\'m').value, 'desperate')
+- self.assertRaises(StopIteration, itr.next)
++ self.assertRaises(StopIteration, next, itr)
+
+ self.assertRaises(KeyError, p._data.find, 'section')
+ self.assertRaises(KeyError, p._data.find('section2').find, 'ahem')
+diff --git a/tests/test_misc.py b/tests/test_misc.py
+index 31cf4da..96ef035 100644
+--- a/tests/test_misc.py
++++ b/tests/test_misc.py
+@@ -1,9 +1,9 @@
+ import re
+ import unittest
+ import pickle
+-import ConfigParser
++from six.moves import configparser
++from six import StringIO
+ from textwrap import dedent
+-from StringIO import StringIO
+ from iniparse import compat, ini
+
+ class CaseSensitiveConfigParser(compat.ConfigParser):
+diff --git a/tests/test_tidy.py b/tests/test_tidy.py
+index 7304747..26b6cde 100644
+--- a/tests/test_tidy.py
++++ b/tests/test_tidy.py
+@@ -1,6 +1,6 @@
+ import unittest
+ from textwrap import dedent
+-from StringIO import StringIO
++from six import StringIO
+
+ from iniparse import tidy,INIConfig
+ from iniparse.ini import EmptyLine
+diff --git a/tests/test_unicode.py b/tests/test_unicode.py
+index a56fcab..14d4fbd 100644
+--- a/tests/test_unicode.py
++++ b/tests/test_unicode.py
+@@ -1,5 +1,5 @@
+ import unittest
+-from StringIO import StringIO
++import six
+ from iniparse import compat, ini
+
+ class test_unicode(unittest.TestCase):
+@@ -17,14 +17,14 @@ baz = Marc-Andr\202
+ """
+
+ def basic_tests(self, s, strable):
+- f = StringIO(s)
++ f = six.StringIO(s)
+ i = ini.INIConfig(f)
+- self.assertEqual(unicode(i), s)
+- self.assertEqual(type(i.foo.bar), unicode)
++ self.assertEqual(six.text_type(i), s)
++ self.assertEqual(type(i.foo.bar), six.text_type)
+ if strable:
+ self.assertEqual(str(i), str(s))
+ else:
+- self.assertRaises(UnicodeEncodeError, lambda: str(i))
++ self.assertRaises(UnicodeEncodeError, lambda: six.text_type(i).encode('ascii'))
+ return i
+
+ def test_ascii(self):
+--
+2.15.1
+
diff --git a/files/0003-Update-setup.py-to-use-setuptools.patch b/files/0003-Update-setup.py-to-use-setuptools.patch
new file mode 100644
--- /dev/null
+++ b/files/0003-Update-setup.py-to-use-setuptools.patch
@@ -0,0 +1,61 @@
+From a71f54e19805c167da2cac44fd0eab716f7d300e Mon Sep 17 00:00:00 2001
+From: Neal Gompa <ngompa13@gmail.com>
+Date: Sun, 11 Dec 2016 07:16:28 -0500
+Subject: [PATCH 3/3] Update setup.py to use setuptools
+
+---
+ PKG-INFO | 7 +++++--
+ setup.py | 10 +++++++---
+ 2 files changed, 12 insertions(+), 5 deletions(-)
+
+diff --git a/PKG-INFO b/PKG-INFO
+index 31c4ad2..bebcb80 100644
+--- a/PKG-INFO
++++ b/PKG-INFO
+@@ -18,7 +18,10 @@ Classifier: License :: OSI Approved :: MIT License
+ Classifier: License :: OSI Approved :: Python Software Foundation License
+ Classifier: Operating System :: OS Independent
+ Classifier: Programming Language :: Python
+-Classifier: Programming Language :: Python :: 2.4
+-Classifier: Programming Language :: Python :: 2.5
++Classifier: Programming Language :: Python :: 2
+ Classifier: Programming Language :: Python :: 2.6
++Classifier: Programming Language :: Python :: 2.7
++Classifier: Programming Language :: Python :: 3
++Classifier: Programming Language :: Python :: 3.3
++Classifier: Programming Language :: Python :: 3.4
+ Classifier: Topic :: Software Development :: Libraries :: Python Modules
+diff --git a/setup.py b/setup.py
+index 736cfa1..e2f8de0 100644
+--- a/setup.py
++++ b/setup.py
+@@ -1,6 +1,6 @@
+ #!/usr/bin/env python
+
+-from distutils.core import setup
++from setuptools import setup
+
+ VERSION = '0.4'
+
+@@ -24,12 +24,16 @@ use.''',
+ 'License :: OSI Approved :: Python Software Foundation License',
+ 'Operating System :: OS Independent',
+ 'Programming Language :: Python',
+- 'Programming Language :: Python :: 2.4',
+- 'Programming Language :: Python :: 2.5',
++ 'Programming Language :: Python :: 2'
+ 'Programming Language :: Python :: 2.6',
++ 'Programming Language :: Python :: 2.7',
++ 'Programming Language :: Python :: 3',
++ 'Programming Language :: Python :: 3.3',
++ 'Programming Language :: Python :: 3.4'
+ 'Topic :: Software Development :: Libraries :: Python Modules',
+ ],
+ packages = ['iniparse'],
++ install_requires=['six'],
+ data_files = [
+ ('share/doc/iniparse-%s' % VERSION, ['README', 'LICENSE-PSF',
+ 'LICENSE', 'Changelog',
+--
+2.15.1
+
diff --git a/files/series b/files/series
new file mode 100644
--- /dev/null
+++ b/files/series
@@ -0,0 +1,3 @@
+0001-Fix-handling-of-REM-xxxxxxxx-as-a-comment-but-REMXXX.patch
+0002-Python-3-compatibility.patch
+0003-Update-setup.py-to-use-setuptools.patch
\ No newline at end of file
diff --git a/package.yml b/package.yml
new file mode 100644
--- /dev/null
+++ b/package.yml
@@ -0,0 +1,24 @@
+name : python-iniparse
+version : 0.4
+release : 1
+source :
+ - https://files.pythonhosted.org/packages/source/i/iniparse/iniparse-0.4.tar.gz : abc1ee12d2cfb2506109072d6c21e40b6c75a3fe90a9c924327d80bc0d99c054
+license : MIT
+component : programming.python
+summary : Module for accessing and modifying configuration data in INI files
+description: |
+ iniparse is an INI parser for Python which is API compatible with the
+ standard library's ConfigParser, preserves structure of INI files
+ (order of sections & options, indentation, comments, and blank lines
+ are preserved when data is updated), and is more convenient to use.
+builddeps :
+ - python-setuptools
+rundeps :
+ - python-six
+build : |
+ %apply_patches
+ %python_setup
+ %python3_setup
+install : |
+ %python_install
+ %python3_install
diff --git a/pspec_x86_64.xml b/pspec_x86_64.xml
new file mode 100644
--- /dev/null
+++ b/pspec_x86_64.xml
@@ -0,0 +1,66 @@
+<PISI>
+ <Source>
+ <Name>python-iniparse</Name>
+ <Packager>
+ <Name>Neal Gompa</Name>
+ <Email>ngompa13@gmail.com</Email>
+ </Packager>
+ <License>MIT</License>
+ <PartOf>programming.python</PartOf>
+ <Summary xml:lang="en">Module for accessing and modifying configuration data in INI files</Summary>
+ <Description xml:lang="en">iniparse is an INI parser for Python which is API compatible with the
+standard library's ConfigParser, preserves structure of INI files
+(order of sections & options, indentation, comments, and blank lines
+are preserved when data is updated), and is more convenient to use.
+</Description>
+ <Archive type="binary" sha1sum="79eb0752a961b8e0d15c77d298c97498fbc89c5a">https://solus-project.com/sources/README.Solus</Archive>
+ </Source>
+ <Package>
+ <Name>python-iniparse</Name>
+ <Summary xml:lang="en">Module for accessing and modifying configuration data in INI files</Summary>
+ <Description xml:lang="en">iniparse is an INI parser for Python which is API compatible with the
+standard library's ConfigParser, preserves structure of INI files
+(order of sections & options, indentation, comments, and blank lines
+are preserved when data is updated), and is more convenient to use.
+</Description>
+ <PartOf>programming.python</PartOf>
+ <Files>
+ <Path fileType="library">/usr/lib/python2.7/site-packages/iniparse-0.4-py2.7.egg-info</Path>
+ <Path fileType="library">/usr/lib/python2.7/site-packages/iniparse/__init__.py</Path>
+ <Path fileType="library">/usr/lib/python2.7/site-packages/iniparse/__init__.pyc</Path>
+ <Path fileType="library">/usr/lib/python2.7/site-packages/iniparse/compat.py</Path>
+ <Path fileType="library">/usr/lib/python2.7/site-packages/iniparse/compat.pyc</Path>
+ <Path fileType="library">/usr/lib/python2.7/site-packages/iniparse/config.py</Path>
+ <Path fileType="library">/usr/lib/python2.7/site-packages/iniparse/config.pyc</Path>
+ <Path fileType="library">/usr/lib/python2.7/site-packages/iniparse/configparser.py</Path>
+ <Path fileType="library">/usr/lib/python2.7/site-packages/iniparse/configparser.pyc</Path>
+ <Path fileType="library">/usr/lib/python2.7/site-packages/iniparse/ini.py</Path>
+ <Path fileType="library">/usr/lib/python2.7/site-packages/iniparse/ini.pyc</Path>
+ <Path fileType="library">/usr/lib/python2.7/site-packages/iniparse/utils.py</Path>
+ <Path fileType="library">/usr/lib/python2.7/site-packages/iniparse/utils.pyc</Path>
+ <Path fileType="library">/usr/lib/python3.5/site-packages/iniparse-0.4-py3.5.egg-info</Path>
+ <Path fileType="library">/usr/lib/python3.5/site-packages/iniparse/__init__.py</Path>
+ <Path fileType="library">/usr/lib/python3.5/site-packages/iniparse/__pycache__/__init__.cpython-35.pyc</Path>
+ <Path fileType="library">/usr/lib/python3.5/site-packages/iniparse/__pycache__/compat.cpython-35.pyc</Path>
+ <Path fileType="library">/usr/lib/python3.5/site-packages/iniparse/__pycache__/config.cpython-35.pyc</Path>
+ <Path fileType="library">/usr/lib/python3.5/site-packages/iniparse/__pycache__/configparser.cpython-35.pyc</Path>
+ <Path fileType="library">/usr/lib/python3.5/site-packages/iniparse/__pycache__/ini.cpython-35.pyc</Path>
+ <Path fileType="library">/usr/lib/python3.5/site-packages/iniparse/__pycache__/utils.cpython-35.pyc</Path>
+ <Path fileType="library">/usr/lib/python3.5/site-packages/iniparse/compat.py</Path>
+ <Path fileType="library">/usr/lib/python3.5/site-packages/iniparse/config.py</Path>
+ <Path fileType="library">/usr/lib/python3.5/site-packages/iniparse/configparser.py</Path>
+ <Path fileType="library">/usr/lib/python3.5/site-packages/iniparse/ini.py</Path>
+ <Path fileType="library">/usr/lib/python3.5/site-packages/iniparse/utils.py</Path>
+ <Path fileType="doc">/usr/share/doc</Path>
+ </Files>
+ </Package>
+ <History>
+ <Update release="1">
+ <Date>2018-01-07</Date>
+ <Version>0.4</Version>
+ <Comment>Packaging update</Comment>
+ <Name>Neal Gompa</Name>
+ <Email>ngompa13@gmail.com</Email>
+ </Update>
+ </History>
+</PISI>
\ No newline at end of file
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Thu, Aug 10, 2:48 PM (1 d, 2 h ago)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
5859432
Default Alt Text
D1909.id4806.diff (27 KB)
Attached To
Mode
D1909: Initial packaging of python-iniparse
Attached
Detach File
Event Timeline
Log In to Comment