*Mbtiler* manipulates tiles, builds MBTiles, does tiles compositing and arrange tiles together into single images.
Tiles can either be obtained from a remote tile service URL, from a local Mapnik stylesheet,
a WMS server or from MBTiles files.
For building MBTiles, Mbtiler embeds *mbutil* from Mapbox https://github.com/mapbox/mbutil at the final stage.
The land covered is specified using a list of bounding boxes and zoom levels.
.. image:: https://pypip.in/v/Mbtiler/badge.png
:target: https://pypi.python.org/pypi/Mbtiler
.. image:: https://pypip.in/d/Mbtiler/badge.png
:target: https://pypi.python.org/pypi/Mbtiler
.. image:: https://travis-ci.org/makinacorpus/Mbtiler.png
:target: https://travis-ci.org/makinacorpus/Mbtiler
.. image:: https://coveralls.io/repos/makinacorpus/Mbtiler/badge.png
:target: https://coveralls.io/r/makinacorpus/Mbtiler
=======
INSTALL
=======
*Mbtiler* is pure python and has no external dependency. ::
sudo easy_install Mbtiler
However, it requires `mapnik` if the tiles are rendered locally. ::
sudo aptitude install python-mapnik
And `PIL` to blend tiles together or export arranged tiles into images. ::
sudo aptitude install python-imaging
=====
USAGE
=====
Building MBTiles files
======================
Remote tiles
------------
Using a remote tile service (OpenStreetMap.org by default):
::
import logging
from Mbtiler import MBTilesBuilder
logging.basicConfig(level=logging.DEBUG)
mb = MBTilesBuilder(cache=False)
mb.add_coverage(bbox=(-180.0, -90.0, 180.0, 90.0),
zoomlevels=[0, 1])
mb.run()
Please respect `Tile usage policies <http://wiki.openstreetmap.org/wiki/Tile_usage_policy>`
Local rendering
---------------
Using mapnik to render tiles:
::
import logging
from Mbtiler import MBTilesBuilder
logging.basicConfig(level=logging.DEBUG)
mb = MBTilesBuilder(stylefile="yourstyle.xml", filepath="dest.mbtiles")
mb.add_coverage(bbox=(-180.0, -90.0, 180.0, 90.0),
zoomlevels=[0, 1])
mb.run()
And with UTFGrids:
::
import logging
from Mbtiler import MBTilesBuilder
logging.basicConfig(level=logging.DEBUG)
mb = MBTilesBuilder(stylefile="yourstyle.xml",
grid_fields=["field1", "field2", "field3", ...] ,
filepath="dest.mbtiles")
mb.add_coverage(bbox=(-180, -90, 180, 90),
zoomlevels=[0, 1, 2, 3])
mb.run()
From an other MBTiles file
--------------------------
::
import logging
from Mbtiler import MBTilesBuilder
logging.basicConfig(level=logging.DEBUG)
mb = MBTilesBuilder(mbtiles_file="yourfile.mbtiles", filepath="dest.mbtiles")
mb.add_coverage(bbox=(-180.0, -90.0, 180.0, 90.0),
zoomlevels=[0, 1])
mb.run()
From a WMS server
-----------------
::
mb = MBTilesBuilder(wms_server="http://yourserver.com/geoserver/wms",
wms_layers=["ign:departements"],
wms_options=dict(format="image/png",
transparent=True),
filepath="dest.mbtiles")
mb.add_coverage(bbox=([-0.9853,43.6435.1126,44.0639]))
mb.run()
Blend tiles together
====================
Merge multiple sources of tiles (URL, WMS, MBTiles, Mapnik stylesheet) together. *(requires python PIL)*
For example, build a new MBTiles by blending tiles of a MBTiles on top of OpenStreetMap tiles :
::
mb = MBTilesBuilder(filepath="merged.mbtiles")
overlay = TilesManager(mbtiles_file="carto.mbtiles")
mb.add_layer(overlay)
mb.run()
Or composite a WMS layer with OpenStreetMap using transparency (40%):
::
mb = MBTilesBuilder(wms_server="http://yourserver.com/geoserver/wms",
wms_layers=["img:orthophoto"])
overlay = TilesManager(remote=True)
mb.add_layer(overlay, 0.4)
mb.run()
Export Images
=============
Assemble and arrange tiles together into a single image. *(requires python PIL)*
Specify tiles sources in the exact same way as for building MBTiles files.
::
import logging
from Mbtiler import ImageExporter
logging.basicConfig(level=logging.DEBUG)
ie = ImageExporter(mbtiles_file="yourfile.mbtiles")
ie.export_image(bbox=(-180.0, -90.0, 180.0, 90.0), zoomlevel=3, imagepath="image.png")
Add post-processing filters
===========================
Convert map tiles to gray scale, more suitable for information overlay :
::
from Mbtiler.filters import GrayScale
ie = ImageExporter()
ie.add_filter(GrayScale())
Replace a specific color by transparent pixels (i.e. color to alpha, *a-la-Gimp*) :
::
from Mbtiler.filters import ColorToAlpha
overlay = TileManager()
overlay.add_filter(ColorToAlpha('#ffffff')) # white will be transparent
ie = ImageExporter()
ie.add_layer(overlay)
...
Extract MBTiles content
=======================
::
from Mbtiler.sources import MBTilesReader
mbreader = MBTilesReader("yourfile.mbtiles")
# Metadata
print mbreader.metadata()
# Zoom levels
print mbreader.zoomlevels()
# Image tile
with open('tile.png', 'wb') as out:
out.write(mbreader.tile(z, x, y))
# UTF-Grid tile
print mbreader.grid(z, x, y, 'callback')
Manipulate tiles
================
::
from Mbtiler import MBTilesBuilder
# From a TMS tile server
# tm = TilesManager(tiles_url="http://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png")
# From a MBTiles file
tm = TilesManager(mbtiles_file="yourfile.mbtiles")
tiles = tm.tileslist(bbox=(-180.0, -90.0, 180.0, 90.0),
zoomlevels=[0, 1])
for tile in tiles:
tilecontent = tm.tile(tile) # download, extract or take from cache
...
Cache tiles are stored using TMS scheme by default (with ``y`` value flipped). It can be changed to WMTS (a.k.a ``xyz``) :
::
tm = TilesManager(your_sources_options, cache=True, cache_scheme="wmts")
Run tests
=========
Run tests with nosetests (if you are working in a virtualenv, don't forget to install nose in it!):
::
cd Mbtiler
nosetests
The Mapnik stylesheet for the test about grid content comes from <https://github.com/springmeyer/gridsforkids>
=======
AUTHORS
=======
* Mathieu Leplatre <mathieu.leplatre@makina-corpus.com>
* Sergej Tatarincev
* Éric Bréhault
* Waldemar Osuch
* Isabelle Vallet
* Thanks to mbutil authors <https://github.com/mapbox/mbutil>
.. image:: http://depot.makina-corpus.org/public/logo.gif
:target: http://www.makina-corpus.com
=======
LICENSE
=======
* Lesser GNU Public License
=========
CHANGELOG
=========
2.5.1.dev0
==================
*
2.5.0 (2019-04-16)
==================
* Add support of Python 3.
2.4.1 (2019-03-13)
==================
* Do not try to get tiles again when tiles doesn't exist.
2.4.0 (2017-03-02)
==================
* Do not crash when overlay tile data is not a valid image
* Correctly generate metadata for zoom levels
* Add support for tms mbtiles
* Correct tile box calculation for case when floating point value is an integer
* Correctly generate metadata for zoom levels
* Use the full path to construct the cache directory, as otherwise different
tiles sets on the same server are considered to be the same one
* Added a name metadata to prevent Maptiler crash
2.3.0 (2014-11-18)
==================
* Add headers to WMS sources if specified (thanks @sempixel!)
2.2.0 (2014-09-22)
==================
* Add delay between tiles downloads retries (by @kiorky)
* Add option to ignore errors during MBTiles creation (e.g. download errors)
2.1.1 (2013-08-27)
==================
* Do not hard-code ``grid();`` JSONP callback.
2.1.0 (2013-08-27)
==================
* Add TMS support (ebrehault)
* Add default subdomains argument for TileSource
* Add ability to set HTTP headers for tiles
* Fix file corruption on Windows (by @osuchw)
2.0.3 (2013-05-03)
==================
* Fix Mapnik signature on render()
2.0.2 (2012-06-21)
==================
* Prevent the whole image to be converted to grayscale
* Explicitly check http status code at tiles download
2.0.1 (2012-05-29)
==================
* Fix infinite loop on blending layers
2.0.0 (2012-05-25)
==================
* Rework cache mechanism
* Jpeg tiles support (#14)
* Remove use of temporary files
* Image post-processing (#11)
2.0.0-alpha (2012-05-23)
========================
* Refactoring of whole stack
1.8.2 (2012-03-27)
==================
* Fix Mapnik rendering
1.8.1 (2012-02-24)
==================
* Fix MBTiles cache cleaning
1.8 (2012-02-24)
================
* WMS support
* Tiles compositing
1.7 (2012-02-17)
================
* Catch Sqlite exceptions
1.6 (2012-02-08)
================
* UTF-Grid support for MBTiles files
1.5 (2011-12-07)
================
* Subdomain support for tiles servers
* Low level tiles manipulation
* Use i18n
1.4 (2011-10-17)
================
* Remove extra logging message of mbutil
1.3 (2011-09-23)
================
* Export set of tiles into single image
1.2 (2011-06-21)
================
* Raise exception if no tiles in coverages
1.1 (2012-04-18)
================
* Move internals to Mbtiler module
* Split projection into separate module
1.0 (2011-04-18)
================
* Initial working version
Raw data
{
"_id": null,
"home_page": "https://github.com/Elmeslmaney/Mbtiler",
"name": "Mbtiler",
"maintainer": null,
"docs_url": null,
"requires_python": null,
"maintainer_email": null,
"keywords": "MBTiles, Mapnik",
"author": "Elmeslmaney",
"author_email": "mohamedelmeslmaney00@gmail.com",
"download_url": "https://files.pythonhosted.org/packages/90/02/459b9de8254c0cd84d21b742ae0876ce3047ef98701226850058acaac1df/mbtiler-2.5.1.tar.gz",
"platform": null,
"description": "*Mbtiler* manipulates tiles, builds MBTiles, does tiles compositing and arrange tiles together into single images.\r\n\r\nTiles can either be obtained from a remote tile service URL, from a local Mapnik stylesheet,\r\na WMS server or from MBTiles files.\r\n\r\nFor building MBTiles, Mbtiler embeds *mbutil* from Mapbox https://github.com/mapbox/mbutil at the final stage.\r\nThe land covered is specified using a list of bounding boxes and zoom levels.\r\n\r\n\r\n.. image:: https://pypip.in/v/Mbtiler/badge.png\r\n :target: https://pypi.python.org/pypi/Mbtiler\r\n\r\n.. image:: https://pypip.in/d/Mbtiler/badge.png\r\n :target: https://pypi.python.org/pypi/Mbtiler\r\n\r\n.. image:: https://travis-ci.org/makinacorpus/Mbtiler.png\r\n :target: https://travis-ci.org/makinacorpus/Mbtiler\r\n\r\n.. image:: https://coveralls.io/repos/makinacorpus/Mbtiler/badge.png\r\n :target: https://coveralls.io/r/makinacorpus/Mbtiler\r\n\r\n\r\n=======\r\nINSTALL\r\n=======\r\n\r\n*Mbtiler* is pure python and has no external dependency. ::\r\n\r\n sudo easy_install Mbtiler\r\n\r\nHowever, it requires `mapnik` if the tiles are rendered locally. ::\r\n\r\n sudo aptitude install python-mapnik\r\n\r\nAnd `PIL` to blend tiles together or export arranged tiles into images. ::\r\n\r\n sudo aptitude install python-imaging\r\n\r\n=====\r\nUSAGE\r\n=====\r\n\r\nBuilding MBTiles files\r\n======================\r\n\r\nRemote tiles\r\n------------\r\n\r\nUsing a remote tile service (OpenStreetMap.org by default):\r\n::\r\n\r\n import logging\r\n from Mbtiler import MBTilesBuilder\r\n\r\n logging.basicConfig(level=logging.DEBUG)\r\n \r\n mb = MBTilesBuilder(cache=False)\r\n mb.add_coverage(bbox=(-180.0, -90.0, 180.0, 90.0), \r\n zoomlevels=[0, 1])\r\n mb.run()\r\n\r\nPlease respect `Tile usage policies <http://wiki.openstreetmap.org/wiki/Tile_usage_policy>`\r\n\r\nLocal rendering\r\n---------------\r\n\r\nUsing mapnik to render tiles:\r\n\r\n::\r\n\r\n import logging\r\n from Mbtiler import MBTilesBuilder\r\n \r\n logging.basicConfig(level=logging.DEBUG)\r\n \r\n mb = MBTilesBuilder(stylefile=\"yourstyle.xml\", filepath=\"dest.mbtiles\")\r\n mb.add_coverage(bbox=(-180.0, -90.0, 180.0, 90.0),\r\n zoomlevels=[0, 1])\r\n mb.run()\r\n\r\n\r\nAnd with UTFGrids:\r\n\r\n::\r\n\r\n import logging\r\n from Mbtiler import MBTilesBuilder\r\n \r\n logging.basicConfig(level=logging.DEBUG)\r\n \r\n mb = MBTilesBuilder(stylefile=\"yourstyle.xml\",\r\n grid_fields=[\"field1\", \"field2\", \"field3\", ...] ,\r\n filepath=\"dest.mbtiles\")\r\n mb.add_coverage(bbox=(-180, -90, 180, 90),\r\n zoomlevels=[0, 1, 2, 3])\r\n mb.run()\r\n\r\n\r\nFrom an other MBTiles file\r\n--------------------------\r\n::\r\n\r\n import logging\r\n from Mbtiler import MBTilesBuilder\r\n \r\n logging.basicConfig(level=logging.DEBUG)\r\n \r\n mb = MBTilesBuilder(mbtiles_file=\"yourfile.mbtiles\", filepath=\"dest.mbtiles\")\r\n mb.add_coverage(bbox=(-180.0, -90.0, 180.0, 90.0), \r\n zoomlevels=[0, 1])\r\n mb.run()\r\n\r\n\r\nFrom a WMS server\r\n-----------------\r\n::\r\n\r\n mb = MBTilesBuilder(wms_server=\"http://yourserver.com/geoserver/wms\", \r\n wms_layers=[\"ign:departements\"], \r\n wms_options=dict(format=\"image/png\", \r\n transparent=True),\r\n filepath=\"dest.mbtiles\")\r\n mb.add_coverage(bbox=([-0.9853,43.6435.1126,44.0639]))\r\n mb.run()\r\n\r\n\r\n\r\nBlend tiles together\r\n====================\r\n\r\nMerge multiple sources of tiles (URL, WMS, MBTiles, Mapnik stylesheet) together. *(requires python PIL)*\r\n\r\nFor example, build a new MBTiles by blending tiles of a MBTiles on top of OpenStreetMap tiles :\r\n\r\n::\r\n\r\n mb = MBTilesBuilder(filepath=\"merged.mbtiles\")\r\n overlay = TilesManager(mbtiles_file=\"carto.mbtiles\")\r\n mb.add_layer(overlay)\r\n mb.run()\r\n\r\nOr composite a WMS layer with OpenStreetMap using transparency (40%):\r\n\r\n:: \r\n\r\n mb = MBTilesBuilder(wms_server=\"http://yourserver.com/geoserver/wms\", \r\n wms_layers=[\"img:orthophoto\"])\r\n overlay = TilesManager(remote=True)\r\n mb.add_layer(overlay, 0.4)\r\n mb.run()\r\n\r\n\r\nExport Images\r\n=============\r\n\r\nAssemble and arrange tiles together into a single image. *(requires python PIL)*\r\n\r\nSpecify tiles sources in the exact same way as for building MBTiles files.\r\n\r\n::\r\n\r\n import logging\r\n from Mbtiler import ImageExporter\r\n \r\n logging.basicConfig(level=logging.DEBUG)\r\n \r\n ie = ImageExporter(mbtiles_file=\"yourfile.mbtiles\")\r\n ie.export_image(bbox=(-180.0, -90.0, 180.0, 90.0), zoomlevel=3, imagepath=\"image.png\")\r\n\r\n\r\nAdd post-processing filters\r\n===========================\r\n\r\nConvert map tiles to gray scale, more suitable for information overlay :\r\n\r\n::\r\n\r\n from Mbtiler.filters import GrayScale\r\n \r\n ie = ImageExporter()\r\n ie.add_filter(GrayScale())\r\n\r\nReplace a specific color by transparent pixels (i.e. color to alpha, *a-la-Gimp*) :\r\n\r\n::\r\n\r\n from Mbtiler.filters import ColorToAlpha\r\n \r\n overlay = TileManager()\r\n overlay.add_filter(ColorToAlpha('#ffffff')) # white will be transparent\r\n \r\n ie = ImageExporter()\r\n ie.add_layer(overlay)\r\n ...\r\n\r\n\r\nExtract MBTiles content\r\n=======================\r\n\r\n:: \r\n\r\n from Mbtiler.sources import MBTilesReader\r\n \r\n mbreader = MBTilesReader(\"yourfile.mbtiles\")\r\n \r\n # Metadata\r\n print mbreader.metadata()\r\n \r\n # Zoom levels\r\n print mbreader.zoomlevels()\r\n \r\n # Image tile\r\n with open('tile.png', 'wb') as out:\r\n out.write(mbreader.tile(z, x, y))\r\n \r\n # UTF-Grid tile\r\n print mbreader.grid(z, x, y, 'callback')\r\n\r\n\r\n\r\nManipulate tiles\r\n================\r\n\r\n::\r\n\r\n from Mbtiler import MBTilesBuilder\r\n \r\n # From a TMS tile server\r\n # tm = TilesManager(tiles_url=\"http://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png\")\r\n \r\n # From a MBTiles file\r\n tm = TilesManager(mbtiles_file=\"yourfile.mbtiles\")\r\n \r\n tiles = tm.tileslist(bbox=(-180.0, -90.0, 180.0, 90.0), \r\n zoomlevels=[0, 1])\r\n for tile in tiles:\r\n tilecontent = tm.tile(tile) # download, extract or take from cache\r\n ...\r\n\r\nCache tiles are stored using TMS scheme by default (with ``y`` value flipped). It can be changed to WMTS (a.k.a ``xyz``) :\r\n\r\n::\r\n\r\n tm = TilesManager(your_sources_options, cache=True, cache_scheme=\"wmts\")\r\n\r\n\r\nRun tests\r\n=========\r\n\r\nRun tests with nosetests (if you are working in a virtualenv, don't forget to install nose in it!):\r\n\r\n::\r\n \r\n cd Mbtiler\r\n nosetests\r\n\r\nThe Mapnik stylesheet for the test about grid content comes from <https://github.com/springmeyer/gridsforkids>\r\n\r\n\r\n=======\r\nAUTHORS\r\n=======\r\n\r\n * Mathieu Leplatre <mathieu.leplatre@makina-corpus.com>\r\n * Sergej Tatarincev\r\n * \u00c3\u2030ric Br\u00c3\u00a9hault\r\n * Waldemar Osuch\r\n * Isabelle Vallet\r\n * Thanks to mbutil authors <https://github.com/mapbox/mbutil>\r\n\r\n\r\n.. image:: http://depot.makina-corpus.org/public/logo.gif\r\n :target: http://www.makina-corpus.com\r\n\r\n=======\r\nLICENSE\r\n=======\r\n\r\n * Lesser GNU Public License\r\n\r\n\r\n=========\r\nCHANGELOG\r\n=========\r\n\r\n2.5.1.dev0\r\n==================\r\n\r\n*\r\n\r\n\r\n2.5.0 (2019-04-16)\r\n==================\r\n\r\n* Add support of Python 3.\r\n\r\n\r\n2.4.1 (2019-03-13)\r\n==================\r\n\r\n* Do not try to get tiles again when tiles doesn't exist.\r\n\r\n\r\n2.4.0 (2017-03-02)\r\n==================\r\n\r\n* Do not crash when overlay tile data is not a valid image\r\n* Correctly generate metadata for zoom levels\r\n* Add support for tms mbtiles\r\n* Correct tile box calculation for case when floating point value is an integer\r\n* Correctly generate metadata for zoom levels\r\n* Use the full path to construct the cache directory, as otherwise different\r\n tiles sets on the same server are considered to be the same one\r\n* Added a name metadata to prevent Maptiler crash\r\n\r\n\r\n2.3.0 (2014-11-18)\r\n==================\r\n\r\n* Add headers to WMS sources if specified (thanks @sempixel!)\r\n\r\n\r\n2.2.0 (2014-09-22)\r\n==================\r\n\r\n* Add delay between tiles downloads retries (by @kiorky)\r\n* Add option to ignore errors during MBTiles creation (e.g. download errors)\r\n\r\n\r\n2.1.1 (2013-08-27)\r\n==================\r\n\r\n* Do not hard-code ``grid();`` JSONP callback.\r\n\r\n2.1.0 (2013-08-27)\r\n==================\r\n\r\n* Add TMS support (ebrehault)\r\n* Add default subdomains argument for TileSource\r\n* Add ability to set HTTP headers for tiles\r\n* Fix file corruption on Windows (by @osuchw)\r\n\r\n2.0.3 (2013-05-03)\r\n==================\r\n\r\n* Fix Mapnik signature on render()\r\n\r\n2.0.2 (2012-06-21)\r\n==================\r\n\r\n* Prevent the whole image to be converted to grayscale\r\n* Explicitly check http status code at tiles download\r\n\r\n2.0.1 (2012-05-29)\r\n==================\r\n\r\n* Fix infinite loop on blending layers\r\n\r\n2.0.0 (2012-05-25)\r\n==================\r\n\r\n* Rework cache mechanism\r\n* Jpeg tiles support (#14)\r\n* Remove use of temporary files\r\n* Image post-processing (#11)\r\n\r\n2.0.0-alpha (2012-05-23)\r\n========================\r\n\r\n* Refactoring of whole stack\r\n\r\n1.8.2 (2012-03-27)\r\n==================\r\n\r\n* Fix Mapnik rendering\r\n\r\n1.8.1 (2012-02-24)\r\n==================\r\n\r\n* Fix MBTiles cache cleaning\r\n\r\n1.8 (2012-02-24)\r\n================\r\n\r\n* WMS support\r\n* Tiles compositing\r\n\r\n1.7 (2012-02-17)\r\n================\r\n\r\n* Catch Sqlite exceptions\r\n\r\n1.6 (2012-02-08)\r\n================\r\n\r\n* UTF-Grid support for MBTiles files\r\n\r\n1.5 (2011-12-07)\r\n================\r\n\r\n* Subdomain support for tiles servers\r\n* Low level tiles manipulation\r\n* Use i18n\r\n\r\n1.4 (2011-10-17)\r\n================\r\n\r\n* Remove extra logging message of mbutil\r\n\r\n1.3 (2011-09-23)\r\n================\r\n\r\n* Export set of tiles into single image\r\n\r\n1.2 (2011-06-21)\r\n================\r\n\r\n* Raise exception if no tiles in coverages\r\n\r\n1.1 (2012-04-18)\r\n================\r\n\r\n* Move internals to Mbtiler module\r\n* Split projection into separate module\r\n\r\n1.0 (2011-04-18)\r\n================\r\n\r\n* Initial working version\r\n",
"bugtrack_url": null,
"license": "LPGL, see LICENSE file.",
"summary": "Mbtiler is a python toolbox to manipulate map tiles.",
"version": "2.5.1",
"project_urls": {
"Download": "http://pypi.python.org/pypi/Mbtiler/",
"Homepage": "https://github.com/Elmeslmaney/Mbtiler"
},
"split_keywords": [
"mbtiles",
" mapnik"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "94dadb8b9e1eb159730f90292e90b1972f7b3870be79a8983b0cf0dc6e1e016b",
"md5": "f6d6c2a2742a15f55633424026fac1ee",
"sha256": "5a7bcfcdc8a8e56e2b29845450214b00b833eff69193295cf5a7d50b8b424b50"
},
"downloads": -1,
"filename": "Mbtiler-2.5.1-py3-none-any.whl",
"has_sig": false,
"md5_digest": "f6d6c2a2742a15f55633424026fac1ee",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": null,
"size": 22524,
"upload_time": "2024-05-05T01:36:44",
"upload_time_iso_8601": "2024-05-05T01:36:44.379461Z",
"url": "https://files.pythonhosted.org/packages/94/da/db8b9e1eb159730f90292e90b1972f7b3870be79a8983b0cf0dc6e1e016b/Mbtiler-2.5.1-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "9002459b9de8254c0cd84d21b742ae0876ce3047ef98701226850058acaac1df",
"md5": "db27f0aed9700e60704f2403e731df2d",
"sha256": "0cb94ae63f4eace0016f62d668ebc7dfe0902298978b36ad383a10ced635fb40"
},
"downloads": -1,
"filename": "mbtiler-2.5.1.tar.gz",
"has_sig": false,
"md5_digest": "db27f0aed9700e60704f2403e731df2d",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 21503,
"upload_time": "2024-05-05T01:36:47",
"upload_time_iso_8601": "2024-05-05T01:36:47.681415Z",
"url": "https://files.pythonhosted.org/packages/90/02/459b9de8254c0cd84d21b742ae0876ce3047ef98701226850058acaac1df/mbtiler-2.5.1.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-05-05 01:36:47",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "Elmeslmaney",
"github_project": "Mbtiler",
"github_not_found": true,
"lcname": "mbtiler"
}