rio-tiler 8.0.1__tar.gz → 8.0.3__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (245) hide show
  1. {rio_tiler-8.0.1 → rio_tiler-8.0.3}/PKG-INFO +1 -1
  2. {rio_tiler-8.0.1 → rio_tiler-8.0.3}/pyproject.toml +6 -1
  3. {rio_tiler-8.0.1 → rio_tiler-8.0.3}/rio_tiler/__init__.py +1 -1
  4. {rio_tiler-8.0.1 → rio_tiler-8.0.3}/rio_tiler/colormap.py +1 -1
  5. {rio_tiler-8.0.1 → rio_tiler-8.0.3}/rio_tiler/experimental/zarr.py +2 -2
  6. {rio_tiler-8.0.1 → rio_tiler-8.0.3}/rio_tiler/io/base.py +4 -2
  7. {rio_tiler-8.0.1 → rio_tiler-8.0.3}/rio_tiler/io/rasterio.py +4 -4
  8. {rio_tiler-8.0.1 → rio_tiler-8.0.3}/rio_tiler/io/xarray.py +9 -12
  9. {rio_tiler-8.0.1 → rio_tiler-8.0.3}/rio_tiler/models.py +18 -15
  10. {rio_tiler-8.0.1 → rio_tiler-8.0.3}/rio_tiler/mosaic/backend.py +11 -3
  11. {rio_tiler-8.0.1 → rio_tiler-8.0.3}/rio_tiler/reader.py +6 -2
  12. {rio_tiler-8.0.1 → rio_tiler-8.0.3}/rio_tiler/utils.py +1 -1
  13. {rio_tiler-8.0.1 → rio_tiler-8.0.3}/.gitignore +0 -0
  14. {rio_tiler-8.0.1 → rio_tiler-8.0.3}/AUTHORS.txt +0 -0
  15. {rio_tiler-8.0.1 → rio_tiler-8.0.3}/LICENSE +0 -0
  16. {rio_tiler-8.0.1 → rio_tiler-8.0.3}/README.md +0 -0
  17. {rio_tiler-8.0.1 → rio_tiler-8.0.3}/rio_tiler/cmap_data/__init__.py +0 -0
  18. {rio_tiler-8.0.1 → rio_tiler-8.0.3}/rio_tiler/cmap_data/accent.npy +0 -0
  19. {rio_tiler-8.0.1 → rio_tiler-8.0.3}/rio_tiler/cmap_data/accent_r.npy +0 -0
  20. {rio_tiler-8.0.1 → rio_tiler-8.0.3}/rio_tiler/cmap_data/afmhot.npy +0 -0
  21. {rio_tiler-8.0.1 → rio_tiler-8.0.3}/rio_tiler/cmap_data/afmhot_r.npy +0 -0
  22. {rio_tiler-8.0.1 → rio_tiler-8.0.3}/rio_tiler/cmap_data/algae.npy +0 -0
  23. {rio_tiler-8.0.1 → rio_tiler-8.0.3}/rio_tiler/cmap_data/algae_r.npy +0 -0
  24. {rio_tiler-8.0.1 → rio_tiler-8.0.3}/rio_tiler/cmap_data/amp.npy +0 -0
  25. {rio_tiler-8.0.1 → rio_tiler-8.0.3}/rio_tiler/cmap_data/amp_r.npy +0 -0
  26. {rio_tiler-8.0.1 → rio_tiler-8.0.3}/rio_tiler/cmap_data/autumn.npy +0 -0
  27. {rio_tiler-8.0.1 → rio_tiler-8.0.3}/rio_tiler/cmap_data/autumn_r.npy +0 -0
  28. {rio_tiler-8.0.1 → rio_tiler-8.0.3}/rio_tiler/cmap_data/balance.npy +0 -0
  29. {rio_tiler-8.0.1 → rio_tiler-8.0.3}/rio_tiler/cmap_data/balance_r.npy +0 -0
  30. {rio_tiler-8.0.1 → rio_tiler-8.0.3}/rio_tiler/cmap_data/binary.npy +0 -0
  31. {rio_tiler-8.0.1 → rio_tiler-8.0.3}/rio_tiler/cmap_data/binary_r.npy +0 -0
  32. {rio_tiler-8.0.1 → rio_tiler-8.0.3}/rio_tiler/cmap_data/blues.npy +0 -0
  33. {rio_tiler-8.0.1 → rio_tiler-8.0.3}/rio_tiler/cmap_data/blues_r.npy +0 -0
  34. {rio_tiler-8.0.1 → rio_tiler-8.0.3}/rio_tiler/cmap_data/bone.npy +0 -0
  35. {rio_tiler-8.0.1 → rio_tiler-8.0.3}/rio_tiler/cmap_data/bone_r.npy +0 -0
  36. {rio_tiler-8.0.1 → rio_tiler-8.0.3}/rio_tiler/cmap_data/brbg.npy +0 -0
  37. {rio_tiler-8.0.1 → rio_tiler-8.0.3}/rio_tiler/cmap_data/brbg_r.npy +0 -0
  38. {rio_tiler-8.0.1 → rio_tiler-8.0.3}/rio_tiler/cmap_data/brg.npy +0 -0
  39. {rio_tiler-8.0.1 → rio_tiler-8.0.3}/rio_tiler/cmap_data/brg_r.npy +0 -0
  40. {rio_tiler-8.0.1 → rio_tiler-8.0.3}/rio_tiler/cmap_data/bugn.npy +0 -0
  41. {rio_tiler-8.0.1 → rio_tiler-8.0.3}/rio_tiler/cmap_data/bugn_r.npy +0 -0
  42. {rio_tiler-8.0.1 → rio_tiler-8.0.3}/rio_tiler/cmap_data/bupu.npy +0 -0
  43. {rio_tiler-8.0.1 → rio_tiler-8.0.3}/rio_tiler/cmap_data/bupu_r.npy +0 -0
  44. {rio_tiler-8.0.1 → rio_tiler-8.0.3}/rio_tiler/cmap_data/bwr.npy +0 -0
  45. {rio_tiler-8.0.1 → rio_tiler-8.0.3}/rio_tiler/cmap_data/bwr_r.npy +0 -0
  46. {rio_tiler-8.0.1 → rio_tiler-8.0.3}/rio_tiler/cmap_data/cfastie.npy +0 -0
  47. {rio_tiler-8.0.1 → rio_tiler-8.0.3}/rio_tiler/cmap_data/cividis.npy +0 -0
  48. {rio_tiler-8.0.1 → rio_tiler-8.0.3}/rio_tiler/cmap_data/cividis_r.npy +0 -0
  49. {rio_tiler-8.0.1 → rio_tiler-8.0.3}/rio_tiler/cmap_data/cmrmap.npy +0 -0
  50. {rio_tiler-8.0.1 → rio_tiler-8.0.3}/rio_tiler/cmap_data/cmrmap_r.npy +0 -0
  51. {rio_tiler-8.0.1 → rio_tiler-8.0.3}/rio_tiler/cmap_data/cool.npy +0 -0
  52. {rio_tiler-8.0.1 → rio_tiler-8.0.3}/rio_tiler/cmap_data/cool_r.npy +0 -0
  53. {rio_tiler-8.0.1 → rio_tiler-8.0.3}/rio_tiler/cmap_data/coolwarm.npy +0 -0
  54. {rio_tiler-8.0.1 → rio_tiler-8.0.3}/rio_tiler/cmap_data/coolwarm_r.npy +0 -0
  55. {rio_tiler-8.0.1 → rio_tiler-8.0.3}/rio_tiler/cmap_data/copper.npy +0 -0
  56. {rio_tiler-8.0.1 → rio_tiler-8.0.3}/rio_tiler/cmap_data/copper_r.npy +0 -0
  57. {rio_tiler-8.0.1 → rio_tiler-8.0.3}/rio_tiler/cmap_data/cubehelix.npy +0 -0
  58. {rio_tiler-8.0.1 → rio_tiler-8.0.3}/rio_tiler/cmap_data/cubehelix_r.npy +0 -0
  59. {rio_tiler-8.0.1 → rio_tiler-8.0.3}/rio_tiler/cmap_data/curl.npy +0 -0
  60. {rio_tiler-8.0.1 → rio_tiler-8.0.3}/rio_tiler/cmap_data/curl_r.npy +0 -0
  61. {rio_tiler-8.0.1 → rio_tiler-8.0.3}/rio_tiler/cmap_data/dark2.npy +0 -0
  62. {rio_tiler-8.0.1 → rio_tiler-8.0.3}/rio_tiler/cmap_data/dark2_r.npy +0 -0
  63. {rio_tiler-8.0.1 → rio_tiler-8.0.3}/rio_tiler/cmap_data/deep.npy +0 -0
  64. {rio_tiler-8.0.1 → rio_tiler-8.0.3}/rio_tiler/cmap_data/deep_r.npy +0 -0
  65. {rio_tiler-8.0.1 → rio_tiler-8.0.3}/rio_tiler/cmap_data/delta.npy +0 -0
  66. {rio_tiler-8.0.1 → rio_tiler-8.0.3}/rio_tiler/cmap_data/delta_r.npy +0 -0
  67. {rio_tiler-8.0.1 → rio_tiler-8.0.3}/rio_tiler/cmap_data/dense.npy +0 -0
  68. {rio_tiler-8.0.1 → rio_tiler-8.0.3}/rio_tiler/cmap_data/dense_r.npy +0 -0
  69. {rio_tiler-8.0.1 → rio_tiler-8.0.3}/rio_tiler/cmap_data/diff.npy +0 -0
  70. {rio_tiler-8.0.1 → rio_tiler-8.0.3}/rio_tiler/cmap_data/diff_r.npy +0 -0
  71. {rio_tiler-8.0.1 → rio_tiler-8.0.3}/rio_tiler/cmap_data/flag.npy +0 -0
  72. {rio_tiler-8.0.1 → rio_tiler-8.0.3}/rio_tiler/cmap_data/flag_r.npy +0 -0
  73. {rio_tiler-8.0.1 → rio_tiler-8.0.3}/rio_tiler/cmap_data/gist_earth.npy +0 -0
  74. {rio_tiler-8.0.1 → rio_tiler-8.0.3}/rio_tiler/cmap_data/gist_earth_r.npy +0 -0
  75. {rio_tiler-8.0.1 → rio_tiler-8.0.3}/rio_tiler/cmap_data/gist_gray.npy +0 -0
  76. {rio_tiler-8.0.1 → rio_tiler-8.0.3}/rio_tiler/cmap_data/gist_gray_r.npy +0 -0
  77. {rio_tiler-8.0.1 → rio_tiler-8.0.3}/rio_tiler/cmap_data/gist_heat.npy +0 -0
  78. {rio_tiler-8.0.1 → rio_tiler-8.0.3}/rio_tiler/cmap_data/gist_heat_r.npy +0 -0
  79. {rio_tiler-8.0.1 → rio_tiler-8.0.3}/rio_tiler/cmap_data/gist_ncar.npy +0 -0
  80. {rio_tiler-8.0.1 → rio_tiler-8.0.3}/rio_tiler/cmap_data/gist_ncar_r.npy +0 -0
  81. {rio_tiler-8.0.1 → rio_tiler-8.0.3}/rio_tiler/cmap_data/gist_rainbow.npy +0 -0
  82. {rio_tiler-8.0.1 → rio_tiler-8.0.3}/rio_tiler/cmap_data/gist_rainbow_r.npy +0 -0
  83. {rio_tiler-8.0.1 → rio_tiler-8.0.3}/rio_tiler/cmap_data/gist_stern.npy +0 -0
  84. {rio_tiler-8.0.1 → rio_tiler-8.0.3}/rio_tiler/cmap_data/gist_stern_r.npy +0 -0
  85. {rio_tiler-8.0.1 → rio_tiler-8.0.3}/rio_tiler/cmap_data/gist_yarg.npy +0 -0
  86. {rio_tiler-8.0.1 → rio_tiler-8.0.3}/rio_tiler/cmap_data/gist_yarg_r.npy +0 -0
  87. {rio_tiler-8.0.1 → rio_tiler-8.0.3}/rio_tiler/cmap_data/gnbu.npy +0 -0
  88. {rio_tiler-8.0.1 → rio_tiler-8.0.3}/rio_tiler/cmap_data/gnbu_r.npy +0 -0
  89. {rio_tiler-8.0.1 → rio_tiler-8.0.3}/rio_tiler/cmap_data/gnuplot.npy +0 -0
  90. {rio_tiler-8.0.1 → rio_tiler-8.0.3}/rio_tiler/cmap_data/gnuplot2.npy +0 -0
  91. {rio_tiler-8.0.1 → rio_tiler-8.0.3}/rio_tiler/cmap_data/gnuplot2_r.npy +0 -0
  92. {rio_tiler-8.0.1 → rio_tiler-8.0.3}/rio_tiler/cmap_data/gnuplot_r.npy +0 -0
  93. {rio_tiler-8.0.1 → rio_tiler-8.0.3}/rio_tiler/cmap_data/gray.npy +0 -0
  94. {rio_tiler-8.0.1 → rio_tiler-8.0.3}/rio_tiler/cmap_data/gray_r.npy +0 -0
  95. {rio_tiler-8.0.1 → rio_tiler-8.0.3}/rio_tiler/cmap_data/greens.npy +0 -0
  96. {rio_tiler-8.0.1 → rio_tiler-8.0.3}/rio_tiler/cmap_data/greens_r.npy +0 -0
  97. {rio_tiler-8.0.1 → rio_tiler-8.0.3}/rio_tiler/cmap_data/greys.npy +0 -0
  98. {rio_tiler-8.0.1 → rio_tiler-8.0.3}/rio_tiler/cmap_data/greys_r.npy +0 -0
  99. {rio_tiler-8.0.1 → rio_tiler-8.0.3}/rio_tiler/cmap_data/haline.npy +0 -0
  100. {rio_tiler-8.0.1 → rio_tiler-8.0.3}/rio_tiler/cmap_data/haline_r.npy +0 -0
  101. {rio_tiler-8.0.1 → rio_tiler-8.0.3}/rio_tiler/cmap_data/hot.npy +0 -0
  102. {rio_tiler-8.0.1 → rio_tiler-8.0.3}/rio_tiler/cmap_data/hot_r.npy +0 -0
  103. {rio_tiler-8.0.1 → rio_tiler-8.0.3}/rio_tiler/cmap_data/hsv.npy +0 -0
  104. {rio_tiler-8.0.1 → rio_tiler-8.0.3}/rio_tiler/cmap_data/hsv_r.npy +0 -0
  105. {rio_tiler-8.0.1 → rio_tiler-8.0.3}/rio_tiler/cmap_data/ice.npy +0 -0
  106. {rio_tiler-8.0.1 → rio_tiler-8.0.3}/rio_tiler/cmap_data/ice_r.npy +0 -0
  107. {rio_tiler-8.0.1 → rio_tiler-8.0.3}/rio_tiler/cmap_data/inferno.npy +0 -0
  108. {rio_tiler-8.0.1 → rio_tiler-8.0.3}/rio_tiler/cmap_data/inferno_r.npy +0 -0
  109. {rio_tiler-8.0.1 → rio_tiler-8.0.3}/rio_tiler/cmap_data/jet.npy +0 -0
  110. {rio_tiler-8.0.1 → rio_tiler-8.0.3}/rio_tiler/cmap_data/jet_r.npy +0 -0
  111. {rio_tiler-8.0.1 → rio_tiler-8.0.3}/rio_tiler/cmap_data/magma.npy +0 -0
  112. {rio_tiler-8.0.1 → rio_tiler-8.0.3}/rio_tiler/cmap_data/magma_r.npy +0 -0
  113. {rio_tiler-8.0.1 → rio_tiler-8.0.3}/rio_tiler/cmap_data/matter.npy +0 -0
  114. {rio_tiler-8.0.1 → rio_tiler-8.0.3}/rio_tiler/cmap_data/matter_r.npy +0 -0
  115. {rio_tiler-8.0.1 → rio_tiler-8.0.3}/rio_tiler/cmap_data/nipy_spectral.npy +0 -0
  116. {rio_tiler-8.0.1 → rio_tiler-8.0.3}/rio_tiler/cmap_data/nipy_spectral_r.npy +0 -0
  117. {rio_tiler-8.0.1 → rio_tiler-8.0.3}/rio_tiler/cmap_data/ocean.npy +0 -0
  118. {rio_tiler-8.0.1 → rio_tiler-8.0.3}/rio_tiler/cmap_data/ocean_r.npy +0 -0
  119. {rio_tiler-8.0.1 → rio_tiler-8.0.3}/rio_tiler/cmap_data/oranges.npy +0 -0
  120. {rio_tiler-8.0.1 → rio_tiler-8.0.3}/rio_tiler/cmap_data/oranges_r.npy +0 -0
  121. {rio_tiler-8.0.1 → rio_tiler-8.0.3}/rio_tiler/cmap_data/orrd.npy +0 -0
  122. {rio_tiler-8.0.1 → rio_tiler-8.0.3}/rio_tiler/cmap_data/orrd_r.npy +0 -0
  123. {rio_tiler-8.0.1 → rio_tiler-8.0.3}/rio_tiler/cmap_data/oxy.npy +0 -0
  124. {rio_tiler-8.0.1 → rio_tiler-8.0.3}/rio_tiler/cmap_data/oxy_r.npy +0 -0
  125. {rio_tiler-8.0.1 → rio_tiler-8.0.3}/rio_tiler/cmap_data/paired.npy +0 -0
  126. {rio_tiler-8.0.1 → rio_tiler-8.0.3}/rio_tiler/cmap_data/paired_r.npy +0 -0
  127. {rio_tiler-8.0.1 → rio_tiler-8.0.3}/rio_tiler/cmap_data/pastel1.npy +0 -0
  128. {rio_tiler-8.0.1 → rio_tiler-8.0.3}/rio_tiler/cmap_data/pastel1_r.npy +0 -0
  129. {rio_tiler-8.0.1 → rio_tiler-8.0.3}/rio_tiler/cmap_data/pastel2.npy +0 -0
  130. {rio_tiler-8.0.1 → rio_tiler-8.0.3}/rio_tiler/cmap_data/pastel2_r.npy +0 -0
  131. {rio_tiler-8.0.1 → rio_tiler-8.0.3}/rio_tiler/cmap_data/phase.npy +0 -0
  132. {rio_tiler-8.0.1 → rio_tiler-8.0.3}/rio_tiler/cmap_data/phase_r.npy +0 -0
  133. {rio_tiler-8.0.1 → rio_tiler-8.0.3}/rio_tiler/cmap_data/pink.npy +0 -0
  134. {rio_tiler-8.0.1 → rio_tiler-8.0.3}/rio_tiler/cmap_data/pink_r.npy +0 -0
  135. {rio_tiler-8.0.1 → rio_tiler-8.0.3}/rio_tiler/cmap_data/piyg.npy +0 -0
  136. {rio_tiler-8.0.1 → rio_tiler-8.0.3}/rio_tiler/cmap_data/piyg_r.npy +0 -0
  137. {rio_tiler-8.0.1 → rio_tiler-8.0.3}/rio_tiler/cmap_data/plasma.npy +0 -0
  138. {rio_tiler-8.0.1 → rio_tiler-8.0.3}/rio_tiler/cmap_data/plasma_r.npy +0 -0
  139. {rio_tiler-8.0.1 → rio_tiler-8.0.3}/rio_tiler/cmap_data/prgn.npy +0 -0
  140. {rio_tiler-8.0.1 → rio_tiler-8.0.3}/rio_tiler/cmap_data/prgn_r.npy +0 -0
  141. {rio_tiler-8.0.1 → rio_tiler-8.0.3}/rio_tiler/cmap_data/prism.npy +0 -0
  142. {rio_tiler-8.0.1 → rio_tiler-8.0.3}/rio_tiler/cmap_data/prism_r.npy +0 -0
  143. {rio_tiler-8.0.1 → rio_tiler-8.0.3}/rio_tiler/cmap_data/pubu.npy +0 -0
  144. {rio_tiler-8.0.1 → rio_tiler-8.0.3}/rio_tiler/cmap_data/pubu_r.npy +0 -0
  145. {rio_tiler-8.0.1 → rio_tiler-8.0.3}/rio_tiler/cmap_data/pubugn.npy +0 -0
  146. {rio_tiler-8.0.1 → rio_tiler-8.0.3}/rio_tiler/cmap_data/pubugn_r.npy +0 -0
  147. {rio_tiler-8.0.1 → rio_tiler-8.0.3}/rio_tiler/cmap_data/puor.npy +0 -0
  148. {rio_tiler-8.0.1 → rio_tiler-8.0.3}/rio_tiler/cmap_data/puor_r.npy +0 -0
  149. {rio_tiler-8.0.1 → rio_tiler-8.0.3}/rio_tiler/cmap_data/purd.npy +0 -0
  150. {rio_tiler-8.0.1 → rio_tiler-8.0.3}/rio_tiler/cmap_data/purd_r.npy +0 -0
  151. {rio_tiler-8.0.1 → rio_tiler-8.0.3}/rio_tiler/cmap_data/purples.npy +0 -0
  152. {rio_tiler-8.0.1 → rio_tiler-8.0.3}/rio_tiler/cmap_data/purples_r.npy +0 -0
  153. {rio_tiler-8.0.1 → rio_tiler-8.0.3}/rio_tiler/cmap_data/rain.npy +0 -0
  154. {rio_tiler-8.0.1 → rio_tiler-8.0.3}/rio_tiler/cmap_data/rain_r.npy +0 -0
  155. {rio_tiler-8.0.1 → rio_tiler-8.0.3}/rio_tiler/cmap_data/rainbow.npy +0 -0
  156. {rio_tiler-8.0.1 → rio_tiler-8.0.3}/rio_tiler/cmap_data/rainbow_r.npy +0 -0
  157. {rio_tiler-8.0.1 → rio_tiler-8.0.3}/rio_tiler/cmap_data/rdbu.npy +0 -0
  158. {rio_tiler-8.0.1 → rio_tiler-8.0.3}/rio_tiler/cmap_data/rdbu_r.npy +0 -0
  159. {rio_tiler-8.0.1 → rio_tiler-8.0.3}/rio_tiler/cmap_data/rdgy.npy +0 -0
  160. {rio_tiler-8.0.1 → rio_tiler-8.0.3}/rio_tiler/cmap_data/rdgy_r.npy +0 -0
  161. {rio_tiler-8.0.1 → rio_tiler-8.0.3}/rio_tiler/cmap_data/rdpu.npy +0 -0
  162. {rio_tiler-8.0.1 → rio_tiler-8.0.3}/rio_tiler/cmap_data/rdpu_r.npy +0 -0
  163. {rio_tiler-8.0.1 → rio_tiler-8.0.3}/rio_tiler/cmap_data/rdylbu.npy +0 -0
  164. {rio_tiler-8.0.1 → rio_tiler-8.0.3}/rio_tiler/cmap_data/rdylbu_r.npy +0 -0
  165. {rio_tiler-8.0.1 → rio_tiler-8.0.3}/rio_tiler/cmap_data/rdylgn.npy +0 -0
  166. {rio_tiler-8.0.1 → rio_tiler-8.0.3}/rio_tiler/cmap_data/rdylgn_r.npy +0 -0
  167. {rio_tiler-8.0.1 → rio_tiler-8.0.3}/rio_tiler/cmap_data/reds.npy +0 -0
  168. {rio_tiler-8.0.1 → rio_tiler-8.0.3}/rio_tiler/cmap_data/reds_r.npy +0 -0
  169. {rio_tiler-8.0.1 → rio_tiler-8.0.3}/rio_tiler/cmap_data/rplumbo.npy +0 -0
  170. {rio_tiler-8.0.1 → rio_tiler-8.0.3}/rio_tiler/cmap_data/schwarzwald.npy +0 -0
  171. {rio_tiler-8.0.1 → rio_tiler-8.0.3}/rio_tiler/cmap_data/seismic.npy +0 -0
  172. {rio_tiler-8.0.1 → rio_tiler-8.0.3}/rio_tiler/cmap_data/seismic_r.npy +0 -0
  173. {rio_tiler-8.0.1 → rio_tiler-8.0.3}/rio_tiler/cmap_data/set1.npy +0 -0
  174. {rio_tiler-8.0.1 → rio_tiler-8.0.3}/rio_tiler/cmap_data/set1_r.npy +0 -0
  175. {rio_tiler-8.0.1 → rio_tiler-8.0.3}/rio_tiler/cmap_data/set2.npy +0 -0
  176. {rio_tiler-8.0.1 → rio_tiler-8.0.3}/rio_tiler/cmap_data/set2_r.npy +0 -0
  177. {rio_tiler-8.0.1 → rio_tiler-8.0.3}/rio_tiler/cmap_data/set3.npy +0 -0
  178. {rio_tiler-8.0.1 → rio_tiler-8.0.3}/rio_tiler/cmap_data/set3_r.npy +0 -0
  179. {rio_tiler-8.0.1 → rio_tiler-8.0.3}/rio_tiler/cmap_data/solar.npy +0 -0
  180. {rio_tiler-8.0.1 → rio_tiler-8.0.3}/rio_tiler/cmap_data/solar_r.npy +0 -0
  181. {rio_tiler-8.0.1 → rio_tiler-8.0.3}/rio_tiler/cmap_data/spectral.npy +0 -0
  182. {rio_tiler-8.0.1 → rio_tiler-8.0.3}/rio_tiler/cmap_data/spectral_r.npy +0 -0
  183. {rio_tiler-8.0.1 → rio_tiler-8.0.3}/rio_tiler/cmap_data/speed.npy +0 -0
  184. {rio_tiler-8.0.1 → rio_tiler-8.0.3}/rio_tiler/cmap_data/speed_r.npy +0 -0
  185. {rio_tiler-8.0.1 → rio_tiler-8.0.3}/rio_tiler/cmap_data/spring.npy +0 -0
  186. {rio_tiler-8.0.1 → rio_tiler-8.0.3}/rio_tiler/cmap_data/spring_r.npy +0 -0
  187. {rio_tiler-8.0.1 → rio_tiler-8.0.3}/rio_tiler/cmap_data/summer.npy +0 -0
  188. {rio_tiler-8.0.1 → rio_tiler-8.0.3}/rio_tiler/cmap_data/summer_r.npy +0 -0
  189. {rio_tiler-8.0.1 → rio_tiler-8.0.3}/rio_tiler/cmap_data/tab10.npy +0 -0
  190. {rio_tiler-8.0.1 → rio_tiler-8.0.3}/rio_tiler/cmap_data/tab10_r.npy +0 -0
  191. {rio_tiler-8.0.1 → rio_tiler-8.0.3}/rio_tiler/cmap_data/tab20.npy +0 -0
  192. {rio_tiler-8.0.1 → rio_tiler-8.0.3}/rio_tiler/cmap_data/tab20_r.npy +0 -0
  193. {rio_tiler-8.0.1 → rio_tiler-8.0.3}/rio_tiler/cmap_data/tab20b.npy +0 -0
  194. {rio_tiler-8.0.1 → rio_tiler-8.0.3}/rio_tiler/cmap_data/tab20b_r.npy +0 -0
  195. {rio_tiler-8.0.1 → rio_tiler-8.0.3}/rio_tiler/cmap_data/tab20c.npy +0 -0
  196. {rio_tiler-8.0.1 → rio_tiler-8.0.3}/rio_tiler/cmap_data/tab20c_r.npy +0 -0
  197. {rio_tiler-8.0.1 → rio_tiler-8.0.3}/rio_tiler/cmap_data/tarn.npy +0 -0
  198. {rio_tiler-8.0.1 → rio_tiler-8.0.3}/rio_tiler/cmap_data/tarn_r.npy +0 -0
  199. {rio_tiler-8.0.1 → rio_tiler-8.0.3}/rio_tiler/cmap_data/tempo.npy +0 -0
  200. {rio_tiler-8.0.1 → rio_tiler-8.0.3}/rio_tiler/cmap_data/tempo_r.npy +0 -0
  201. {rio_tiler-8.0.1 → rio_tiler-8.0.3}/rio_tiler/cmap_data/terrain.npy +0 -0
  202. {rio_tiler-8.0.1 → rio_tiler-8.0.3}/rio_tiler/cmap_data/terrain_r.npy +0 -0
  203. {rio_tiler-8.0.1 → rio_tiler-8.0.3}/rio_tiler/cmap_data/thermal.npy +0 -0
  204. {rio_tiler-8.0.1 → rio_tiler-8.0.3}/rio_tiler/cmap_data/thermal_r.npy +0 -0
  205. {rio_tiler-8.0.1 → rio_tiler-8.0.3}/rio_tiler/cmap_data/topo.npy +0 -0
  206. {rio_tiler-8.0.1 → rio_tiler-8.0.3}/rio_tiler/cmap_data/topo_r.npy +0 -0
  207. {rio_tiler-8.0.1 → rio_tiler-8.0.3}/rio_tiler/cmap_data/turbid.npy +0 -0
  208. {rio_tiler-8.0.1 → rio_tiler-8.0.3}/rio_tiler/cmap_data/turbid_r.npy +0 -0
  209. {rio_tiler-8.0.1 → rio_tiler-8.0.3}/rio_tiler/cmap_data/turbo.npy +0 -0
  210. {rio_tiler-8.0.1 → rio_tiler-8.0.3}/rio_tiler/cmap_data/turbo_r.npy +0 -0
  211. {rio_tiler-8.0.1 → rio_tiler-8.0.3}/rio_tiler/cmap_data/twilight.npy +0 -0
  212. {rio_tiler-8.0.1 → rio_tiler-8.0.3}/rio_tiler/cmap_data/twilight_r.npy +0 -0
  213. {rio_tiler-8.0.1 → rio_tiler-8.0.3}/rio_tiler/cmap_data/twilight_shifted.npy +0 -0
  214. {rio_tiler-8.0.1 → rio_tiler-8.0.3}/rio_tiler/cmap_data/twilight_shifted_r.npy +0 -0
  215. {rio_tiler-8.0.1 → rio_tiler-8.0.3}/rio_tiler/cmap_data/viridis.npy +0 -0
  216. {rio_tiler-8.0.1 → rio_tiler-8.0.3}/rio_tiler/cmap_data/viridis_r.npy +0 -0
  217. {rio_tiler-8.0.1 → rio_tiler-8.0.3}/rio_tiler/cmap_data/winter.npy +0 -0
  218. {rio_tiler-8.0.1 → rio_tiler-8.0.3}/rio_tiler/cmap_data/winter_r.npy +0 -0
  219. {rio_tiler-8.0.1 → rio_tiler-8.0.3}/rio_tiler/cmap_data/wistia.npy +0 -0
  220. {rio_tiler-8.0.1 → rio_tiler-8.0.3}/rio_tiler/cmap_data/wistia_r.npy +0 -0
  221. {rio_tiler-8.0.1 → rio_tiler-8.0.3}/rio_tiler/cmap_data/ylgn.npy +0 -0
  222. {rio_tiler-8.0.1 → rio_tiler-8.0.3}/rio_tiler/cmap_data/ylgn_r.npy +0 -0
  223. {rio_tiler-8.0.1 → rio_tiler-8.0.3}/rio_tiler/cmap_data/ylgnbu.npy +0 -0
  224. {rio_tiler-8.0.1 → rio_tiler-8.0.3}/rio_tiler/cmap_data/ylgnbu_r.npy +0 -0
  225. {rio_tiler-8.0.1 → rio_tiler-8.0.3}/rio_tiler/cmap_data/ylorbr.npy +0 -0
  226. {rio_tiler-8.0.1 → rio_tiler-8.0.3}/rio_tiler/cmap_data/ylorbr_r.npy +0 -0
  227. {rio_tiler-8.0.1 → rio_tiler-8.0.3}/rio_tiler/cmap_data/ylorrd.npy +0 -0
  228. {rio_tiler-8.0.1 → rio_tiler-8.0.3}/rio_tiler/cmap_data/ylorrd_r.npy +0 -0
  229. {rio_tiler-8.0.1 → rio_tiler-8.0.3}/rio_tiler/constants.py +0 -0
  230. {rio_tiler-8.0.1 → rio_tiler-8.0.3}/rio_tiler/errors.py +0 -0
  231. {rio_tiler-8.0.1 → rio_tiler-8.0.3}/rio_tiler/experimental/__init__.py +0 -0
  232. {rio_tiler-8.0.1 → rio_tiler-8.0.3}/rio_tiler/experimental/vsifile.py +0 -0
  233. {rio_tiler-8.0.1 → rio_tiler-8.0.3}/rio_tiler/expression.py +0 -0
  234. {rio_tiler-8.0.1 → rio_tiler-8.0.3}/rio_tiler/io/__init__.py +0 -0
  235. {rio_tiler-8.0.1 → rio_tiler-8.0.3}/rio_tiler/io/stac.py +0 -0
  236. {rio_tiler-8.0.1 → rio_tiler-8.0.3}/rio_tiler/logger.py +0 -0
  237. {rio_tiler-8.0.1 → rio_tiler-8.0.3}/rio_tiler/mosaic/__init__.py +0 -0
  238. {rio_tiler-8.0.1 → rio_tiler-8.0.3}/rio_tiler/mosaic/methods/__init__.py +0 -0
  239. {rio_tiler-8.0.1 → rio_tiler-8.0.3}/rio_tiler/mosaic/methods/base.py +0 -0
  240. {rio_tiler-8.0.1 → rio_tiler-8.0.3}/rio_tiler/mosaic/methods/defaults.py +0 -0
  241. {rio_tiler-8.0.1 → rio_tiler-8.0.3}/rio_tiler/mosaic/reader.py +0 -0
  242. {rio_tiler-8.0.1 → rio_tiler-8.0.3}/rio_tiler/profiles.py +0 -0
  243. {rio_tiler-8.0.1 → rio_tiler-8.0.3}/rio_tiler/py.typed +0 -0
  244. {rio_tiler-8.0.1 → rio_tiler-8.0.3}/rio_tiler/tasks.py +0 -0
  245. {rio_tiler-8.0.1 → rio_tiler-8.0.3}/rio_tiler/types.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: rio-tiler
