Hello community,

here is the log from the commit of package python-django-appconf for 
openSUSE:Factory checked in at 2013-02-04 18:00:45
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-django-appconf (Old)
 and      /work/SRC/openSUSE:Factory/.python-django-appconf.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "python-django-appconf", Maintainer is ""

Changes:
--------
--- 
/work/SRC/openSUSE:Factory/python-django-appconf/python-django-appconf.changes  
    2012-11-28 14:33:05.000000000 +0100
+++ 
/work/SRC/openSUSE:Factory/.python-django-appconf.new/python-django-appconf.changes
 2013-02-04 18:00:49.000000000 +0100
@@ -1,0 +2,9 @@
+Fri Feb  1 13:21:23 UTC 2013 - [email protected]
+
+- update to 0.6
+  * Added required attribute to Meta to specify which settings are required to 
set.
+  * Moved to Travis for the tests: http://travis-ci.org/jezdez/django-appconf
+  * Stopped support for Django 1.2.X.
+  * Introduced support for Python >= 3.2.
+
+-------------------------------------------------------------------

Old:
----
  django-appconf-0.5.tar.gz

New:
----
  django-appconf-0.6.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ python-django-appconf.spec ++++++
--- /var/tmp/diff_new_pack.lyF0E6/_old  2013-02-04 18:00:50.000000000 +0100
+++ /var/tmp/diff_new_pack.lyF0E6/_new  2013-02-04 18:00:50.000000000 +0100
@@ -1,7 +1,7 @@
 #
 # spec file for package python-django-appconf
 #
-# Copyright (c) 2012 SUSE LINUX Products GmbH, Nuernberg, Germany.
+# Copyright (c) 2013 SUSE LINUX Products GmbH, Nuernberg, Germany.
 #
 # All modifications and additions to the file contributed by third parties
 # remain the property of their copyright owners, unless otherwise agreed
@@ -11,12 +11,13 @@
 # case the license is the MIT License). An "Open Source License" is a
 # license that conforms to the Open Source Definition (Version 1.9)
 # published by the Open Source Initiative.
-#
+
 # Please submit bugfixes or comments via http://bugs.opensuse.org/
 #
 
+
 Name:           python-django-appconf
-Version:        0.5
+Version:        0.6
 Release:        0
 Url:            http://django-appconf.readthedocs.org/
 Summary:        A Helper Class for Handling Configuration Defaults of Packaged 
Apps

++++++ django-appconf-0.5.tar.gz -> django-appconf-0.6.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/django-appconf-0.5/AUTHORS 
new/django-appconf-0.6/AUTHORS
--- old/django-appconf-0.5/AUTHORS      2011-08-25 16:51:10.000000000 +0200
+++ new/django-appconf-0.6/AUTHORS      2013-01-28 18:44:32.000000000 +0100
@@ -1 +1,5 @@
-Jannis Leidel <[email protected]>
\ No newline at end of file
+Christopher Grebs
+Jannis Leidel
+Matthew Tretter
+Rafal Stozek
+Chris Streeter
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/django-appconf-0.5/LICENSE 
new/django-appconf-0.6/LICENSE
--- old/django-appconf-0.5/LICENSE      2012-02-20 00:29:49.000000000 +0100
+++ new/django-appconf-0.6/LICENSE      2013-01-28 18:44:15.000000000 +0100
@@ -1,4 +1,4 @@
-Copyright (c) 2011-2012, Jannis Leidel and individual contributors.
+Copyright (c) 2011-2013, Jannis Leidel and individual contributors.
 All rights reserved.
 
 Redistribution and use in source and binary forms, with or without
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/django-appconf-0.5/PKG-INFO 
new/django-appconf-0.6/PKG-INFO
--- old/django-appconf-0.5/PKG-INFO     2012-02-20 00:31:20.000000000 +0100
+++ new/django-appconf-0.6/PKG-INFO     2013-01-28 18:53:14.000000000 +0100
@@ -1,6 +1,6 @@
-Metadata-Version: 1.0
+Metadata-Version: 1.1
 Name: django-appconf
-Version: 0.5
+Version: 0.6
 Summary: A helper class for handling configuration defaults of packaged apps 
gracefully.
 Home-page: http://django-appconf.readthedocs.org/
 Author: Jannis Leidel
@@ -9,6 +9,10 @@
 Description: django-appconf
         ==============
         
