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
\ 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