[Python-modules-commits] [django-bitfield] 01/06: Import django-bitfield_1.9.3.orig.tar.gz

Michael Fladischer fladi at moszumanska.debian.org
Tue Jun 20 08:47:23 UTC 2017


This is an automated email from the git hooks/post-receive script.

fladi pushed a commit to branch master
in repository django-bitfield.

commit 23d746952896c61c87c63c44ee99b42951b905ef
Author: Michael Fladischer <FladischerMichael at fladi.at>
Date:   Tue Jun 20 10:40:12 2017 +0200

    Import django-bitfield_1.9.3.orig.tar.gz
---
 PKG-INFO                              |  8 +++-----
 bitfield/__init__.py                  |  1 +
 bitfield/apps.py                      |  6 ++++++
 bitfield/forms.py                     |  4 ++--
 bitfield/models.py                    | 37 ++++++++++++-----------------------
 bitfield/query.py                     | 10 ++++++++++
 bitfield/tests/__init__.py            |  4 ----
 bitfield/tests/tests.py               | 33 ++++++++++++-------------------
 django_bitfield.egg-info/PKG-INFO     |  8 +++-----
 django_bitfield.egg-info/SOURCES.txt  |  1 +
 django_bitfield.egg-info/requires.txt |  2 +-
 setup.cfg                             |  4 ++--
 setup.py                              | 10 ++++------
 13 files changed, 57 insertions(+), 71 deletions(-)

diff --git a/PKG-INFO b/PKG-INFO
index 4acc34f..bb822a9 100644
--- a/PKG-INFO
+++ b/PKG-INFO
@@ -1,9 +1,9 @@
 Metadata-Version: 1.1
 Name: django-bitfield
-Version: 1.8.0
+Version: 1.9.3
 Summary: BitField in Django
 Home-page: https://github.com/disqus/django-bitfield
-Author: DISQUS
+Author: Disqus
 Author-email: opensource at disqus.com
 License: UNKNOWN
 Description: UNKNOWN
@@ -15,9 +15,7 @@ Classifier: Operating System :: OS Independent
 Classifier: Topic :: Software Development
 Classifier: Programming Language :: Python
 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.2
-Classifier: Programming Language :: Python :: 3.3
 Classifier: Programming Language :: Python :: 3.4
+Classifier: Programming Language :: Python :: 3.5
diff --git a/bitfield/__init__.py b/bitfield/__init__.py
index 9088139..5425137 100644
--- a/bitfield/__init__.py
+++ b/bitfield/__init__.py
@@ -6,6 +6,7 @@ from __future__ import absolute_import
 
 from bitfield.models import Bit, BitHandler, CompositeBitField, BitField  # NOQA
 
+default_app_config = 'bitfield.apps.BitFieldAppConfig'
 
 try:
     VERSION = __import__('pkg_resources') \
diff --git a/bitfield/apps.py b/bitfield/apps.py
new file mode 100644
index 0000000..dabe0ce
--- /dev/null
+++ b/bitfield/apps.py
@@ -0,0 +1,6 @@
+from django.apps import AppConfig
+
+
+class BitFieldAppConfig(AppConfig):
+    name = 'bitfield'
+    verbose_name = "Bit Field"
diff --git a/bitfield/forms.py b/bitfield/forms.py
index d8bfd19..834960f 100644
--- a/bitfield/forms.py
+++ b/bitfield/forms.py
@@ -24,7 +24,7 @@ class BitFieldCheckboxSelectMultiple(CheckboxSelectMultiple):
                 div *= 2
             value = real_value
         return super(BitFieldCheckboxSelectMultiple, self).render(
-            name, value, attrs=attrs, choices=enumerate(choices))
+            name, value, attrs=attrs)
 
     def _has_changed(self, initial, data):
         if initial is None:
@@ -44,7 +44,7 @@ class BitFormField(IntegerField):
         if isinstance(kwargs['initial'], int):
             iv = kwargs['initial']
             l = []
-            for i in range(0, 63):
+            for i in range(0, min(len(choices), 63)):
                 if (1 << i) & iv > 0:
                     l += [choices[i][0]]
             kwargs['initial'] = l