+        .. image:: 
https://secure.travis-ci.org/jezdez/django-appconf.png?branch=develop
+            :alt: Build Status
+            :target: http://travis-ci.org/jezdez/django-appconf
+        
         A helper class for handling configuration defaults of packaged Django
         apps gracefully.
         
@@ -77,7 +81,7 @@
                     holder = 'acme.conf.settings'
         
         If you ship an ``AppConf`` class with your reusable Django app, it's
-        recommended to put it in a ``conf.py`` file of you app package and
+        recommended to put it in a ``conf.py`` file of your app package and
         import ``django.conf.settings`` in it, too::
         
             from django.conf import settings
@@ -112,4 +116,6 @@
 Classifier: Programming Language :: Python :: 2.5
 Classifier: Programming Language :: Python :: 2.6
 Classifier: Programming Language :: Python :: 2.7
+Classifier: Programming Language :: Python :: 3.2
+Classifier: Programming Language :: Python :: 3.3
 Classifier: Topic :: Utilities
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/django-appconf-0.5/README.rst 
new/django-appconf-0.6/README.rst
--- old/django-appconf-0.5/README.rst   2012-02-20 00:31:03.000000000 +0100
+++ new/django-appconf-0.6/README.rst   2013-01-28 18:43:28.000000000 +0100
@@ -1,6 +1,10 @@
 django-appconf
 ==============
 
+.. image:: 
https://secure.travis-ci.org/jezdez/django-appconf.png?branch=develop
+    :alt: Build Status
+    :target: http://travis-ci.org/jezdez/django-appconf
+
 A helper class for handling configuration defaults of packaged Django
 apps gracefully.
 
@@ -69,7 +73,7 @@
             holder = 'acme.conf.settings'
 
 If you ship an ``AppConf`` class with your reusable Django app, it's
-recommended to put it in a ``conf.py`` file of you app package and
+recommended to put it in a ``conf.py`` file of your app package and
 import ``django.conf.settings`` in it, too::
 
     from django.conf import settings
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/django-appconf-0.5/appconf/__init__.py 
new/django-appconf-0.6/appconf/__init__.py
--- old/django-appconf-0.5/appconf/__init__.py  2012-02-20 00:30:01.000000000 
+0100
+++ new/django-appconf-0.6/appconf/__init__.py  2013-01-28 18:52:41.000000000 
+0100
@@ -2,4 +2,4 @@
 from .base import AppConf  # noqa
 
 # following PEP 386
-__version__ = "0.5"
+__version__ = "0.6"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/django-appconf-0.5/appconf/base.py 
new/django-appconf-0.6/appconf/base.py
--- old/django-appconf-0.5/appconf/base.py      2012-02-20 00:29:49.000000000 
+0100
+++ new/django-appconf-0.6/appconf/base.py      2013-01-28 18:40:37.000000000 
+0100
@@ -1,4 +1,6 @@
+from django.core.exceptions import ImproperlyConfigured
 import sys
+import six
 from .utils import import_attribute
 
 
@@ -9,6 +11,7 @@
         self.holder_path = getattr(meta, 'holder', 'django.conf.settings')
         self.holder = import_attribute(self.holder_path)
         self.proxy = getattr(meta, 'proxy', False)
+        self.required = getattr(meta, 'required', [])
         self.configured_data = {}
 
     def prefixed_name(self, name):
@@ -57,7 +60,7 @@
                 new_class._meta.configured_data.update(
                     parent._meta.configured_data)
 
-        for name in filter(lambda name: name == name.upper(), attrs):
+        for name in filter(str.isupper, list(attrs.keys())):
             prefixed_name = new_class._meta.prefixed_name(name)
             new_class._meta.names[name] = prefixed_name
             new_class._meta.defaults[prefixed_name] = attrs.pop(name)
@@ -67,10 +70,18 @@
             new_class.add_to_class(name, value)
 
         new_class._configure()
-        for name, value in new_class._meta.configured_data.iteritems():
+        for name, value in six.iteritems(new_class._meta.configured_data):
             prefixed_name = new_class._meta.prefixed_name(name)
             setattr(new_class._meta.holder, prefixed_name, value)
             new_class.add_to_class(name, value)
+
+        # Confirm presence of required settings.
+        for name in new_class._meta.required:
+            prefixed_name = new_class._meta.prefixed_name(name)
+            if not hasattr(new_class._meta.holder, prefixed_name):
+                raise ImproperlyConfigured('The required setting %s is'
+                                           ' missing.' % prefixed_name)
+
         return new_class
 
     def add_to_class(cls, name, value):
