{"id":26910,"library":"downstream","title":"downstream","description":"downstream provides efficient, constant-space algorithms for stream curation, including deduplication, filtering, and counting. Current version 1.22.0 supports Python >=3.10. Releases are regular, with breaking changes documented in changelog.","status":"active","version":"1.22.0","language":"python","source_language":"en","source_url":"https://github.com/your-repo/downstream","tags":["streaming","bloom-filter","count-min-sketch","deduplication","probabilistic-data-structures"],"install":[{"cmd":"pip install downstream","lang":"bash","label":"Install downstream"}],"dependencies":[],"imports":[{"note":"BloomFilter was moved to top-level in v1.0","wrong":"from downstream.bloom import BloomFilter","symbol":"BloomFilter","correct":"from downstream import BloomFilter"},{"note":"Must import explicitly; module top-level exposes classes","wrong":"import downstream","symbol":"CountMinSketch","correct":"from downstream import CountMinSketch"}],"quickstart":{"code":"from downstream import BloomFilter\nbf = BloomFilter(capacity=1000, error_rate=0.01)\nbf.add('item1')\nprint('item1' in bf)  # True","lang":"python","description":"Create a Bloom filter, add an item, and test membership."},"warnings":[{"fix":"Use keyword arguments: BloomFilter(capacity=..., error_rate=...)","message":"In v1.0, BloomFilter constructor changed from (size, num_hashes) to (capacity, error_rate). Old code using positional arguments will break.","severity":"breaking","affected_versions":">=1.0"},{"fix":"Use CountingBloomFilter if deletion is needed.","message":"BloomFilter does not support deletion. Attempting to remove items silently does nothing.","severity":"gotcha","affected_versions":"all"},{"fix":"Import utilities directly from downstream: e.g. from downstream import hash_functions","message":"The `downstream.utils` module is deprecated since v1.15 and will be removed in v2.0.","severity":"deprecated","affected_versions":">=1.15, <2.0"}],"env_vars":null,"last_verified":"2026-05-01T00:00:00.000Z","next_check":"2026-07-30T00:00:00.000Z","problems":[{"fix":"Use 'from downstream import BloomFilter'","cause":"Trying to import from submodule (downstream.bloom) which is removed in v1.0+","error":"ImportError: cannot import name 'BloomFilter' from 'downstream'"},{"fix":"Use 'BloomFilter(capacity=..., error_rate=...)'","cause":"Using old constructor signature (size, num_hashes)","error":"TypeError: BloomFilter.__init__() got an unexpected keyword argument 'size'"}],"ecosystem":"pypi","meta_description":null,"install_score":null,"install_tag":null,"quickstart_score":null,"quickstart_tag":null}