3
- Version: 8.0.1
3
+ Version: 8.0.3
4
4
  Summary: User friendly Rasterio plugin to read raster datasets.
5
5
  Project-URL: Homepage, https://cogeotiff.github.io/rio-tiler/
6
6
  Project-URL: Documentation, https://cogeotiff.github.io/rio-tiler/
@@ -70,6 +70,11 @@ docs = [
70
70
  deploy = [
71
71
  "hatch",
72
72
  ]
73
+ notebook = [
74
+ "IPython",
75
+ "jupyter",
76
+ "matplotlib",
77
+ ]
73
78
 
74
79
  [project.optional-dependencies]
75
80
  s3 = [
@@ -155,7 +160,7 @@ exclude = [
155
160
  max-complexity = 14
156
161
 
157
162
  [tool.bumpversion]
158
- current_version = "8.0.1"
163
+ current_version = "8.0.3"
159
164
  parse = """(?x)
160
165
  (?P<major>\\d+)\\.
161
166
  (?P<minor>\\d+)\\.
@@ -1,6 +1,6 @@
1
1
  """rio-tiler."""
2
2
 
3
- __version__ = "8.0.1"
3
+ __version__ = "8.0.3"
4
4
 
5
5
  from . import ( # noqa
6
6
  colormap,
@@ -331,7 +331,7 @@ class ColorMaps:
331
331
  if isinstance(cmap_data, Sequence):
332
332
  cmap_data = [
333
333
  (tuple(inter), parse_color(v)) # type: ignore
334
- for (inter, v) in cmap_data
334
+ for (inter, v) in cmap_data # type: ignore
335
335
  ]
336
336
 
337
337
  else:
@@ -54,7 +54,7 @@ def open_dataset(src_path: str, **kwargs: Any) -> xarray.Dataset:
54
54
  store = obstore.store.from_url(src_path, **kwargs)
55
55
  zarr_store = ObjectStore(store=store, read_only=True)
56
56
  ds = xarray.open_dataset(
57
- zarr_store,
57
+ zarr_store, # type: ignore
58
58
  decode_times=True,
59
59
  decode_coords="all",
60
60
  consolidated=True,
@@ -144,7 +144,7 @@ class ZarrReader(BaseReader):
144
144
  @property
145
145
  def variables(self) -> List[str]:
146
146
  """Return dataset variable names"""
147
- return list(self.dataset.data_vars)
147
+ return list(self.dataset.data_vars) # type: ignore
148
148
 
149
149
  def _arrange_dims(self, da: xarray.DataArray) -> xarray.DataArray:
150
150
  """Arrange coordinates and time dimensions.
@@ -5,7 +5,7 @@ import contextlib
5
5
  import re
6
6
  import warnings
7
7
  from functools import cached_property
8
- from typing import Any, Dict, List, Optional, Sequence, Tuple, Type, Union
8
+ from typing import Any, Dict, List, Optional, Sequence, Tuple, Type, Union, cast
9
9
 
10
10
  import attr
11
11
  import numpy
@@ -189,6 +189,8 @@ class SpatialMixin:
189
189
  densify_pts=21,
190
190
  )
191
191
 
192
+ tile_bounds = cast(BBox, tile_bounds)
193
+
192
194
  # If tile_bounds has non-finite value in the dataset CRS we return True
193
195
  if not all(numpy.isfinite(tile_bounds)):
194
196
  return True
@@ -1115,7 +1117,7 @@ class MultiBandReader(SpatialMixin, metaclass=abc.ABCMeta):
1115
1117
  bands_metadata[band].colorinterp[0] for _, band in enumerate(bands)
1116
1118
  ]
1117
1119
  meta["nodata_type"] = bands_metadata[bands[0]].nodata_type
1118
- return Info(**meta)
1120
+ return Info.model_validate(meta)
1119
1121
 
1120
1122
  def statistics(
1121
1123
  self,
@@ -2,7 +2,7 @@
2
2
 
3
3
  import contextlib
4
4
  import warnings
5
- from typing import Any, Callable, Dict, List, Optional, Sequence, Union
5
+ from typing import Any, Callable, Dict, List, Optional, Sequence, Union, cast
6
6
 
7
7
  import attr
8
8
  import numpy
@@ -281,7 +281,7 @@ class Reader(BaseReader):
281
281
  )
282
282
 
283
283
  return self.part(
284
- tuple(self.tms.xy_bounds(Tile(x=tile_x, y=tile_y, z=tile_z))),
284
+ cast(BBox, self.tms.xy_bounds(Tile(x=tile_x, y=tile_y, z=tile_z))),
285
285
  dst_crs=self.tms.rasterio_crs,
286
286
  bounds_crs=self.tms.rasterio_crs,
287
287
  height=tilesize,
@@ -667,7 +667,7 @@ class ImageReader(Reader):
667
667
  )
668
668
 
669
669
  return self.part(
670
- tuple(self.tms.xy_bounds(Tile(x=tile_x, y=tile_y, z=tile_z))),
670
+ cast(BBox, self.tms.xy_bounds(Tile(x=tile_x, y=tile_y, z=tile_z))),
671
671
  height=tilesize,
672
672
  width=tilesize,
673
673
  max_size=None,
@@ -810,7 +810,7 @@ class ImageReader(Reader):
810
810
  bbox = featureBounds(shape)
811
811
 
812
812
  # If Image Origin is top Left (non-geo) we need to invert the bbox
813
- bbox = [bbox[0], bbox[3], bbox[2], bbox[1]]
813
+ bbox = (bbox[0], bbox[3], bbox[2], bbox[1])
814
814
 
815
815
  img = self.part(
816
816
  bbox,
@@ -5,7 +5,7 @@ from __future__ import annotations
5
5
  import math
6
6
  import os
7
7
  import warnings
8
- from typing import Any, Dict, List, Tuple
8
+ from typing import Any, Dict, List, Tuple, cast
9
9
 
10
10
  import attr
11
11
  import numpy
@@ -52,7 +52,7 @@ except ImportError: # pragma: nocover
52
52
  rioxarray = None # type: ignore
53
53
 
54
54
 
55
- MAX_ARRAY_SIZE = os.environ.get("RIO_TILER_MAX_ARRAY_SIZE", 1_000_000_000) # 1Gb
55
+ MAX_ARRAY_SIZE = int(os.environ.get("RIO_TILER_MAX_ARRAY_SIZE", 1_000_000_000)) # 1Gb
56
56
 
57
57
 
58
58
  @attr.s
@@ -160,7 +160,7 @@ class XarrayReader(BaseReader):
160
160
  if coords_name:
161
161
  return [str(self.input.coords[coords_name[0]].data)]
162
162
 
163
- return [self.input.name or ""]
163
+ return [self.input.name or ""] # type: ignore
164
164
 
165
165
  return [str(band) for d in self._dims for band in self.input[d].values]
166
166
 
@@ -281,13 +281,10 @@ class XarrayReader(BaseReader):
281
281
  f"Tile(x={tile_x}, y={tile_y}, z={tile_z}) is outside bounds"
282
282
  )
283
283
 
284
- tile_bounds = tuple(self.tms.xy_bounds(Tile(x=tile_x, y=tile_y, z=tile_z)))
285
- dst_crs = self.tms.rasterio_crs
286
-
287
284
  return self.part(
288
- tile_bounds,
289
- dst_crs=dst_crs,
290
- bounds_crs=dst_crs,
285
+ cast(BBox, self.tms.xy_bounds(Tile(x=tile_x, y=tile_y, z=tile_z))),
286
+ dst_crs=self.tms.rasterio_crs,
287
+ bounds_crs=self.tms.rasterio_crs,
291
288
  reproject_method=reproject_method,
292
289
  auto_expand=auto_expand,
293
290
  nodata=nodata,
@@ -568,13 +565,13 @@ class XarrayReader(BaseReader):
568
565
 
569
566
  arr = da.to_masked_array()
570
567
  if out_dtype:
571
- arr = arr.astype(out_dtype)
568
+ arr = cast(numpy.ma.MaskedArray, arr.astype(out_dtype))
572
569
  arr.mask |= arr.data == da.rio.nodata
573
570
 
574
571
  output_bounds = da.rio._unordered_bounds()
575
572
  if output_bounds[1] > output_bounds[3] and da.rio.transform().e > 0:
576
573
  yaxis = self.input.dims.index(self.input.rio.y_dim)
577
- arr = numpy.flip(arr, axis=yaxis)
574
+ arr = cast(numpy.ma.MaskedArray, numpy.flip(arr, axis=yaxis))
578
575
 
579
576
  img = ImageData(
580
577
  arr,
@@ -645,7 +642,7 @@ class XarrayReader(BaseReader):
645
642
 
646
643
  if out_dtype:
647
644
  arr = arr.astype(out_dtype)
648
- arr.mask |= arr.data == da.rio.nodata
645
+ arr.mask |= arr.data == da.rio.nodata # type: ignore [attr-defined]
649
646
 
650
647
  return PointData(
651
648
  arr,
@@ -2,7 +2,7 @@
2
2
 
3
3
  import itertools
4
4
  import warnings
5
- from typing import Any, Dict, List, Literal, Optional, Sequence, Tuple, Union
5
+ from typing import Any, Dict, List, Literal, Optional, Sequence, Tuple, Union, cast
6
6
 
7
7
  import attr
8
8
  import numpy
@@ -104,7 +104,7 @@ def rescale_image(
104
104
  ) -> numpy.ma.MaskedArray:
105
105
  """Rescale image data in-place."""
106
106
  if len(array.shape) < 3:
107
- array = numpy.expand_dims(array, axis=0)
107
+ array = numpy.expand_dims(array, axis=0) # type: ignore [assignment]
108
108
 
109
109
  nbands = array.shape[0]
110
110
 
@@ -116,14 +116,14 @@ def rescale_image(
116
116
 
117
117
  for bdx in range(nbands):
118
118
  array.data[bdx] = numpy.where(
119
- ~array.mask[bdx],
119
+ ~array.mask[bdx], # type: ignore [index]
120
120
  linear_rescale(
121
121
  array.data[bdx], in_range=in_range[bdx], out_range=out_range[bdx]
122
122
  ),
123
123
  0,
124
124
  )
125
125
 
126
- return array.astype(out_dtype)
126
+ return array.astype(out_dtype) # type: ignore [return-value]
127
127
 
128
128
 
129
129
  def to_masked(array: numpy.ndarray) -> numpy.ma.MaskedArray:
@@ -131,6 +131,7 @@ def to_masked(array: numpy.ndarray) -> numpy.ma.MaskedArray:
131
131
  if not numpy.ma.isarray(array):
132
132
  array = numpy.ma.asarray(array)
133
133
 
134
+ array = cast(numpy.ma.MaskedArray, array)
134
135
  # when a masked array is totally valid, the mask is set to numpy.ma.nomask
135
136
  # https://numpy.org/doc/stable/reference/maskedarray.baseclass.html#numpy.ma.nomask
136
137
  # doing `array.mask = False` force the creation of the mask array
@@ -156,14 +157,14 @@ class PointData:
156
157
 
157
158
  array: numpy.ma.MaskedArray = attr.ib(converter=to_masked)
158
159
  band_names: List[str] = attr.ib(kw_only=True)
159
- band_descriptions: Optional[List[str]] = attr.ib(kw_only=True)
160
+ band_descriptions: List[str] = attr.ib(kw_only=True)
160
161
  coordinates: Optional[Tuple[float, float]] = attr.ib(default=None, kw_only=True)
161
162
  crs: Optional[CRS] = attr.ib(default=None, kw_only=True)
162
163
  assets: Optional[List] = attr.ib(default=None, kw_only=True)
163
164
  metadata: Optional[Dict] = attr.ib(factory=dict, kw_only=True)
164
165
  nodata: Optional[NoData] = attr.ib(default=None, kw_only=True)
165
- scales: Optional[List[NumType]] = attr.ib(kw_only=True)
166
- offsets: Optional[List[NumType]] = attr.ib(kw_only=True)
166
+ scales: List[NumType] = attr.ib(kw_only=True)
167
+ offsets: List[NumType] = attr.ib(kw_only=True)
167
168
  pixel_location: Optional[Tuple[NumType, NumType]] = attr.ib(
168
169
  default=None, kw_only=True
169
170
  )
@@ -310,6 +311,8 @@ def masked_and_3d(array: numpy.ndarray) -> numpy.ma.MaskedArray:
310
311
  if len(array.shape) < 3:
311
312
  array = numpy.expand_dims(array, axis=0)
312
313
 
314
+ array = cast(numpy.ma.MaskedArray, array)
315
+
313
316
  # when a masked array is totally valid, the mask is set to numpy.ma.nomask
314
317
  # https://numpy.org/doc/stable/reference/maskedarray.baseclass.html#numpy.ma.nomask
315
318
  # doing `array.mask = False` force the creation of the mask array
@@ -344,10 +347,10 @@ class ImageData:
344
347
  crs: Optional[CRS] = attr.ib(default=None, kw_only=True)
345
348
  metadata: Optional[Dict] = attr.ib(factory=dict, kw_only=True)
346
349
  nodata: Optional[NoData] = attr.ib(default=None, kw_only=True)
347
- scales: Optional[List[NumType]] = attr.ib(kw_only=True)
348
- offsets: Optional[List[NumType]] = attr.ib(kw_only=True)
349
- band_names: Optional[List[str]] = attr.ib(kw_only=True)
350
- band_descriptions: Optional[List[str]] = attr.ib(kw_only=True)
350
+ scales: List[NumType] = attr.ib(kw_only=True)
351
+ offsets: List[NumType] = attr.ib(kw_only=True)
352
+ band_names: List[str] = attr.ib(kw_only=True)
353
+ band_descriptions: List[str] = attr.ib(kw_only=True)
351
354
  dataset_statistics: Optional[Sequence[Tuple[float, float]]] = attr.ib(
352
355
  default=None, kw_only=True
353
356
  )
@@ -495,8 +498,8 @@ class ImageData:
495
498
  if img.height == max_h and img.width == max_w:
496
499
  continue
497
500
  arr = numpy.ma.MaskedArray(
498
- resize_array(img.array.data, max_h, max_w),
499
- mask=resize_array(img.array.mask * 1, max_h, max_w).astype("bool"),
501
+ resize_array(img.array.data, max_h, max_w), # type: ignore [arg-type]
502
+ mask=resize_array(img.array.mask * 1, max_h, max_w).astype("bool"), # type: ignore [arg-type]
500
503
  )
501
504
  img.array = arr
502
505
 
@@ -708,8 +711,8 @@ class ImageData:
708
711
  resampling_method: RIOResampling = "nearest",
709
712
  ) -> "ImageData":
710
713
  """Resize data and mask."""
711
- data = resize_array(self.array.data, height, width, resampling_method)
712
- mask = resize_array(self.array.mask * 1, height, width, resampling_method).astype(
714
+ data = resize_array(self.array.data, height, width, resampling_method) # type: ignore [arg-type]
715
+ mask = resize_array(self.array.mask * 1, height, width, resampling_method).astype( # type: ignore [arg-type]
713
716
  "bool"
714
717
  )
715
718
  alpha_mask = self.alpha_mask
@@ -14,7 +14,7 @@ from rasterio.features import geometry_mask
14
14
  from rio_tiler.constants import WEB_MERCATOR_TMS, WGS84_CRS
15
15
  from rio_tiler.errors import NoAssetFoundError, PointOutsideBounds
16
16
  from rio_tiler.io import BaseReader, MultiBandReader, MultiBaseReader, Reader
17
- from rio_tiler.models import ImageData, PointData
17
+ from rio_tiler.models import BandStatistics, ImageData, PointData
18
18
  from rio_tiler.mosaic import mosaic_reader
19
19
  from rio_tiler.tasks import multi_values_list
20
20
  from rio_tiler.types import BBox
@@ -233,10 +233,18 @@ class BaseBackend(BaseReader):
233
233
  ############################################################################
234
234
  # Not Implemented methods
235
235
  # BaseReader required those method to be implemented
236
- def statistics(self):
236
+ def statistics(
237
+ self,
238
+ search_options: dict | None = None,
239
+ **kwargs: Any,
240
+ ) -> dict[str, BandStatistics]:
237
241
  """PlaceHolder for statistics."""
238
242
  raise NotImplementedError
239
243
 
240
- def preview(self):
244
+ def preview( # type: ignore
245
+ self,
246
+ search_options: dict | None = None,
247
+ **kwargs: Any,
248
+ ) -> tuple[ImageData, list[str]]:
241
249
  """PlaceHolder for preview."""
242
250
  raise NotImplementedError
@@ -3,7 +3,7 @@
3
3
  import contextlib
4
4
  import math
5
5
  import warnings
6
- from typing import Callable, Dict, Optional, Tuple, TypedDict, Union
6
+ from typing import Callable, Dict, Optional, Tuple, TypedDict, Union, cast
7
7
 
8
8
  import numpy
9
9
  from affine import Affine
@@ -258,7 +258,11 @@ def read(
258
258
  scales = numpy.array(dataset.scales)[numpy.array(indexes) - 1]
259
259
  offsets = numpy.array(dataset.offsets)[numpy.array(indexes) - 1]
260
260
  if unscale:
261
- data = data.astype("float32", casting="unsafe")
261
+ data = cast(
262
+ numpy.ma.MaskedArray,
263
+ data.astype("float32", casting="unsafe"),
264
+ )
265
+
262
266
  numpy.multiply(data, scales.reshape((-1, 1, 1)), out=data, casting="unsafe")
263
267
  numpy.add(data, offsets.reshape((-1, 1, 1)), out=data, casting="unsafe")
264
268
 
@@ -139,7 +139,7 @@ def get_array_statistics(
139
139
  percentiles = percentiles or [2, 98]
140
140
 
141
141
  if len(data.shape) < 3:
142
- data = numpy.ma.expand_dims(data, axis=0)
142
+ data = numpy.ma.expand_dims(data, axis=0) # type: ignore [assignment]
143
143
 
144
144
  output: List[Dict[Any, Any]] = []
145
145
  percentiles_names = [f"percentile_{int(p)}" for p in percentiles]
File without changes
File without changes
File without changes
File without changes