@@ -82,7 +93,7 @@
     def _configure(cls):
         # the ad-hoc settings class instance used to configure each value
         obj = cls()
-        for name, prefixed_name in obj._meta.names.iteritems():
+        for name, prefixed_name in six.iteritems(obj._meta.names):
             default_value = obj._meta.defaults.get(prefixed_name)
             value = getattr(obj._meta.holder, prefixed_name, default_value)
             callback = getattr(obj, "configure_%s" % name.lower(), None)
@@ -92,15 +103,14 @@
         cls._meta.configured_data = obj.configure()
 
 
-class AppConf(object):
+class AppConf(six.with_metaclass(AppConfMetaClass)):
     """
     An app setting object to be used for handling app setting defaults
     gracefully and providing a nice API for them.
     """
-    __metaclass__ = AppConfMetaClass
 
     def __init__(self, **kwargs):
-        for name, value in kwargs.iteritems():
+        for name, value in six.iteritems(kwargs):
             setattr(self, name, value)
 
     def __dir__(self):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/django-appconf-0.5/appconf/test_settings.py 
new/django-appconf-0.6/appconf/test_settings.py
--- old/django-appconf-0.5/appconf/test_settings.py     2012-02-20 
00:29:49.000000000 +0100
+++ new/django-appconf-0.6/appconf/test_settings.py     2013-01-28 
18:40:37.000000000 +0100
@@ -12,13 +12,8 @@
     'django.contrib.sites',
     'django.contrib.auth',
     'django.contrib.admin',
-    'django_jenkins',
     'appconf.tests',
 ]
 
-JENKINS_TASKS = (
-    'django_jenkins.tasks.run_pyflakes',
-    'django_jenkins.tasks.run_pep8',
-    'django_jenkins.tasks.with_coverage',
-    'django_jenkins.tasks.django_tests',
-)
+TEST_RUNNER = 'discover_runner.DiscoverRunner'
+SECRET_KEY = 'local'
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/django-appconf-0.5/appconf/tests/models.py 
new/django-appconf-0.6/appconf/tests/models.py
--- old/django-appconf-0.5/appconf/tests/models.py      2012-02-20 
00:29:49.000000000 +0100
+++ new/django-appconf-0.6/appconf/tests/models.py      2013-01-28 
18:36:04.000000000 +0100
@@ -2,7 +2,7 @@
 
 
 class CustomHolder(object):
-    pass
+    HOLDER_VALUE = True
 
 custom_holder = CustomHolder()
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/django-appconf-0.5/appconf/tests/tests.py 
new/django-appconf-0.6/appconf/tests/tests.py
--- old/django-appconf-0.5/appconf/tests/tests.py       2012-02-20 
00:29:49.000000000 +0100
+++ new/django-appconf-0.6/appconf/tests/tests.py       2013-01-28 
18:40:37.000000000 +0100
@@ -1,10 +1,11 @@
 from __future__ import absolute_import
 from django.conf import settings
+from django.core.exceptions import ImproperlyConfigured
 from django.test import TestCase
 
-from .models import (TestConf, PrefixConf, YetAnotherPrefixConf,
-                     SeparateConf, ProxyConf, CustomHolderConf,
-                     custom_holder)
+from appconf.tests.models import (AppConf, TestConf, PrefixConf,
+                                  YetAnotherPrefixConf, SeparateConf, 
ProxyConf,
+                                  CustomHolderConf, custom_holder)
 
 
 class TestConfTests(TestCase):
@@ -49,14 +50,15 @@
     def test_dir_members(self):
         custom_conf = TestConf()
         self.assertTrue('TESTS_SIMPLE_VALUE' in dir(settings))
-        self.assertTrue('TESTS_SIMPLE_VALUE' in settings.__members__)
+        if hasattr(settings, '__members__'):  # django 1.5 removed __members__
+            self.assertTrue('TESTS_SIMPLE_VALUE' in settings.__members__)
         self.assertTrue('SIMPLE_VALUE' in dir(custom_conf))
         self.assertTrue('SIMPLE_VALUE' in custom_conf.__members__)
         self.assertFalse('TESTS_SIMPLE_VALUE' in dir(custom_conf))
         self.assertFalse('TESTS_SIMPLE_VALUE' in custom_conf.__members__)
 
     def test_custom_holder(self):