diff --git a/bitfield/models.py b/bitfield/models.py
index d42a83d..b83ffae 100644
--- a/bitfield/models.py
+++ b/bitfield/models.py
@@ -4,12 +4,6 @@ import six
 
 from django.db.models import signals
 from django.db.models.fields import Field, BigIntegerField
-from django.db.models.fields.subclassing import Creator
-try:
-    from django.db.models.fields.subclassing import SubfieldBase
-except ImportError:
-    # django 1.2
-    from django.db.models.fields.subclassing import LegacyConnection as SubfieldBase  # NOQA
 
 from bitfield.forms import BitFormField
 from bitfield.query import BitQueryLookupWrapper
@@ -60,13 +54,20 @@ class BitFieldFlags(object):
         return list(self.itervalues())
 
 
-class BitFieldCreator(Creator):
+class BitFieldCreator(object):
     """
+    A placeholder class that provides a way to set the attribute on the model.
     Descriptor for BitFields.  Checks to make sure that all flags of the
     instance match the class.  This is to handle the case when caching
     an older version of the instance and a newer version of the class is
     available (usually during deploys).
     """
+    def __init__(self, field):
+        self.field = field
+
+    def __set__(self, obj, value):
+        obj.__dict__[self.field.name] = self.field.to_python(value)
+
     def __get__(self, obj, type=None):
         if obj is None:
             return BitFieldFlags(self.field.flags)
@@ -77,26 +78,12 @@ class BitFieldCreator(Creator):
         return retval
 
 
-class BitFieldMeta(SubfieldBase):
-    """
-    Modified SubFieldBase to use our contribute_to_class method (instead of
-    monkey-patching make_contrib).  This uses our BitFieldCreator descriptor
-    in place of the default.
-
-    NOTE: If we find ourselves needing custom descriptors for fields, we could
-    make this generic.
-    """
-    def __new__(cls, name, bases, attrs):
-        def contribute_to_class(self, cls, name):
-            BigIntegerField.contribute_to_class(self, cls, name)
-            setattr(cls, self.name, BitFieldCreator(self))
-
-        new_class = super(BitFieldMeta, cls).__new__(cls, name, bases, attrs)
-        new_class.contribute_to_class = contribute_to_class
-        return new_class
+class BitField(BigIntegerField):
 
+    def contribute_to_class(self, cls, name, **kwargs):
+        super(BitField, self).contribute_to_class(cls, name, **kwargs)
+        setattr(cls, self.name, BitFieldCreator(self))
 
-class BitField(six.with_metaclass(BitFieldMeta, BigIntegerField)):
     def __init__(self, flags, default=None, *args, **kwargs):
         if isinstance(flags, dict):
             # Get only integer keys in correct range
diff --git a/bitfield/query.py b/bitfield/query.py
index ee1ddef..7721f08 100644
--- a/bitfield/query.py
+++ b/bitfield/query.py
@@ -1,5 +1,7 @@
 from __future__ import absolute_import
 
+from bitfield.types import Bit, BitHandler
+
 
 class BitQueryLookupWrapper(object):
     def __init__(self, alias, column, bit):
@@ -20,6 +22,7 @@ class BitQueryLookupWrapper(object):
         return ("(%s.%s & %d)" % (qn(self.table_alias), qn(self.column), self.bit.mask),
                 [])
 
+
 try:
     # Django 1.7+
     from django.db.models.lookups import Exact
@@ -35,6 +38,13 @@ try:
             params.extend(self.get_db_prep_lookup(self.rhs, connection)[1])
             return lhs_sql, params
 
+        def get_db_prep_lookup(self, value, connection, prepared=False):
+            v = value.mask if isinstance(value, (BitHandler, Bit)) else value
+            return super(BitQueryLookupWrapper, self).get_db_prep_lookup(v, connection)
+
+        def get_prep_lookup(self):
+            return self.rhs
+
 except ImportError:
     pass
 
