git: 9b644db464b5 - main - devel/py-mongokit: Fix build with setuptools 58.0.0+

From: Po-Chuan Hsieh <sunpoet_at_FreeBSD.org>
Date: Fri, 25 Mar 2022 13:50:02 UTC
The branch main has been updated by sunpoet:

URL: https://cgit.FreeBSD.org/ports/commit/?id=9b644db464b5710d00aa78d2b9cfdc3207376da6

commit 9b644db464b5710d00aa78d2b9cfdc3207376da6
Author:     Po-Chuan Hsieh <sunpoet@FreeBSD.org>
AuthorDate: 2022-03-25 13:32:18 +0000
Commit:     Po-Chuan Hsieh <sunpoet@FreeBSD.org>
CommitDate: 2022-03-25 13:38:09 +0000

    devel/py-mongokit: Fix build with setuptools 58.0.0+
    
    With hat:       python
---
 devel/py-mongokit/files/patch-2to3 | 272 +++++++++++++++++++++++++++++++++++++
 1 file changed, 272 insertions(+)

diff --git a/devel/py-mongokit/files/patch-2to3 b/devel/py-mongokit/files/patch-2to3
new file mode 100644
index 000000000000..a5d463207e85
--- /dev/null
+++ b/devel/py-mongokit/files/patch-2to3
@@ -0,0 +1,272 @@
+--- mongokit/document.py.orig	2014-02-16 10:19:42 UTC
++++ mongokit/document.py
+@@ -82,9 +82,9 @@ class DocumentProperties(SchemaProperties):
+                     if 'fields' not in index:
+                         raise BadIndexError(
+                             "'fields' key must be specify in indexes")
+-                    for key, value in index.iteritems():
++                    for key, value in index.items():
+                         if key == "fields":
+-                            if isinstance(value, basestring):
++                            if isinstance(value, str):
+                                 if value not in attrs['_namespaces'] and value not in STRUCTURE_KEYWORDS:
+                                     raise ValueError(
+                                         "Error in indexes: can't find %s in structure" % value)
+@@ -93,11 +93,11 @@ class DocumentProperties(SchemaProperties):
+                                     raise BadIndexError(
+                                         "Error in indexes: a tuple must contain "
+                                         "only two value : the field name and the direction")
+-                                if not (isinstance(value[1], int) or isinstance(value[1], basestring)):
++                                if not (isinstance(value[1], int) or isinstance(value[1], str)):
+                                     raise BadIndexError(
+                                         "Error in %s, the direction must be int or basestring "
+                                         "(got %s instead)" % (value[0], type(value[1])))
+-                                if not isinstance(value[0], basestring):
++                                if not isinstance(value[0], str):
+                                     raise BadIndexError(
+                                         "Error in %s, the field name must be string "
+                                         "(got %s instead)" % (value[0], type(value[0])))
+@@ -135,10 +135,8 @@ class DocumentProperties(SchemaProperties):
+                             assert isinstance(value, int)
+ 
+ 
+-class Document(SchemaDocument):
++class Document(SchemaDocument, metaclass=DocumentProperties):
+ 
+-    __metaclass__ = DocumentProperties
+-
+     type_field = '_type'
+ 
+     atomic_save = False  # XXX Deprecated
+@@ -166,7 +164,7 @@ class Document(SchemaDocument):
+         super(Document, self).__init__(doc=doc, gen_skel=gen_skel, gen_auth_types=False,
+                                        lang=lang, fallback_lang=fallback_lang)
+         if self.type_field in self:
+-            self[self.type_field] = unicode(self.__class__.__name__)
++            self[self.type_field] = str(self.__class__.__name__)
+         # collection
+         self.collection = collection
+         if collection:
+@@ -236,11 +234,11 @@ class Document(SchemaDocument):
+             error = None
+             try:
+                 super(Document, self).validate()
+-            except StructureError, e:
++            except StructureError as e:
+                 error = e
+-            except KeyError, e:
++            except KeyError as e:
+                 error = e
+-            except SchemaTypeError, e:
++            except SchemaTypeError as e:
+                 error = e
+             if error:
+                 if not self.migration_handler:
+@@ -313,7 +311,7 @@ class Document(SchemaDocument):
+             raise MultipleResultsFound("%s results found" % count)
+         elif count == 1:
+             try:
+-                doc = bson_obj.next()
++                doc = next(bson_obj)
+             except StopIteration:
+                 doc = None
+             return doc
+@@ -326,7 +324,7 @@ class Document(SchemaDocument):
+         max = self.collection.count()
+         if max:
+             num = random.randint(0, max-1)
+-            return self.find().skip(num).next()
++            return next(self.find().skip(num))
+ 
+     def find_fulltext(self, search, **kwargs):
+         """
+@@ -376,7 +374,7 @@ class Document(SchemaDocument):
+         if count > 1:
+             raise MultipleResultsFound("%s results found" % count)
+         elif count == 1:
+-            return bson_obj.next()
++            return next(bson_obj)
+ 
+     def reload(self):
+         """
+@@ -423,7 +421,7 @@ class Document(SchemaDocument):
+                 self._make_reference(self, self.structure)
+         if '_id' not in self:
+             if uuid:
+-                self['_id'] = unicode("%s-%s" % (self.__class__.__name__, uuid4()))
++                self['_id'] = str("%s-%s" % (self.__class__.__name__, uuid4()))
+         self._process_custom_type('bson', self, self.structure)
+         self.collection.save(self, safe=safe, *args, **kwargs)
+         self._process_custom_type('python', self, self.structure)
+@@ -453,12 +451,12 @@ class Document(SchemaDocument):
+ 
+             if isinstance(given_fields, tuple):
+                 fields = [given_fields]
+-            elif isinstance(given_fields, basestring):
++            elif isinstance(given_fields, str):
+                 fields = [(given_fields, 1)]
+             else:
+                 fields = []
+                 for field in given_fields:
+-                    if isinstance(field, basestring):
++                    if isinstance(field, str):
+                         field = (field, 1)
+                     fields.append(field)
+             log.debug('Creating index for %s' % str(given_fields))
+@@ -536,7 +534,7 @@ class Document(SchemaDocument):
+             raise ImportError("can't import anyjson. Please install it before continuing.")
+         obj = self.to_json_type()
+         _convert_to_python(obj, self.structure)
+-        return unicode(dumps(obj))
++        return str(dumps(obj))
+ 
+     def from_json(self, json):
+         """
+@@ -700,7 +698,7 @@ class Document(SchemaDocument):
+                 # it with None values
+                 #
+                 if len(struct[key]) and \
+-                        not [i for i in struct[key].keys() if type(i) is type]:
++                        not [i for i in list(struct[key].keys()) if type(i) is type]:
+                     if key in doc:
+                         self._make_reference(doc[key], struct[key], new_path)
+                 else:  # case {unicode:int}
+--- mongokit/migration.py.orig	2014-02-16 10:19:42 UTC
++++ mongokit/migration.py
+@@ -47,7 +47,7 @@ class DocumentMigration(object):
+ 
+     def validate_update(self, update_query):
+         structure = DotCollapsedDict(self.doc_class.structure)
+-        for op, fields in update_query.iteritems():
++        for op, fields in update_query.items():
+             for field in fields:
+                 if op != '$unset' and op != '$rename':
+                     if field not in structure:
+@@ -84,7 +84,7 @@ class DocumentMigration(object):
+                 collection.update(self.target, self.update, multi=True, safe=safe)
+                 status = collection.database.last_status()
+                 if not status.get('updatedExisting', 1):
+-                    print "%s : %s >>> deprecated" % (self.__class__.__name__, method_name)
++                    print("%s : %s >>> deprecated" % (self.__class__.__name__, method_name))
+ 
+     def get_deprecated(self, collection):
+         method_names = sorted([i for i in dir(self) if i.startswith('migration') or i.startswith('allmigration')])
+--- mongokit/schema_document.py.orig	2014-02-16 10:19:42 UTC
++++ mongokit/schema_document.py
+@@ -32,8 +32,8 @@ from copy import deepcopy
+ 
+ log = logging.getLogger(__name__)
+ 
+-from operators import SchemaOperator, IS
+-from helpers import *
++from .operators import SchemaOperator, IS
++from .helpers import *
+ 
+ __all__ = [
+     'CustomType',
+@@ -230,7 +230,7 @@ class SchemaProperties(type):
+                     raise ValueError("Error in i18n: can't find %s in structure" % i18n)
+ 
+ 
+-class SchemaDocument(dict):
++class SchemaDocument(dict, metaclass=SchemaProperties):
+     """
+     A SchemaDocument is dictionary with a building structured schema
+     The validate method will check that the document match the underling
+@@ -301,7 +301,6 @@ class SchemaDocument(dict):
+     >>> doc
+     {"foo":{"bar":u"bla}}
+     """
+-    __metaclass__ = SchemaProperties
+ 
+     structure = None
+     required_fields = []
+@@ -324,10 +323,10 @@ class SchemaDocument(dict):
+         type(None),
+         bool,
+         int,
+-        long,
++        int,
+         float,
+-        unicode,
+-        basestring,
++        str,
++        str,
+         list,
+         dict,
+         datetime.datetime,
+@@ -351,7 +350,7 @@ class SchemaDocument(dict):
+         self.validation_errors = {}
+         # init
+         if doc:
+-            for k, v in doc.iteritems():
++            for k, v in doc.items():
+                 self[k] = v
+             gen_skel = False
+         if gen_skel:
+@@ -421,7 +420,7 @@ class SchemaDocument(dict):
+     @classmethod
+     def __walk_dict(cls, dic):
+         # thanks jean_b for the patch
+-        for key, value in dic.items():
++        for key, value in list(dic.items()):
+             if isinstance(value, dict) and len(value):
+                 if type(key) is type:
+                     yield '$%s' % key.__name__
+@@ -478,7 +477,7 @@ class SchemaDocument(dict):
+                         raise StructureError("%s: %s is not an authorized type" % (name, struct))
+             elif isinstance(struct, dict):
+                 for key in struct:
+-                    if isinstance(key, basestring):
++                    if isinstance(key, str):
+                         if "." in key:
+                             raise BadKeyError("%s: %s must not contain '.'" % (name, key))
+                         if key.startswith('$'):
+@@ -642,7 +641,7 @@ class SchemaDocument(dict):
+     def _process_validators(self, doc, struct, path=""):
+         doted_struct = DotCollapsedDict(self.structure)
+         doted_doc = DotCollapsedDict(doc)
+-        for key, validators in self.validators.iteritems():
++        for key, validators in self.validators.items():
+             if key in doted_doc and doted_doc[key] is not None:
+                 if not hasattr(validators, "__iter__"):
+                     validators = [validators]
+@@ -650,9 +649,9 @@ class SchemaDocument(dict):
+                     try:
+                         if not validator(doted_doc[key]):
+                             raise ValidationError("%s does not pass the validator " + validator.__name__)
+-                    except Exception, e:
++                    except Exception as e:
+                         self._raise_exception(ValidationError, key,
+-                                              unicode(e) % key)
++                                              str(e) % key)
+ 
+     def _process_custom_type(self, target, doc, struct, path="", root_path=""):
+         for key in struct:
+@@ -751,7 +750,7 @@ class SchemaDocument(dict):
+                 # if the dict is still empty into the document we build
+                 # it with None values
+                 #
+-                if len(struct[key]) and not [i for i in struct[key].keys() if type(i) is type]:
++                if len(struct[key]) and not [i for i in list(struct[key].keys()) if type(i) is type]:
+                     self._set_default_fields(doc[key], struct[key], new_path)
+                 else:
+                     if new_path in self.default_values:
+@@ -912,7 +911,7 @@ class i18n(dict, CustomType):
+ 
+     def to_bson(self, value):
+         if value is not None:
+-            for l, v in value.iteritems():
++            for l, v in value.items():
+                 if isinstance(v, list) and isinstance(self._field_type, list):
+                     for i in v:
+                         if not isinstance(i, self._field_type[0]):
+@@ -922,7 +921,7 @@ class i18n(dict, CustomType):
+                     if not isinstance(v, self._field_type):
+                         raise SchemaTypeError("%s (%s) must be an instance of %s not %s" % (
+                                               self._field_name, l, self._field_type, type(v).__name__))
+-            return [{'lang': l, 'value': v} for l, v in value.iteritems()]
++            return [{'lang': l, 'value': v} for l, v in value.items()]
+ 
+     def to_python(self, value):
+         if value is not None: