pixelogik / NearPy

Python framework for fast (approximated) nearest neighbour search in large, high-dimensional data sets using different locality-sensitive hashes.
MIT License
759 stars 152 forks source link

Project dependencies may have API risk issues #96

Open PyDeps opened 1 year ago

PyDeps commented 1 year ago

Hi, In NearPy, inappropriate dependency versioning constraints can cause risks.

Below are the dependencies and version constraints that the project is using

numpy
scipy
bitarray
future
mockredispy
mongomock

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 numpy can be changed to >=1.8.0,<=1.23.0rc3. The version constraint of dependency scipy can be changed to >=0.12.0,<=1.7.3. The version constraint of dependency bitarray can be changed to ==0.1.0. The version constraint of dependency bitarray can be changed to >=0.1.0,<=0.1.0. The version constraint of dependency mongomock can be changed to >=1.0.0,<=4.0.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 numpy
numpy.linalg.eig
numpy.linalg.norm
The calling methods from the scipy
scipy.sparse.csr_matrix
scipy.sparse.isspmatrix_coo
scipy.spatial.distance.cdist
scipy.sparse.coo_matrix
scipy.sparse.rand
scipy.sparse.issparse
scipy.sparse.isspmatrix_csr
The calling methods from the bitarray
bitarray
The calling methods from the mongomock
mongomock.MongoClient
The calling methods from the all methods
results.append
self.assertEqual
nearpy.hashes.HashPermutationMapper.add_child_hash
prefixed_key.self.bucket_key_map.keys
self.rbp.hash_vector
self.redis_object.set
engine.storage.buckets.keys
self.RandomBinaryProjections.super.__init__
x.toarray.ravel.toarray
setuptools.setup
hashes.append
self.check_get_all_bucket_keys
self.get_keys
engine.store_vector
self.redis_object.pipeline
encoded_values.append
self.engine.clean_all_buckets
itertools.chain.from_iterable
len.append
self.redis_object.delete
pickle.dumps
check_distance_triangle_inequality
index.vectors_t.reshape
numpy.reshape.tostring
self.redis_object.keys
self.child_hashes.append
nearpy.hashes.RandomDiscretizedProjections
expected_values.remove
engine.neighbours
hash_char.self.childs.insert_entry_for_bucket
self.engine.store_vector
self.RandomBinaryProjectionTree.super.__init__
ValueError
nearpy.filters.UniqueFilter
time.time
ba.copy
open.read
self.bin_width.v.self.normals_csr.dot.floor
nearpy.distances.ManhattanDistance
numpy.dot
nearpy.hashes.RandomBinaryProjectionTree
hash_char.self.childs.collect_all_bucket_keys
mockredis.MockRedis
map
numpy.mean
other_hash_char.self.childs.collect_all_bucket_keys
bitarray.copy
numpy.random.randn.append
scipy.sparse.csr_matrix
nearpy.hashes.permutation.Permutation
self.assertAlmostEqual
self.__index_of_vector
self.engine.neighbours
scipy.sparse.coo_matrix
other_hash_char.self.childs.bucket_keys_to_guarantee_result_set_size
self.PCADiscretizedProjections.super.__init__
nearpy.distances.CosineDistance
self.assertIn
self.memory.load_hash_configuration
functools.partial
format
test_obj.assertAlmostEqual
key.bytes.decode
scipy.spatial.distance.cdist
self.assertTrue
nearpy.hashes.permutation.permutedIndex.PermutedIndex
self.HashPermutations.super.__init__
self.nearest_filter.filter_vectors
numpy.linalg.eig
numpy.linalg.norm
self.permute
engine_list.index
self.mongo_object.find
distance.distance
abs
engine.clean_all_buckets
list.remove
nearpy.Engine.neighbours
y.x.toarray
AttributeError
self.rbp.reset
self.redis_storage.store_hash_configuration
child_hash.keys.append
random.randint
xrange
data.append
self.bin_width.v.self.normals_csr.dot.floor.toarray
self.threshold_filter.filter_vectors
scipy.sparse.rand
self.V.append
self.redis_object.scan_iter
row.append
nearpy.hashes.PCABinaryProjections
self._append_distances
self._format_mongo_key
dists.reshape.reshape
print
self.__vector_to_string
itertools.repeat
nearpy.utils.perform_pca
logging.info
self.storage.get_all_bucket_keys
self.redis_object.lrange
numpy.random.randn.ravel
val_dict.pop
set
numpy.array
bitarray
nearpy.examples.example1
nearpy.hashes.permutation.permute.Permute.permute
query.reshape.reshape
self.permuted_keys
id
y.toarray.ravel.toarray
self._add_vector
bisect.bisect_left
nearpy.hashes.permutation.permute.Permute
RandomBinaryProjectionTreeNode
self.assertSequenceEqual
self.MongoStorageTest.super.setUp
bucket_keys.extend
get_bucket_items
self.bin_width.v.self.components_csr.dot.floor
scipy.argsort
numpy.ones
self.permutation.get_neighbour_keys
sorted.union
nearpy.storage.MongoStorage
self.permutations.build_permuted_index
self.MemoryStorageTest.super.setUp
self.components_csr.dot
scipy.sparse.issparse
numpy.fromstring
len
self.mongo_object.remove
nearpy.Engine.store_vector
numpy.random.seed
self.mongo_object.insert_one
self.childs.values
self.normals_csr.dot
engine_rbpt.storage.buckets.keys
self.check_store_many_vectors
self.unique.filter_vectors
sorted.reshape
self.storage.clean_buckets
list
W.append
self.mongo_object.find_one
self.tree_root.insert_entry_for_bucket
v.self.components_csr.dot.toarray
nearpy.experiments.RecallPrecisionExperiment.perform_experiment
self._format_hash_prefix
nearpy.hashes.PCADiscretizedProjections.reset
nearpy.hashes.permutation.permute.Permute.search_revert
self.HashPermutationMapper.super.__init__
self.get_bucket
setuptools.find_packages
original_keys.append
x.toarray.ravel
self.assertLess
nearpy.filters.DistanceThresholdFilter
y.normalized_x.numpy.abs.max
numpy.asarray
numpy.sum
self._format_redis_key
nearpy.utils.numpy_array_from_list_or_numpy_array
nearpy.hashes.HashPermutations.build_permuted_index
pipeline.delete
self.distance.distance.extend
numpy.reshape
hash_char.self.childs.bucket_keys_to_guarantee_result_set_size
Exception
self.redis_object.rpush
self.check_store_vector
max
enumerate
numpy.sqrt
scipy.sparse.isspmatrix_csr
y.x.toarray.ravel
nearpy.storage.MemoryStorage
float
numpy.absolute
check_distance_symmetry
self._get_candidates
zip
isinstance
row.pickle.loads.get
self.bin_width.v.self.components_csr.dot.floor.toarray
self.hash_configs.get
numpy.abs
col.append
future.utils.viewkeys
self.PCABinaryProjections.super.__init__
range
type
nearpy.Engine.delete_vector
future.builtins.range
self.pdp.hash_vector
self.redis_object.get
self.distance.distance
unique_dict.values
intersection
nearpy.hashes.PCADiscretizedProjections
nearpy.distances.EuclideanDistance
nearpy.hashes.RandomBinaryProjectionTree.hash_vector
self.permuted_keys.append
numpy.random.randn
lshash.hash_vector
self.permutes.append
numpy.argsort
nearpy.hashes.PCADiscretizedProjections.apply_config
self.check_delete
self.storage.store_many_vectors
join
child_hash.keys
b.a.count
self.engine_perm.store_vector
numpy.flipud
sorted
numpy.floor
numpy.asarray.tocsr
set.remove
self.store_vector
nearpy.hashes.UniBucket
self.storage.get_bucket
result.append
self.memory.store_hash_configuration
future.builtins.zip
nearpy.hashes.RandomBinaryProjectionTree.apply_config
self._apply_filter
numpy.random.RandomState
min
print_results
self.tree_root.bucket_keys_to_guarantee_result_set_size
nearpy.Engine
nearpy.storage.RedisStorage
numpy.cov
bucket_key.hash_name.self.buckets.append
super
lshash.get_config
self.query_indices.append
nearpy.hashes.RandomBinaryProjections
self.permutations.add_child_hash
self.pbp.hash_vector
nearpy.utils.utils.unitvec
nearpy.Engine.candidate_count
scipy.sort
scipy.sparse.isspmatrix_coo
past.builtins.xrange
pipeline.execute
pipeline.rpush
numpy.array_str
self.permuted_lists.append
self.assertIsNone
get_bucket_keys
self.engine_perm.neighbours
self.hamming_distance
numpy.zeros
test_obj.assertLessEqual
self.storage.clean_all_buckets
self.redis_storage.load_hash_configuration
self.fill_engine
permutedIndex.get_neighbour_keys
nearpy.hashes.HashPermutations.add_child_hash
int
nearpy.distances.CosineDistance.distance
nearpy.hashes.HashPermutations
self._iter_bucket_keys
sorted.append
self.permutation.build_permuted_index
child_hash.reset
y.toarray.ravel
nearpy.experiments.RecallPrecisionExperiment
self._get_bucket_rows
x.to01
arg.decode
self.storage.store_vector
open
numpy.vstack
nearpy.hashes.HashPermutationMapper
test_obj.assertTrue
pytest.main
numpy.transpose
self.RedisStorageTest.super.setUp
child.collect_all_bucket_keys
bucket_keys.append
nearpy.filters.NearestFilter
numpy.round
lshash.reset
self.storage.delete_vector
str
pickle.loads.get
self.RandomDiscretizedProjections.super.__init__
pickle.loads
self.UniBucket.super.__init__
future.builtins.bytes
self.check_delete_vector
logging.basicConfig
self.rand.randn
fetch_vector_filter.filter_vectors
unittest.main
mongomock.MongoClient

@developer Could please help me check this issue? May I pull a request to fix it? Thank you very much.