Remove unused file bloomfilter.py

The file is not used.

Change-Id: I6e28b0ace8991037a107fcf31d893f0db1815f4e
This commit is contained in:
Hong Hui Xiao 2017-04-05 11:57:45 +08:00
parent 3d6b5190ad
commit 6fc7a41f69
1 changed files with 0 additions and 60 deletions

View File

@ -1,60 +0,0 @@
# Copyright (c) 2015 OpenStack Foundation.
# All Rights Reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
# a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
import random
class BloomFilter(object):
def __init__(self, num_bytes, num_probes, iterable=()):
"""Bloom filter implementation
Example: Check if number in set
>>> bf = BloomFilter(8, 2, (123, 321, 213, 3123))
>>> 123 in bf
True
>>> 456 in bf
False
:param num_bytes: Number of bytes in the filter
:type num_bytes: int
:param num_probes: Number of bloom filter probes
:type num_probes: int
:param iterable: Iterable set of items to create the filter from
"""
self._array = bytearray(num_bytes)
self._num_probes = num_probes
self._num_bits = num_bytes * 8
self.update(iterable)
@property
def array(self):
return self._array
def _get_probes(self, key):
rdm = random.Random(key).random
return (int(rdm() * self._num_bits)
for _probe in range(self._num_probes))
def update(self, keys):
"""Add keys to the current filter
:param keys: iterable set of keys
"""
for key in keys:
for i in self._get_probes(key):
self._array[i // 8] |= 2 ** (i % 8)
def __contains__(self, key):
return all(self._array[i // 8] & (2 ** (i % 8))
for i in self._get_probes(key))