diff --git a/bitfield/tests/__init__.py b/bitfield/tests/__init__.py
index 15088bf..e69de29 100644
--- a/bitfield/tests/__init__.py
+++ b/bitfield/tests/__init__.py
@@ -1,4 +0,0 @@
-from __future__ import absolute_import
-
-from .forms import *  # NOQA
-from .models import *  # NOQA
diff --git a/bitfield/tests/tests.py b/bitfield/tests/tests.py
index 9748da9..62fff82 100644
--- a/bitfield/tests/tests.py
+++ b/bitfield/tests/tests.py
@@ -7,24 +7,10 @@ from django.db.models import F
 from django.test import TestCase
 
 from bitfield import BitHandler, Bit, BitField
-from bitfield.tests import BitFieldTestModel, CompositeBitFieldTestModel, BitFieldTestModelForm
 from bitfield.compat import bitand, bitor
 
-try:
-    from django.db.models.base import simple_class_factory  # noqa
-except ImportError:
-    # Django 1.5 muffed up the base class which breaks the pickle tests
-    # Note, it's fixed again in 1.6.
-    from django.db.models import base
-    _model_unpickle = base.model_unpickle
-
-    def simple_class_factory(model, attrs):
-        return model
-
-    def model_unpickle(model, attrs, factory):
-        return _model_unpickle(model, attrs)
-    setattr(base, 'simple_class_factory', simple_class_factory)
-    setattr(base, 'model_unpickle', model_unpickle)
+from .forms import BitFieldTestModelForm
+from .models import BitFieldTestModel, CompositeBitFieldTestModel
 
 
 class BitHandlerTest(TestCase):
@@ -171,7 +157,7 @@ class BitFieldTest(TestCase):
         self.assertTrue(instance.flags.FLAG_3)
 
         cursor = connection.cursor()
-        flags_field = BitFieldTestModel._meta.get_field_by_name('flags')[0]
+        flags_field = BitFieldTestModel._meta.get_field('flags')
         flags_db_column = flags_field.db_column or flags_field.name
         cursor.execute("INSERT INTO %s (%s) VALUES (-1)" % (BitFieldTestModel._meta.db_table, flags_db_column))
         # There should only be the one row we inserted through the cursor.
@@ -289,8 +275,10 @@ class BitFieldTest(TestCase):
 
 class BitFieldSerializationTest(TestCase):
     def test_can_unserialize_bithandler(self):
-        data = b"cdjango.db.models.base\nmodel_unpickle\np0\n(cbitfield.tests.models\nBitFieldTestModel\np1\n(lp2\ncdjango.db.models.base\nsimple_class_factory\np3\ntp4\nRp5\n(dp6\nS'flags'\np7\nccopy_reg\n_reconstructor\np8\n(cbitfield.types\nBitHandler\np9\nc__builtin__\nobject\np10\nNtp11\nRp12\n(dp13\nS'_value'\np14\nI1\nsS'_keys'\np15\n(S'FLAG_0'\np16\nS'FLAG_1'\np17\nS'FLAG_2'\np18\nS'FLAG_3'\np19\ntp20\nsbsS'_state'\np21\ng8\n(cdjango.db.models.base\nModelState\np22\ng10\nNtp23\nR [...]
-
+        bf = BitFieldTestModel()
+        bf.flags.FLAG_0 = 1
+        bf.flags.FLAG_1 = 0
+        data = pickle.dumps(bf)
         inst = pickle.loads(data)
         self.assertTrue(inst.flags.FLAG_0)
         self.assertFalse(inst.flags.FLAG_1)
@@ -303,8 +291,11 @@ class BitFieldSerializationTest(TestCase):
         self.assertEquals(int(inst.flags), 1)
 
     def test_added_field(self):
-        data = b"cdjango.db.models.base\nmodel_unpickle\np0\n(cbitfield.tests.models\nBitFieldTestModel\np1\n(lp2\ncdjango.db.models.base\nsimple_class_factory\np3\ntp4\nRp5\n(dp6\nS'flags'\np7\nccopy_reg\n_reconstructor\np8\n(cbitfield.types\nBitHandler\np9\nc__builtin__\nobject\np10\nNtp11\nRp12\n(dp13\nS'_value'\np14\nI1\nsS'_keys'\np15\n(S'FLAG_0'\np16\nS'FLAG_1'\np17\nS'FLAG_2'\np18\ntp19\nsbsS'_state'\np20\ng8\n(cdjango.db.models.base\nModelState\np21\ng10\nNtp22\nRp23\n(dp24\nS'ad [...]
-
+        bf = BitFieldTestModel()
+        bf.flags.FLAG_0 = 1
+        bf.flags.FLAG_1 = 0
+        bf.flags.FLAG_3 = 0
+        data = pickle.dumps(bf)
         inst = pickle.loads(data)
         self.assertTrue('FLAG_3' in inst.flags.keys())
 