-        custom_conf = CustomHolderConf()
+        CustomHolderConf()
         self.assertTrue(hasattr(custom_holder, 'CUSTOM_HOLDER_SIMPLE_VALUE'))
         self.assertEquals(custom_holder.CUSTOM_HOLDER_SIMPLE_VALUE, True)
 
@@ -115,3 +117,28 @@
     def test_simple(self):
         self.assertTrue(hasattr(settings, 'PREFIX_SEPARATE_VALUE'))
         self.assertEquals(settings.PREFIX_SEPARATE_VALUE, True)
+
+
+class RequiredSettingsTests(TestCase):
+
+    def create_invalid_conf(self):
+        class RequirementConf(AppConf):
+            class Meta:
+                required = ['NOT_PRESENT']
+
+    def test_value_is_defined(self):
+        class RequirementConf(AppConf):
+            class Meta:
+                holder = 'appconf.tests.models.custom_holder'
+                prefix = 'holder'
+                required = ['VALUE']
+
+    def test_default_is_defined(self):
+        class RequirementConf(AppConf):
+            SIMPLE_VALUE = True
+
+            class Meta:
+                required = ['SIMPLE_VALUE']
+
+    def test_missing(self):
+        self.assertRaises(ImproperlyConfigured, self.create_invalid_conf)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/django-appconf-0.5/django_appconf.egg-info/PKG-INFO 
new/django-appconf-0.6/django_appconf.egg-info/PKG-INFO
--- old/django-appconf-0.5/django_appconf.egg-info/PKG-INFO     2012-02-20 
00:31:20.000000000 +0100
+++ new/django-appconf-0.6/django_appconf.egg-info/PKG-INFO     2013-01-28 
18:53:14.000000000 +0100
@@ -1,6 +1,6 @@
-Metadata-Version: 1.0
+Metadata-Version: 1.1
 Name: django-appconf
-Version: 0.5
+Version: 0.6
 Summary: A helper class for handling configuration defaults of packaged apps 
gracefully.
 Home-page: http://django-appconf.readthedocs.org/
 Author: Jannis Leidel
@@ -9,6 +9,10 @@
 Description: django-appconf
         ==============
         
+        .. image:: 
https://secure.travis-ci.org/jezdez/django-appconf.png?branch=develop
+            :alt: Build Status
+            :target: http://travis-ci.org/jezdez/django-appconf
+        
         A helper class for handling configuration defaults of packaged Django
         apps gracefully.
         
@@ -77,7 +81,7 @@
                     holder = 'acme.conf.settings'
         
         If you ship an ``AppConf`` class with your reusable Django app, it's
-        recommended to put it in a ``conf.py`` file of you app package and
+        recommended to put it in a ``conf.py`` file of your app package and
         import ``django.conf.settings`` in it, too::
         
             from django.conf import settings
@@ -112,4 +116,6 @@
 Classifier: Programming Language :: Python :: 2.5
 Classifier: Programming Language :: Python :: 2.6
 Classifier: Programming Language :: Python :: 2.7
+Classifier: Programming Language :: Python :: 3.2
+Classifier: Programming Language :: Python :: 3.3
 Classifier: Topic :: Utilities
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/django-appconf-0.5/django_appconf.egg-info/SOURCES.txt 
new/django-appconf-0.6/django_appconf.egg-info/SOURCES.txt
--- old/django-appconf-0.5/django_appconf.egg-info/SOURCES.txt  2012-02-20 
00:31:20.000000000 +0100
+++ new/django-appconf-0.6/django_appconf.egg-info/SOURCES.txt  2013-01-28 
18:53:14.000000000 +0100
@@ -14,6 +14,7 @@
 django_appconf.egg-info/PKG-INFO
 django_appconf.egg-info/SOURCES.txt
 django_appconf.egg-info/dependency_links.txt
+django_appconf.egg-info/requires.txt
 django_appconf.egg-info/top_level.txt
 docs/Makefile
 docs/changelog.rst
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/django-appconf-0.5/django_appconf.egg-info/requires.txt 
new/django-appconf-0.6/django_appconf.egg-info/requires.txt
--- old/django-appconf-0.5/django_appconf.egg-info/requires.txt 1970-01-01 
01:00:00.000000000 +0100
+++ new/django-appconf-0.6/django_appconf.egg-info/requires.txt 2013-01-28 
18:53:14.000000000 +0100
@@ -0,0 +1 @@
+six
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/django-appconf-0.5/docs/changelog.rst 
new/django-appconf-0.6/docs/changelog.rst
--- old/django-appconf-0.5/docs/changelog.rst   2012-02-20 00:30:01.000000000 
+0100
+++ new/django-appconf-0.6/docs/changelog.rst   2013-01-28 18:52:33.000000000 
+0100
@@ -1,6 +1,18 @@
 Changelog
 =========
 
