{ "info": { "author": "ngoguey", "author_email": "nicolas.goguey@delair.aero", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "Intended Audience :: Developers", "Intended Audience :: Information Technology", "Intended Audience :: Science/Research", "License :: OSI Approved :: Apache Software License", "Operating System :: OS Independent", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7", "Topic :: Scientific/Engineering :: GIS" ], "description": "# `buzzard`\nIn a nutshell, the `buzzard` library provides powerful abstractions to manipulate together images and geometries that come from different kind of sources (`GeoTIFF`, `PNG`, `GeoJSON`, `Shapefile`, `numpy array`, `buzzard pipelines`, ...).\n\n
\n

\n
\n\n[![license](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://github.com/airware/buzzard/blob/master/LICENSE)[![CircleCI](https://circleci.com/gh/airware/buzzard/tree/master.svg?style=shield&circle-token=9d41310f0eb3f8ff120a7103ba2d7ee5d5d628b7)](https://circleci.com/gh/airware/buzzard/tree/master)[![codecov](https://codecov.io/gh/airware/buzzard/branch/master/graph/badge.svg?token=FbWmLGplCq)](https://codecov.io/gh/airware/buzzard)[![readthedoc](https://readthedocs.org/projects/buzzard/badge/?version=latest&style=flat)](https://buzzard.readthedocs.io/en/latest)\n\n[\n![Join us on Slack!](https://cdn.brandfolder.io/5H442O3W/as/pl54cs-bd9mhs-3jsgg0/btn-add-to-slack_1x.png?height=25)\n](https://join.slack.com/t/buzzard-python/shared_invite/enQtNjY0NDQ2MzU3MzgzLTk4N2U4NGZjZmZiYWRhODAwY2U1MjU3ZGM4YTI3YjMwYmU4YjE2Y2E3ODdjZTUyYTFmZDY1YzEzNDUxN2YwMWI)\n\n\n\n## `buzzard` is\n- A _python_ library.\n- Primarily designed to hide all cumbersome operations when doing data-science with [GIS](https://en.wikipedia.org/wiki/Geographic_information_system) files.\n- A Multipurpose computer vision library, it can be used in all kind of situations where images or geometries are involved.\n- A pythonic wrapper for _osgeo_'s _gdal_/_ogr_/_osr_.\n- A solution to work with arbitrary large images by simplifying and automating the manipulation of image slices.\n- Developed at [Delair](https://delair.aero) where it is used in several deep learning and algorithmic projects.\n\n## `buzzard` contains\n- A [`Dataset`](https://buzzard.readthedocs.io/en/latest/dataset.html) class that oversees all opened raster and vector files in order to share resources.\n- An immutable toolbox class, the [`Footprint`](https://buzzard.readthedocs.io/en/latest/footprint.html), designed to locate a rectangle in both image space and geometry space.\n\n## How to open and read files\nThis example demonstrates how to visualize a large raster polygon per polygon.\n\n```py\nimport buzzard as buzz\nimport numpy as np\nimport matplotlib.pyplot as plt\n\n# Open the files. Only files' metadata are read so far\nr = buzz.open_raster('path/to/rgba-image.tif')\nv = buzz.open_vector('path/to/polygons.geojson', driver='GeoJSON')\n\n\n# Load the polygons from disk one by one as shapely objects\nfor poly in v.iter_data():\n\n # Compute the Footprint bounding `poly`\n fp = r.fp.intersection(poly)\n print(fp)\n\n # Load the image from disk at `fp` to a numpy array\n rgb = r.get_data(fp=fp, channels=(0, 1, 2))\n alpha = r.get_data(fp=fp, channels=3)\n\n # Create a boolean mask as a numpy array from the shapely polygon\n mask = np.invert(fp.burn_polygons(poly))\n\n # Darken pixels outside of polygon, set transparent pixels to orange\n rgb[mask] = (rgb[mask] * 0.5).astype(np.uint8)\n rgb[alpha == 0] = [236, 120, 57]\n\n # Show the result with matplotlib\n plt.imshow(rgb)\n plt.show()\n\n```\nImages from the [ISPRS's Potsdam dataset](http://www2.isprs.org/commissions/comm3/wg4/2d-sem-label-potsdam.html).\n\n`Footprint(tl=(3183.600000, -914.550000), br=(3689.700000, -1170.450000), size=(506.100000, 255.900000), rsize=(3374, 1706))`\n\n
\n

\n
\n\n`Footprint(tl=(3171.600000, -1321.500000), br=(4553.400000, -2400.000000), size=(1381.800000, 1078.500000), rsize=(9212, 7190))`\n\n
\n

\n
\n\n## How to create files and manipulate _Footprints_\n```py\nimport buzzard as buzz\nimport numpy as np\nimport matplotlib.pyplot as plt\nimport keras\n\nr = buzz.open_raster('path/to/rgba-image.tif')\nkm = keras.models.load_model('path/to/deep-learning-model.hdf5')\n\n# Chunk the raster's Footprint to Footprints of size\n# 1920 x 1080 pixel stored in a 2d numpy array\ntiles = r.fp.tile(1920, 1080)\n\nall_roads = []\n\nfor i, fp in enumerate(tiles.flat):\n rgb = r.get_data(fp=fp, channels=(0, 1, 2))\n\n # Perform pixelwise semantic segmentation with a keras model\n predictions_heatmap = km.predict(rgb[np.newaxis, ...])[0]\n predictions_top1 = np.argmax(predictions_heatmap, axis=-1)\n\n # Save the prediction to a `geotiff`\n with buzz.create_raster(path='predictions_{}.tif'.format(i), fp=fp,\n dtype='uint8', channel_count=1).close as out:\n out.set_data(predictions_top1)\n\n # Extract the road polygons by transforming a numpy boolean mask to shapely polygons\n road_polygons = fp.find_polygons(predictions_top1 == 3)\n all_roads += road_polygons\n\n # Show the result with matplotlib for one tile\n if i == 2:\n plt.imshow(rgb)\n plt.imshow(predictions_top1)\n plt.show()\n\n# Save all roads found to a single `shapefile`\nwith buzz.create_vector(path='roads.shp', type='polygon').close as out:\n for poly in all_roads:\n out.inser_data(poly)\n\n```\n\n
\n

\n
\n\n
\n

\n
\n\n## Advanced examples\nAdditional examples can be found here:\n- [Files and _Footprints_ in depth](https://github.com/airware/buzzard/blob/master/doc/examples.ipynb)\n- [_async rasters_ in depth](https://github.com/airware/buzzard/blob/master/doc/notebook2/async_rasters.ipynb)\n\n## `buzzard` allows\n- Opening and creating [raster](https://buzzard.readthedocs.io/en/latest/dataset_raster.html) and [vector](https://buzzard.readthedocs.io/en/latest/dataset_vector.html) files. Supports all [GDAL drivers (GTiff, PNG, ...)](https://www.gdal.org/formats_list.html) and all [OGR drivers (GeoJSON, DXF, Shapefile, ...)](https://www.gdal.org/ogr_formats.html).\n- [Reading](https://buzzard.readthedocs.io/en/latest/source_gdal_file_raster.html#raster-file-get-data) raster files pixels from disk to _numpy.ndarray_.\n - _Options:_ `sub-rectangle reading`, `rotated and scaled sub-rectangle reading (thanks to on-the-fly remapping with OpenCV)`, `automatic parallelization of read and remapping (soon)`, `async (soon)`, `be the source of an image processing pipeline (soon)`.\n - _Properties:_ `thread-safe`\n- [Writing](https://buzzard.readthedocs.io/en/latest/source_gdal_file_raster.html#raster-file-set-data) raster files pixels to disk from _numpy.ndarray_.\n - _Options:_ `sub-rectangle writing`, `rotated and scaled sub-rectangle writing (thanks to on-the-fly remapping with OpenCV)`, `masked writing`.\n- [Reading](https://buzzard.readthedocs.io/en/latest/source_gdal_file_vector.html#vector-file-iter-data) vector files geometries from disk to _shapely objects_, _geojson dict_ and _raw coordinates_.\n - _Options:_ `masking`.\n - _Properties:_ `thread-safe`\n- [Writing](https://buzzard.readthedocs.io/en/latest/source_gdal_file_vector.html#vector-file-insert-data) vector files geometries to disk from _shapely objects_, _geojson dict_ and _raw coordinates_.\n- Powerful manipulations of [raster windows](https://buzzard.readthedocs.io/en/latest/footprint.html)\n- [Instantiation](https://buzzard.readthedocs.io/en/latest/dataset_recipe.html#buzzard.Dataset.create_raster_recipe) of image processing pipelines where each node is a raster, and each edge is a user defined python function working on _numpy.ndarray_ (beta, partially implemented).\n - _Options:_ `automatic parallelization using user defined thread or process pools`, `disk caching`.\n - _Properties:_ `lazy evaluation`, `deterministic`, `automatic tasks chunking into tiles`, `fine grain task prioritization`, `backpressure prevention`.\n- [Spatial reference homogenization](https://buzzard.readthedocs.io/en/latest/dataset.html#on-the-fly-re-projections-in-buzzard) between opened files like a GIS software does (beta)\n\n## Documentation\nhttps://buzzard.readthedocs.io/\n\n## Dependencies\nThe following table lists dependencies along with the minimum version, their status for the project and the related license.\n\n| Library | Version | Mandatory | License | Comment |\n|------------------|----------|-----------|--------------------------------------------------------------------------------------|---------------------------------------------------------------|\n| gdal | >=2.3.3 | Yes | [MIT/X](https://github.com/OSGeo/gdal/blob/trunk/gdal/LICENSE.TXT) | Hard to install. Will be included in `buzzard` wheels |\n| opencv-python | >=3.1.0 | Yes | [3-clause BSD](http://opencv.org/license.html) | Easy to install with `opencv-python` wheels. Will be optional |\n| shapely | >=1.6.1 | Yes | [3-clause BSD](https://github.com/Toblerity/Shapely/blob/master/LICENSE.txt) | |\n| affine | >=2.0.0 | Yes | [3-clause BSD](https://github.com/sgillies/affine/blob/master/LICENSE.txt) | |\n| numpy | >=1.15.0 | Yes | [numpy](https://docs.scipy.org/doc/numpy-1.10.0/license.html) | |\n| scipy | >=0.19.1 | Yes | [scipy](https://www.scipy.org/scipylib/license.html) | |\n| pint | >=0.8.1 | Yes | [3-clause BSD](https://github.com/hgrecco/pint/blob/master/LICENSE) | |\n| six | >=1.11.0 | Yes | [MIT](https://github.com/benjaminp/six/blob/master/LICENSE) | |\n| sortedcontainers | >=1.5.9 | Yes | [apache](https://github.com/grantjenks/python-sortedcontainers/blob/master/LICENSE) | |\n| Rtree | >=0.8.3 | Yes | [MIT](https://github.com/Toblerity/rtree/blob/master/LICENSE.txt) | |\n| scikit-image | >=0.14.0 | Yes | [scikit-image](https://github.com/scikit-image/scikit-image/blob/master/LICENSE.txt) | |\n| chainmap | >=1.0.2 | Yes | [Python 2.7 license](https://bitbucket.org/jeunice/chainmap) | Only for python <3.2 |\n| pytest | >=3.2.2 | No | [MIT](https://docs.pytest.org/en/latest/license.html) | Only for tests |\n| attrdict | >=2.0.0 | No | [MIT](https://github.com/bcj/AttrDict/blob/master/LICENSE.txt) | Only for tests |\n\n## How to install from terminal\n### Anaconda and pip\n```sh\n# Step 1 - Install Anaconda\n# https://www.anaconda.com/download/\n\n# Step 2 - Create env\nconda create -n buzz python gdal>=2.3.3 shapely rtree -c 'conda-forge'\n\n# Step 3 - Activate env\nconda activate buzz\n\n# Step 4 - Install buzzard\npip install buzzard\n```\n\n### Docker\n```sh\ndocker build -t buzz --build-arg PYTHON_VERSION=3.7 https://raw.githubusercontent.com/airware/buzzard/master/.circleci/images/base-python/Dockerfile\ndocker run -it --rm buzz bash\npip install buzzard\n\n```\n\n### Package manager and pip\n```sh\n# Step 1 - Install GDAL and rtree ******************************************* **\n# Windows\n# https://www.lfd.uci.edu/~gohlke/pythonlibs/#gdal\n# https://www.lfd.uci.edu/~gohlke/pythonlibs/#rtree\n\n# MacOS\nbrew install gdal\nbrew tap osgeo/osgeo4mac\nbrew tap --repair\nbrew install gdal2\nbrew install spatialindex\nexport PATH=\"/usr/local/opt/gdal2/bin:$PATH\"\npython3 -m pip install 'gdal==2.3.3'\n\n# Ubuntu\n# Run the commands from the following Dockerfile:\n# https://github.com/airware/buzzard/blob/master/doc/ubuntu_install/Dockerfile\n\n# Step 2 - Install buzzard ************************************************** **\npython3 -m pip install buzzard\n\n```\n\n## Supported Python versions\nTo enjoy the latest buzzard features, update your python!\n\n#### Full python support\n- Latest supported version: `3.7` (June 2018)\n- Oldest supported version: `3.4` (March 2014)\n\n#### Partial python support\n- `2.7`: use buzzard version `0.4.4`\n\n## Slack\nYou want some help? You have a question? You want to contribute? Join us on Slack!\n\n[\n![Join us on Slack!](https://cdn.brandfolder.io/5H442O3W/as/pl54cs-bd9mhs-3jsgg0/btn-add-to-slack_1x.png?height=42)\n](https://join.slack.com/t/buzzard-python/shared_invite/enQtNjY0NDQ2MzU3MzgzLTk4N2U4NGZjZmZiYWRhODAwY2U1MjU3ZGM4YTI3YjMwYmU4YjE2Y2E3ODdjZTUyYTFmZDY1YzEzNDUxN2YwMWI)\n\n## How to test\n```sh\ngit clone https://github.com/airware/buzzard\npip install -r buzzard/requirements-dev.txt\npytest buzzard/buzzard/test\n```\n\n## How to build documentation\n```sh\ncd docs\nmake html\nopen _build/html/index.html\n```\n\n## Contributions and feedback\nWelcome to the `buzzard` project! We appreciate any contribution and feedback, your proposals and pull requests will be considered and responded to. For more information, see the [`CONTRIBUTING.md`](./CONTRIBUTING.md) file.\n\n## Authors\nSee [AUTHORS](./AUTHORS.md)\n\n## License and Notice\nSee [LICENSE](./LICENSE) and [NOTICE](./NOTICE).\n\n## Other pages\n- [TODO](https://www.notion.so/buzzard/2c94ef6ee8da4d6280834129cc00f4d2?v=334ead18796342feb32ba85ccdfcf69f) on `notion.so`\n\n------------------------------------------------------------------------------------------------------------------------", "description_content_type": "text/markdown", "docs_url": null, "download_url": "https://github.com/airware/buzzard/archive/0.6.4.tar.gz", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/airware/buzzard", "keywords": "gdal gis raster shp dxf tif vector", "license": "Apache License 2.0", "maintainer": "ngoguey", "maintainer_email": "nicolas.goguey@delair.aero", "name": "buzzard", "package_url": "https://pypi.org/project/buzzard/", "platform": "", "project_url": "https://pypi.org/project/buzzard/", "project_urls": { "Download": "https://github.com/airware/buzzard/archive/0.6.4.tar.gz", "Homepage": "https://github.com/airware/buzzard" }, "release_url": "https://pypi.org/project/buzzard/0.6.4/", "requires_dist": null, "requires_python": ">=3.4", "summary": "GIS files manipulations", "version": "0.6.4" }, "last_serial": 5697561, "releases": { "0.3.0": [ { "comment_text": "", "digests": { "md5": "d7ff4255993fe4fd504d0d9292cd05e0", "sha256": "0e39b92bfca27e1a50ecef745a81c87a7f5134788ed257c29c406eb480a55fc3" }, "downloads": -1, "filename": "buzzard-0.3.0.tar.gz", "has_sig": false, "md5_digest": "d7ff4255993fe4fd504d0d9292cd05e0", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 78146, "upload_time": "2018-01-31T18:03:33", "url": "https://files.pythonhosted.org/packages/af/e0/7a3938c3d01d5cc5b4a4324c992d2084654244eeb39145ee25f8545ccad0/buzzard-0.3.0.tar.gz" } ], "0.3.1": [ { "comment_text": "", "digests": { "md5": "28ed3014fabf3e1d49d6827ed4a4444b", "sha256": "e6b67cc8fe7a4572ae175e10083e7cf9238435e4bd2dd6c57262d71c9cb5a311" }, "downloads": -1, "filename": "buzzard-0.3.1.tar.gz", "has_sig": false, "md5_digest": "28ed3014fabf3e1d49d6827ed4a4444b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 78143, "upload_time": "2018-02-19T17:44:51", "url": "https://files.pythonhosted.org/packages/4a/1f/9a99d3d273fa445a435a4af57c46637b295913c5d57fc44465743409f295/buzzard-0.3.1.tar.gz" } ], "0.3.2": [ { "comment_text": "", "digests": { "md5": "b949828050d858d097f1f9ae83bd170c", "sha256": "0304517f69e7da9ca20a39ef7f4684f12e15296018618f339de664927423b100" }, "downloads": -1, "filename": "buzzard-0.3.2.tar.gz", "has_sig": false, "md5_digest": "b949828050d858d097f1f9ae83bd170c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 79754, "upload_time": "2018-03-07T15:29:38", "url": "https://files.pythonhosted.org/packages/15/21/c8a15c240391da18bd3a17dee5d109d95806231a2b44878ba57d6f56c7a6/buzzard-0.3.2.tar.gz" } ], "0.4.0": [ { "comment_text": "", "digests": { "md5": "d0d23411e114071c5a41bd3f93cb2d35", "sha256": "ac7b88b1984c4caa6d4a60d26de39ae2520f5150d398ea0c44df4fd1d163122d" }, "downloads": -1, "filename": "buzzard-0.4.0.tar.gz", "has_sig": false, "md5_digest": "d0d23411e114071c5a41bd3f93cb2d35", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 92608, "upload_time": "2018-03-26T09:56:45", "url": "https://files.pythonhosted.org/packages/d8/57/a6400a09655ebc7e8ae6ce4f157e82346af12c748ca9bfa9a3a590706b03/buzzard-0.4.0.tar.gz" } ], "0.4.1": [ { "comment_text": "", "digests": { "md5": "2c850e73db41ee168cdb98453fd35181", "sha256": "ebb603d489de9fa0d8ebe28c78f1636d479ac7c433a6421e37a0a8eb017fd025" }, "downloads": -1, "filename": "buzzard-0.4.1.tar.gz", "has_sig": false, "md5_digest": "2c850e73db41ee168cdb98453fd35181", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 92645, "upload_time": "2018-04-04T09:26:38", "url": "https://files.pythonhosted.org/packages/df/f0/d58122db6353c708a22e3a3aa8240c25187a1f3174598ad494d976b29352/buzzard-0.4.1.tar.gz" } ], "0.4.2": [ { "comment_text": "", "digests": { "md5": "09827748bf141426879f3708207e06cf", "sha256": "c5dcad51d180db02d6cc072cfdb5b6a99a36d017309c4da1d3c2f03139a478d9" }, "downloads": -1, "filename": "buzzard-0.4.2.tar.gz", "has_sig": false, "md5_digest": "09827748bf141426879f3708207e06cf", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 92814, "upload_time": "2018-04-13T10:11:53", "url": "https://files.pythonhosted.org/packages/0e/cd/cb88b58a33fa2b95d1c7c169d050d7e2a5fed55e306935e5ae97e6e9c078/buzzard-0.4.2.tar.gz" } ], "0.4.3": [ { "comment_text": "", "digests": { "md5": "55efe456cef2be4263e72de8982d70f5", "sha256": "08c620358e992342d5f5b8cab9ef55e32ffd0fac08c88f9e0aa433405111b129" }, "downloads": -1, "filename": "buzzard-0.4.3.tar.gz", "has_sig": false, "md5_digest": "55efe456cef2be4263e72de8982d70f5", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 94265, "upload_time": "2018-06-25T15:24:59", "url": "https://files.pythonhosted.org/packages/c6/58/ff92301c050a4e9684053d7ef67d8c8bb57b5e778cf468f20cf0b3e1f9dc/buzzard-0.4.3.tar.gz" } ], "0.4.4": [ { "comment_text": "", "digests": { "md5": "21d2dcd0571b27318e63b3994115fef7", "sha256": "dc08c7ec5535f27f2479ee006e58ad75d4e0445ed692d6bd2fd6b50c71ee1e61" }, "downloads": -1, "filename": "buzzard-0.4.4.tar.gz", "has_sig": false, "md5_digest": "21d2dcd0571b27318e63b3994115fef7", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 95856, "upload_time": "2018-07-17T14:10:12", "url": "https://files.pythonhosted.org/packages/75/47/106195e2c1c6767e6213275b5f11d5b1d9a6257130434c0922542306cb2f/buzzard-0.4.4.tar.gz" } ], "0.5.0": [ { "comment_text": "", "digests": { "md5": "333c98545e9332bd5d95fcea31d7361a", "sha256": "a8ce02337a064487425d5c33ea770b0ad50ba8f48086cc99e679936e8a62daf5" }, "downloads": -1, "filename": "buzzard-0.5.0.tar.gz", "has_sig": false, "md5_digest": "333c98545e9332bd5d95fcea31d7361a", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.4", "size": 147372, "upload_time": "2019-04-08T16:18:54", "url": "https://files.pythonhosted.org/packages/43/f2/f95b547b0ae8c28417fe30f648f33139b07e03dd5f594541f8d438a384de/buzzard-0.5.0.tar.gz" } ], "0.5.0b0": [ { "comment_text": "", "digests": { "md5": "d178389d54b4cccaace8228c31802193", "sha256": "0ea24804d8b95819a2c2b3a55a2d8c34d3888bd0bfff0bd863a1ba219bf13fe3" }, "downloads": -1, "filename": "buzzard-0.5.0b0.tar.gz", "has_sig": false, "md5_digest": "d178389d54b4cccaace8228c31802193", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.4", "size": 99485, "upload_time": "2018-08-31T11:53:33", "url": "https://files.pythonhosted.org/packages/67/cf/dcbe2690e2ebf464c9123e24d4c057978c04f2dd7544c22a9579c9c1b131/buzzard-0.5.0b0.tar.gz" } ], "0.6.0": [ { "comment_text": "", "digests": { "md5": "7cdf8b317fe23371bbab1bb9525785af", "sha256": "003b2d08dc756632180bbb03f041e1eb25355344c56a409ac067d555d1a61cb5" }, "downloads": -1, "filename": "buzzard-0.6.0.tar.gz", "has_sig": false, "md5_digest": "7cdf8b317fe23371bbab1bb9525785af", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.4", "size": 150250, "upload_time": "2019-05-22T12:02:38", "url": "https://files.pythonhosted.org/packages/54/7b/b7aef3a12a0c73046769fb09dadbc27629fc7743b7e6f4f8f0d760a131b1/buzzard-0.6.0.tar.gz" } ], "0.6.1": [ { "comment_text": "", "digests": { "md5": "6e0d92ce3352175939510cd2cb11a1e4", "sha256": "865f46a41605df873cd12beb682c09b9d28ab5aced32018f8e87b61996c6145b" }, "downloads": -1, "filename": "buzzard-0.6.1.tar.gz", "has_sig": false, "md5_digest": "6e0d92ce3352175939510cd2cb11a1e4", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.4", "size": 152121, "upload_time": "2019-05-27T15:47:57", "url": "https://files.pythonhosted.org/packages/f0/d0/55c085412f5b07891714ee6dafa09ec794001c910eb7747f78e402b1e05a/buzzard-0.6.1.tar.gz" } ], "0.6.2": [ { "comment_text": "", "digests": { "md5": "36742c8e36fabef7fc2a9906e2fa88d6", "sha256": "d2fe47717bcf358cd1e886f4163dc102cdd522092e24e8eecd4b7f0a580b4500" }, "downloads": -1, "filename": "buzzard-0.6.2.tar.gz", "has_sig": false, "md5_digest": "36742c8e36fabef7fc2a9906e2fa88d6", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.4", "size": 151696, "upload_time": "2019-06-10T14:04:24", "url": "https://files.pythonhosted.org/packages/73/5b/e913f852008fb631bbc6aa3e9fc4ecb6a1f41c64052090a9564b585c53da/buzzard-0.6.2.tar.gz" } ], "0.6.3": [ { "comment_text": "", "digests": { "md5": "2b2ea3cfd600d53230c90b1fafdc1c7e", "sha256": "2882028fbf343ea89021fa4d709b2fde5af4ce00be83e35a026ce46ae969163e" }, "downloads": -1, "filename": "buzzard-0.6.3.tar.gz", "has_sig": false, "md5_digest": "2b2ea3cfd600d53230c90b1fafdc1c7e", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.4", "size": 157322, "upload_time": "2019-07-22T14:17:46", "url": "https://files.pythonhosted.org/packages/6d/91/402319359cebb44f26c65d9e66bed90dd3c174501eb5b5dca107ffe76d2a/buzzard-0.6.3.tar.gz" } ], "0.6.4": [ { "comment_text": "", "digests": { "md5": "23fe926b949ae307226e81fc718642ad", "sha256": "0ef66d1fa3a743e9d4ff0730b5b5bd3d41fa41a5b2059996017c682f7650a861" }, "downloads": -1, "filename": "buzzard-0.6.4.tar.gz", "has_sig": false, "md5_digest": "23fe926b949ae307226e81fc718642ad", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.4", "size": 154378, "upload_time": "2019-08-19T09:40:20", "url": "https://files.pythonhosted.org/packages/57/24/0835d298b6556f45db005fba4da54dc31d566b6adb42ef14b574da8d6698/buzzard-0.6.4.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "23fe926b949ae307226e81fc718642ad", "sha256": "0ef66d1fa3a743e9d4ff0730b5b5bd3d41fa41a5b2059996017c682f7650a861" }, "downloads": -1, "filename": "buzzard-0.6.4.tar.gz", "has_sig": false, "md5_digest": "23fe926b949ae307226e81fc718642ad", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.4", "size": 154378, "upload_time": "2019-08-19T09:40:20", "url": "https://files.pythonhosted.org/packages/57/24/0835d298b6556f45db005fba4da54dc31d566b6adb42ef14b574da8d6698/buzzard-0.6.4.tar.gz" } ] }