Description
Hi, In mongodb-engine, inappropriate dependency versioning constraints can cause risks.
Below are the dependencies and version constraints that the project is using
pymongo>=2.8
djangotoolbox>=1.6.0
django-dbindexer>=1.6.0
https://github.com/django-nonrel/django/tarball/nonrel-1.6
The version constraint == will introduce the risk of dependency conflicts because the scope of dependencies is too strict.
The version constraint No Upper Bound and * will introduce the risk of the missing API Error because the latest version of the dependencies may remove some APIs.
After further analysis, in this project,
The version constraint of dependency pymongo can be changed to >=0.2pre,<=4.1.1.
The version constraint of dependency djangotoolbox can be changed to >=1.6.0,<=1.8.0.
The above modification suggestions can reduce the dependency conflicts as much as possible,
and introduce the latest version as much as possible without calling Error in the projects.
The invocation of the current project includes all the following methods.
The calling methods from the pymongo
gridfs.GridFS
The calling methods from the djangotoolbox
djangotoolbox.fields.EmbeddedModelField djangotoolbox.fields.RawField djangotoolbox.fields.DictField djangotoolbox.fields.ListField
The calling methods from the all methods
cls query.collection.map_reduce django.core.exceptions.ImproperlyConfigured iter django.conf.urls.defaults.patterns self._get_collection _mongodbs.append gridfs.delete self._get_collection.update django.db.models.OneToOneField field.has_default djangotoolbox.fields.RawField time.time BookManager kwargs.setdefault self.TokenizedField.super.contribute_to_class exit self.GridFSField.super.__init__ self.BookManager.super.create django.http.HttpResponse options.get format re.compile dict.iteritems django.core.serializers.json.Deserializer self.GridFSString.super._property_get.read self._get_gridfs name.rfind sys.path.append self.TokenizedField.super.__init__ typemap.get zip c.split old_check_call self.BookManager.super.get_or_create filter len django.conf.urls.defaults.include MongoDBQuerySet query.collection.map_reduce.drop issubclass name.startswith django.db.models.EmailField django.db.models.DateField attr.startswith self.assertEqual django.contrib.admin.site.register gridfs.GridFS self._get_connection setuptools.find_packages cls.add_to_class django.core.management.execute_from_command_line django.views.generic.DetailView.as_view os.path.split list self._get_gridfs.get_last_version os.environ.setdefault django.db.models.ForeignKey django.db.models.CharField gridfs.list os.path.join.replace django.db.backends.util.logger.debug _get_subcollections south.modelsinspector.add_introspection_rules textwrap.dedent imp.find_module self._get_collection.create_index django.conf.settings.DATABASES.iteritems _compiler_for_queryset.execute_update django.views.generic.ListView.as_view template.format utils.get_current_year self._get_site_id self._map_reduce_cpython kwargs.pop sys.stderr.write dir super_meth django.utils.encoding.filepath_to_uri dict.keys os.path.join connection.ops.value_for_db get_objectid_fields django.core.management.execute_manager django.contrib.admin.autodiscover django.db.utils.IntegrityError self._get_gridfs.get field.set_attributes_from_name field.get_default djangotoolbox.fields.EmbeddedModelField self.get django.contrib.sites.models.Site.objects.get self.filter BaseTokenizer.tokenize_item django_mongodb_engine.utils.make_struct location.strip self._get_collection.drop_index self.profile_call self.get_query_set.inline_map_reduce connection.ops.compiler self.stdout.write setattr _init_mongodbs utils.make_index_list self._compiler_for_queryset.build_query subprocess.check_call mimetypes.guess_type django.db.models.signals.class_prepared.connect int_to_objectid setuptools.setup self.base_url.endswith PersonManager RawQuery set MongoAggregate.__subclasses__ text.lower.lower logging.error _new_check_call_closure super connection.database.drop_collection re.split self._get_connection.get_collection re.sub os.path.join.strip property int test_func self.get_query_set.map_reduce self._get_gridfs.put self.get_raw_query_set logging_wrapper join django.db.models.TextField field.get_db_prep_save self._get_query.get_cursor django_mongodb_engine.contrib.MongoDBManager isinstance self._get_collection.rename gridfs.get_last_version django.db.models.query.QuerySet django.conf.settings.INSTALLED_APPS.insert TypeError os.sep.path.replace.strip sys.exit app.split DebugCursor cmd.endswith djangotoolbox.fields.DictField self.format _mongodbs.insert self.GridFSString.super._property_get django.db.models.signals.pre_delete.connect getattr django.db.models.PositiveIntegerField hasattr ValueError django.db.models.DateTimeField django_mongodb_engine.fields.GridFSField _compiler_for_queryset item.strip.strip query.collection.inline_map_reduce gridfsuploads.gridfs_storage.open MapReduceResult.from_entity i.str.rjust gridfs.exists self.is_managed tokenizer.BaseTokenizer.kwargs.pop django.conf.urls.defaults.url BaseTokenizer.regex_split collection.database.collection_names open warnings.warn self.TestCase.super.setUp django_mongodb_engine.storage.GridFSStorage float self._map_reduce_pypy_drop_collection_hack self.collection_wrapper.profile_call urlparse.urljoin django.db.models.FileField self._tokenizer.tokenize utils.get_git_head django.db.models.ManyToManyField django_mongodb_engine.contrib.search.fields.TokenizedField map self.get_query_set.distinct type.__new__ django.db.models.IntegerField self._get_query self._get_meta INSTALLED_APPS.remove connection.database.create_collection self.log django.db.models.TimeField self.DebugCursor.super.__init__ Compiler self.get_query_set django.db.connections.get_collection execute_python str djangotoolbox.fields.ListField runtests re.escape gridfs.put self._get_gridfs.delete self.RawQuery.super.clone tokens.append name.rfind.startswith self.GridFSField.super.contribute_to_class comman_item.split app.replace django_mongodb_engine.fields.GridFSString dict meta_cls query.collection.map_reduce.find func self.RawQuery.super.__init__ gridfs.new_file self.collection_wrapper.log main open.read query.get_cursor.distinct
@developer
Could please help me check this issue?
May I pull a request to fix it?
Thank you very much.