+0.6 (2013-01-28)
+----------------
+
+* Added ``required`` attribute to ``Meta`` to be able to specify which
+  settings are required to be set.
+
+* Moved to Travis for the tests: http://travis-ci.org/jezdez/django-appconf
+
+* Stopped support for Django 1.2.X.
+
+* Introduced support for Python >= 3.2.
+
 0.5 (2012-02-20)
 ----------------
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/django-appconf-0.5/docs/conf.py 
new/django-appconf-0.6/docs/conf.py
--- old/django-appconf-0.5/docs/conf.py 2012-02-20 00:29:49.000000000 +0100
+++ new/django-appconf-0.6/docs/conf.py 2013-01-28 18:45:50.000000000 +0100
@@ -41,7 +41,7 @@
 
 # General information about the project.
 project = u'django-appconf'
-copyright = u'2011-2012, Jannis Leidel and individual contributors'
+copyright = u'2011-2013, Jannis Leidel and individual contributors'
 
 # The version info for the project you're documenting, acts as replacement for
 # |version| and |release|, also used in various other places throughout the
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/django-appconf-0.5/docs/reference.rst 
new/django-appconf-0.6/docs/reference.rst
--- old/django-appconf-0.5/docs/reference.rst   2011-08-25 16:51:10.000000000 
+0200
+++ new/django-appconf-0.6/docs/reference.rst   2013-01-28 18:36:04.000000000 
+0100
@@ -52,6 +52,7 @@
             class Meta:
                 proxy = False
                 prefix = 'myapp'
+                required = ['SETTING_3', 'SETTING_4']
                 holder = 'django.conf.settings'
 
     .. attribute:: prefix
@@ -63,6 +64,13 @@
         For example, ``acme`` would turn into settings like
         ``ACME_SETTING_1``.
 
+    .. attribute:: required
+
+        A list of settings that must be defined. If any of the specified
+        settings are not defined, ``ImproperlyConfigured`` will be raised.
+
+        .. versionadded:: 0.6
+
     .. attribute:: holder
 
         The global settings holder to use when looking for overrides and
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/django-appconf-0.5/docs/usage.rst 
new/django-appconf-0.6/docs/usage.rst
--- old/django-appconf-0.5/docs/usage.rst       2011-09-09 09:39:52.000000000 
+0200
+++ new/django-appconf-0.6/docs/usage.rst       2012-06-01 19:46:22.000000000 
+0200
@@ -43,7 +43,7 @@
     myapp_settings = MyAppConf(SETTING_1='something completely different')
 
     if 'different' in myapp_settings.SETTINGS_1:
-        print 'yay, I'm different!'
+        print "yay, I'm different!"
 
 Custom configuration
 --------------------
@@ -93,3 +93,9 @@
             enabled = self.configured_data['ENABLED']
             if not enabled and mode != 'development':
                 print "WARNING: app not enabled in %s mode!" % mode
+            return self.configured_data
+
+.. note::
+
+    Don't forget to return the configured data in your custom ``configure``
+    method if you edit it.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/django-appconf-0.5/setup.py 
new/django-appconf-0.6/setup.py
--- old/django-appconf-0.5/setup.py     2012-02-20 00:29:49.000000000 +0100
+++ new/django-appconf-0.6/setup.py     2013-01-28 18:40:37.000000000 +0100
@@ -6,7 +6,7 @@
 
 def read(*parts):
     file_path = path.join(path.dirname(__file__), *parts)
-    return open(file_path).read()
+    return codecs.open(file_path, encoding='utf-8').read()
 
 
 def find_version(*parts):
@@ -32,6 +32,9 @@
         'appconf',
         'appconf.tests',
     ],
+    install_requires=[
+        'six'
+    ],
     classifiers=[
         'Development Status :: 4 - Beta',
         'Environment :: Web Environment',
@@ -43,6 +46,8 @@
         'Programming Language :: Python :: 2.5',
         'Programming Language :: Python :: 2.6',
         'Programming Language :: Python :: 2.7',
+        'Programming Language :: Python :: 3.2',
+        'Programming Language :: Python :: 3.3',
         'Topic :: Utilities',
     ],
 )

-- 
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to