Apache DataSketches Python
Copyright 2025 The Apache Software Foundation

Copyright 2015-2018 Yahoo Inc.
Copyright 2019-2020 Verizon Media
Copyright 2021- Yahoo Inc.

This product includes software developed at
The Apache Software Foundation (http://www.apache.org/).

Prior to moving to ASF, the software for this project was developed at
Yahoo Inc. (https://developer.yahoo.com).
