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 - oliver.bengs@opensuse.org + +- 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 <jannis@leidel.info> \ 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: opensuse-commit+unsubscribe@opensuse.org For additional commands, e-mail: opensuse-commit+help@opensuse.org