diff --git a/django_bitfield.egg-info/PKG-INFO b/django_bitfield.egg-info/PKG-INFO
index 4acc34f..bb822a9 100644
--- a/django_bitfield.egg-info/PKG-INFO
+++ b/django_bitfield.egg-info/PKG-INFO
@@ -1,9 +1,9 @@
 Metadata-Version: 1.1
 Name: django-bitfield
-Version: 1.8.0
+Version: 1.9.3
 Summary: BitField in Django
 Home-page: https://github.com/disqus/django-bitfield
-Author: DISQUS
+Author: Disqus
 Author-email: opensource at disqus.com
 License: UNKNOWN
 Description: UNKNOWN
@@ -15,9 +15,7 @@ Classifier: Operating System :: OS Independent
 Classifier: Topic :: Software Development
 Classifier: Programming Language :: Python
 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.2
-Classifier: Programming Language :: Python :: 3.3
 Classifier: Programming Language :: Python :: 3.4
+Classifier: Programming Language :: Python :: 3.5
diff --git a/django_bitfield.egg-info/SOURCES.txt b/django_bitfield.egg-info/SOURCES.txt
index befe7c4..d79db8e 100644
--- a/django_bitfield.egg-info/SOURCES.txt
+++ b/django_bitfield.egg-info/SOURCES.txt
@@ -5,6 +5,7 @@ setup.cfg
 setup.py
 bitfield/__init__.py
 bitfield/admin.py
+bitfield/apps.py
 bitfield/compat.py
 bitfield/forms.py
 bitfield/models.py
diff --git a/django_bitfield.egg-info/requires.txt b/django_bitfield.egg-info/requires.txt
index 504c6b6..211e2ce 100644
--- a/django_bitfield.egg-info/requires.txt
+++ b/django_bitfield.egg-info/requires.txt
@@ -1,4 +1,4 @@
-Django>=1.4
+Django>=1.4.22
 six
 
 [tests]
diff --git a/setup.cfg b/setup.cfg
index 68229b0..ea13330 100644
--- a/setup.cfg
+++ b/setup.cfg
@@ -12,7 +12,7 @@ exclude = .tox,.git,docs
 universal = 1
 
 [egg_info]
-tag_build = 
-tag_date = 0
 tag_svn_revision = 0
+tag_date = 0
+tag_build = 
 
diff --git a/setup.py b/setup.py
index 1d09c30..eda5027 100644
--- a/setup.py
+++ b/setup.py
@@ -4,15 +4,15 @@ from setuptools import setup, find_packages
 
 setup(
     name='django-bitfield',
-    version='1.8.0',
-    author='DISQUS',
+    version='1.9.3',
+    author='Disqus',
     author_email='opensource at disqus.com',
     url='https://github.com/disqus/django-bitfield',
     description='BitField in Django',
     packages=find_packages(),
     zip_safe=False,
     install_requires=[
-        'Django>=1.4',
+        'Django>=1.4.22',
         'six',
     ],
     extras_require={
@@ -32,11 +32,9 @@ setup(
         'Topic :: Software Development',
         "Programming Language :: Python",
         "Programming Language :: Python :: 2",
-        "Programming Language :: Python :: 2.6",
         "Programming Language :: Python :: 2.7",
         "Programming Language :: Python :: 3",
-        "Programming Language :: Python :: 3.2",
-        "Programming Language :: Python :: 3.3",
         "Programming Language :: Python :: 3.4",
+        "Programming Language :: Python :: 3.5",
     ],
 )

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/python-modules/packages/django-bitfield.git



More information about the Python-modules-commits mailing list