mapchete-eo 2025.7.0__py2.py3-none-any.whl

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 (87) hide show
  1. mapchete_eo/__init__.py +1 -0
  2. mapchete_eo/archives/__init__.py +0 -0
  3. mapchete_eo/archives/base.py +65 -0
  4. mapchete_eo/array/__init__.py +0 -0
  5. mapchete_eo/array/buffer.py +16 -0
  6. mapchete_eo/array/color.py +29 -0
  7. mapchete_eo/array/convert.py +157 -0
  8. mapchete_eo/base.py +528 -0
  9. mapchete_eo/blacklist.txt +175 -0
  10. mapchete_eo/cli/__init__.py +30 -0
  11. mapchete_eo/cli/bounds.py +22 -0
  12. mapchete_eo/cli/options_arguments.py +243 -0
  13. mapchete_eo/cli/s2_brdf.py +77 -0
  14. mapchete_eo/cli/s2_cat_results.py +146 -0
  15. mapchete_eo/cli/s2_find_broken_products.py +93 -0
  16. mapchete_eo/cli/s2_jp2_static_catalog.py +166 -0
  17. mapchete_eo/cli/s2_mask.py +71 -0
  18. mapchete_eo/cli/s2_mgrs.py +45 -0
  19. mapchete_eo/cli/s2_rgb.py +114 -0
  20. mapchete_eo/cli/s2_verify.py +129 -0
  21. mapchete_eo/cli/static_catalog.py +123 -0
  22. mapchete_eo/eostac.py +30 -0
  23. mapchete_eo/exceptions.py +87 -0
  24. mapchete_eo/geometry.py +271 -0
  25. mapchete_eo/image_operations/__init__.py +12 -0
  26. mapchete_eo/image_operations/color_correction.py +136 -0
  27. mapchete_eo/image_operations/compositing.py +247 -0
  28. mapchete_eo/image_operations/dtype_scale.py +43 -0
  29. mapchete_eo/image_operations/fillnodata.py +130 -0
  30. mapchete_eo/image_operations/filters.py +319 -0
  31. mapchete_eo/image_operations/linear_normalization.py +81 -0
  32. mapchete_eo/image_operations/sigmoidal.py +114 -0
  33. mapchete_eo/io/__init__.py +37 -0
  34. mapchete_eo/io/assets.py +492 -0
  35. mapchete_eo/io/items.py +147 -0
  36. mapchete_eo/io/levelled_cubes.py +228 -0
  37. mapchete_eo/io/path.py +144 -0
  38. mapchete_eo/io/products.py +413 -0
  39. mapchete_eo/io/profiles.py +45 -0
  40. mapchete_eo/known_catalogs.py +42 -0
  41. mapchete_eo/platforms/sentinel2/__init__.py +17 -0
  42. mapchete_eo/platforms/sentinel2/archives.py +190 -0
  43. mapchete_eo/platforms/sentinel2/bandpass_adjustment.py +104 -0
  44. mapchete_eo/platforms/sentinel2/brdf/__init__.py +8 -0
  45. mapchete_eo/platforms/sentinel2/brdf/config.py +32 -0
  46. mapchete_eo/platforms/sentinel2/brdf/correction.py +260 -0
  47. mapchete_eo/platforms/sentinel2/brdf/hls.py +251 -0
  48. mapchete_eo/platforms/sentinel2/brdf/models.py +44 -0
  49. mapchete_eo/platforms/sentinel2/brdf/protocols.py +27 -0
  50. mapchete_eo/platforms/sentinel2/brdf/ross_thick.py +136 -0
  51. mapchete_eo/platforms/sentinel2/brdf/sun_angle_arrays.py +76 -0
  52. mapchete_eo/platforms/sentinel2/config.py +181 -0
  53. mapchete_eo/platforms/sentinel2/driver.py +78 -0
  54. mapchete_eo/platforms/sentinel2/masks.py +325 -0
  55. mapchete_eo/platforms/sentinel2/metadata_parser.py +734 -0
  56. mapchete_eo/platforms/sentinel2/path_mappers/__init__.py +29 -0
  57. mapchete_eo/platforms/sentinel2/path_mappers/base.py +56 -0
  58. mapchete_eo/platforms/sentinel2/path_mappers/earthsearch.py +34 -0
  59. mapchete_eo/platforms/sentinel2/path_mappers/metadata_xml.py +135 -0
  60. mapchete_eo/platforms/sentinel2/path_mappers/sinergise.py +105 -0
  61. mapchete_eo/platforms/sentinel2/preprocessing_tasks.py +26 -0
  62. mapchete_eo/platforms/sentinel2/processing_baseline.py +160 -0
  63. mapchete_eo/platforms/sentinel2/product.py +669 -0
  64. mapchete_eo/platforms/sentinel2/types.py +109 -0
  65. mapchete_eo/processes/__init__.py +0 -0
  66. mapchete_eo/processes/config.py +51 -0
  67. mapchete_eo/processes/dtype_scale.py +112 -0
  68. mapchete_eo/processes/eo_to_xarray.py +19 -0
  69. mapchete_eo/processes/merge_rasters.py +235 -0
  70. mapchete_eo/product.py +278 -0
  71. mapchete_eo/protocols.py +56 -0
  72. mapchete_eo/search/__init__.py +14 -0
  73. mapchete_eo/search/base.py +222 -0
  74. mapchete_eo/search/config.py +42 -0
  75. mapchete_eo/search/s2_mgrs.py +314 -0
  76. mapchete_eo/search/stac_search.py +251 -0
  77. mapchete_eo/search/stac_static.py +236 -0
  78. mapchete_eo/search/utm_search.py +251 -0
  79. mapchete_eo/settings.py +24 -0
  80. mapchete_eo/sort.py +48 -0
  81. mapchete_eo/time.py +53 -0
  82. mapchete_eo/types.py +73 -0
  83. mapchete_eo-2025.7.0.dist-info/METADATA +38 -0
  84. mapchete_eo-2025.7.0.dist-info/RECORD +87 -0
  85. mapchete_eo-2025.7.0.dist-info/WHEEL +5 -0
  86. mapchete_eo-2025.7.0.dist-info/entry_points.txt +11 -0
  87. mapchete_eo-2025.7.0.dist-info/licenses/LICENSE +21 -0
@@ -0,0 +1,38 @@
1
+ Metadata-Version: 2.4
2
+ Name: mapchete-eo
3
+ Version: 2025.7.0
4
+ Summary: mapchete EO data reader
5
+ Project-URL: Homepage, https://gitlab.eox.at/maps/mapchete_eo
6
+ Author-email: Joachim Ungar <joachim.ungar@eox.at>, Petr Sevcik <petr.sevcik@eox.at>
7
+ License-Expression: MIT
8
+ License-File: LICENSE
9
+ Classifier: Development Status :: 3 - Alpha
10
+ Classifier: Intended Audience :: Developers
11
+ Classifier: License :: OSI Approved :: MIT License
12
+ Classifier: Programming Language :: Python :: 3.10
13
+ Classifier: Programming Language :: Python :: 3.11
14
+ Classifier: Programming Language :: Python :: 3.12
15
+ Classifier: Topic :: Scientific/Engineering :: GIS
16
+ Requires-Dist: blend-modes
17
+ Requires-Dist: click
18
+ Requires-Dist: croniter
19
+ Requires-Dist: lxml
20
+ Requires-Dist: mapchete[complete]>=2025.6.0
21
+ Requires-Dist: opencv-python
22
+ Requires-Dist: pillow
23
+ Requires-Dist: pydantic
24
+ Requires-Dist: pystac-client>=0.7.5
25
+ Requires-Dist: pystac[urllib3]>=1.12.2
26
+ Requires-Dist: retry
27
+ Requires-Dist: rtree
28
+ Requires-Dist: scipy
29
+ Requires-Dist: tqdm
30
+ Requires-Dist: xarray
31
+ Provides-Extra: test
32
+ Requires-Dist: pytest-coverage; extra == 'test'
33
+ Requires-Dist: pytest-lazy-fixture; extra == 'test'
34
+ Requires-Dist: pytest<8; extra == 'test'
35
+ Description-Content-Type: text/markdown
36
+
37
+ # Mapchete EO driver
38
+
@@ -0,0 +1,87 @@
1
+ mapchete_eo/__init__.py,sha256=qw5_HlGyySslqdhiMQcXKzB5W5dNKrjSnWHIzQ07tqg,25
2
+ mapchete_eo/base.py,sha256=0jqaVt45-Ltjhl38g3hHBM-nKe3g8Trf7tzkRIHfqX8,18521
3
+ mapchete_eo/blacklist.txt,sha256=6KhBY0jNjXgRpKRvKJoOTswvNUoP56IrIcNeCYnd2qo,17471
4
+ mapchete_eo/eostac.py,sha256=5K08Mr4wm-VOXTEvTB6DQHX7rbFLYw8mjW1wlpPltC0,574
5
+ mapchete_eo/exceptions.py,sha256=ul7_9o6_SfJXQPsDOQqRBhh09xv2t4AwHl6YJ7yWN5s,2150
6
+ mapchete_eo/geometry.py,sha256=NiLeXSnp2c_AsBin8XUFzlr_ndqHbKos-dHQSDApIro,9420
7
+ mapchete_eo/known_catalogs.py,sha256=dlxImeNwaUVuss-sGddixTcxjcrznyR-XWKfkX9S5PA,1274
8
+ mapchete_eo/product.py,sha256=t7Hj_0FEIK_yboXcSm3sEUD2tpUMROLMsJBBen-MncE,9558
9
+ mapchete_eo/protocols.py,sha256=_WxiHPgErDjiJ0dzWJiWjHm0ZgoDlG16oEw1X1fzUXc,1512
10
+ mapchete_eo/settings.py,sha256=-i4UPX0KJ7NWGpGzOUkhzCABOMz2xc-q3sVLBFT4JAM,696
11
+ mapchete_eo/sort.py,sha256=k2QgZyn4xZ2vx8MgfbAZBA5YM4P-tQOzzsQ1mSTESUc,1350
12
+ mapchete_eo/time.py,sha256=mCIrn6C-B7CDoFIIM4u8pG15nVV8KWQixF2fuhdDTdE,1799
13
+ mapchete_eo/types.py,sha256=yIHKZHlGCSerJzDBS2AH7yYLun4rY3rZZ73SCKiN26U,1814
14
+ mapchete_eo/archives/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
15
+ mapchete_eo/archives/base.py,sha256=32NCFg46p95Uv3rO-M0Y-W6iCH4BzLtfUHpHfyzzrC4,2157
16
+ mapchete_eo/array/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
17
+ mapchete_eo/array/buffer.py,sha256=GeeM7RVQ-Z_SKlkaeztWUrxEsa_yck-nXwXRIM3w0_I,483
18
+ mapchete_eo/array/color.py,sha256=ArJ3-0qjJJGAlRQodLios6JwD0uHLSRRb9BwfB31v-U,810
19
+ mapchete_eo/array/convert.py,sha256=LhNlTtAeZpDy2zI58zvqOmQLw9GYjvgroHMiD7Y0PiE,5238
20
+ mapchete_eo/cli/__init__.py,sha256=SRRilPKUtwsUCi1GdMNPxjIrCM-XyYM2hK1T9vvKUI8,946
21
+ mapchete_eo/cli/bounds.py,sha256=QcOXOXMcnd8ecwiCFVWukTLUFIkpj9SbB3ot-GA4heA,551
22
+ mapchete_eo/cli/options_arguments.py,sha256=6rnnABT8WU6DF6vvy7lGDj5-OpMMo1Vb36fL1oan56c,7344
23
+ mapchete_eo/cli/s2_brdf.py,sha256=BCBGyK3C3kEMkJinphp_mFqtbaF4hm8xGIWNyNK785Y,2718
24
+ mapchete_eo/cli/s2_cat_results.py,sha256=e7esJenjDil_VqNKcgTvNb6pAYXfWiR0OgGWxmOx0SY,5220
25
+ mapchete_eo/cli/s2_find_broken_products.py,sha256=dAwjLs3yfUJ7sn5BoauZBrJ3P3jKK1iofWxSDTAkXl4,3498
26
+ mapchete_eo/cli/s2_jp2_static_catalog.py,sha256=-gSHjORaIizQ7qmgrvBgpm1FrV5BL1_uleEQPmAAab0,5925
27
+ mapchete_eo/cli/s2_mask.py,sha256=1K5BiyTKyClGBdh6-Vh_ORTcgJOr6R5JfXtpEpDEQvk,2243
28
+ mapchete_eo/cli/s2_mgrs.py,sha256=EJxbrg4I8IttWIcLUEmmqkjsTUbVLufgrkDVrRbbkYE,1276
29
+ mapchete_eo/cli/s2_rgb.py,sha256=nzK5m4s0m2VOXgtit0uUOOhNJ14wquikWmbEQON5WJw,3747
30
+ mapchete_eo/cli/s2_verify.py,sha256=atfJA5luHZjDSqiM2udaufmnQ2B4uW2Tur_OgtYLa2g,4080
31
+ mapchete_eo/cli/static_catalog.py,sha256=zq20fc0phjfjWMjSao-L6VVI-o2DPrMapvDmy6i30YQ,4291
32
+ mapchete_eo/image_operations/__init__.py,sha256=c36Vs53mT5UQR9Iwd2Ln_vnT4K_Ni8g-K7J9Fl6UsJo,432
33
+ mapchete_eo/image_operations/color_correction.py,sha256=vMXxcdyH3qOJDSKcXGU3FgXWIcgQxMy-QVe2fGQTbdk,4447
34
+ mapchete_eo/image_operations/compositing.py,sha256=eWnyF2Iv3mZD6thAiNW1M0MmqwsRwO9hNWxDN9jTrQY,8146
35
+ mapchete_eo/image_operations/dtype_scale.py,sha256=_CCdTBkMLDkZdjV_PsVEkqLWT6jWuTJPeMzCcRwBOns,1243
36
+ mapchete_eo/image_operations/fillnodata.py,sha256=IYCQkPlH-K6ri0G_-Xp8JJzvWz6HhBiA1DolWeGJVyc,4864
37
+ mapchete_eo/image_operations/filters.py,sha256=sa_Igv0zMIANHLEALVi8mxohZMoSrdQc6XVjXDYwzy8,7201
38
+ mapchete_eo/image_operations/linear_normalization.py,sha256=-eQX3WLCUYWUv-um3s1u33rgjAwCz84Ht8gcPsMWtJE,2468
39
+ mapchete_eo/image_operations/sigmoidal.py,sha256=IKU8F89HhQJWGUVmIrnkuhqzn_ztlGrTf8xXZaVQWzU,3575
40
+ mapchete_eo/io/__init__.py,sha256=1-1g4cESZZREvyumEUABZhDwgVuSxtxdqbNlLuVKlow,950
41
+ mapchete_eo/io/assets.py,sha256=8OrqvrCzJOY0pExh_vKRL7Bz_RGk6M_LfayQqxHo8ag,17014
42
+ mapchete_eo/io/items.py,sha256=FDDMRtFvNNL3Iwf0xiaSI8G3s-54vhqfYKo7xzCQq-w,5657
43
+ mapchete_eo/io/levelled_cubes.py,sha256=Bhl4LM39eueKHW-BOT2LlXkWn7Kgdhp22mfLAkYrK9A,7782
44
+ mapchete_eo/io/path.py,sha256=y5aYr-dE-0BafgF1_RCSXCvbF3taCI-EOz0R58rNxO8,4413
45
+ mapchete_eo/io/products.py,sha256=3tsMCv3ksKL5DSIdSPN6_1e58gHXA0khzURTGuQD7TY,14121
46
+ mapchete_eo/io/profiles.py,sha256=l9YiXbKYs674xz6NLy5EAq3fBEvHTVSf_gopXD-CuSY,935
47
+ mapchete_eo/platforms/sentinel2/__init__.py,sha256=zAyBzOhwKSIyNJyfEpyY6G-PxPDhLvOCky8aA2PsW_k,390
48
+ mapchete_eo/platforms/sentinel2/archives.py,sha256=uhIY0EUta45Ka94ky35NZ33Hxi0qPA2yIu21ad1z6CQ,5830
49
+ mapchete_eo/platforms/sentinel2/bandpass_adjustment.py,sha256=DA0cQtjr8UH7r_kizAD-EmBsZvEtVVThf0hD0SCY7b4,3202
50
+ mapchete_eo/platforms/sentinel2/config.py,sha256=Mn_uw2bdR6gcIWPS_istY6E5HaN6JLuxQO05HtEovNU,5974
51
+ mapchete_eo/platforms/sentinel2/driver.py,sha256=ny9Rfnvi07NeB29RwimqBIF7BbCxPPRfZO_rfDJyWzI,2776
52
+ mapchete_eo/platforms/sentinel2/masks.py,sha256=6ig8sQhXkm1u6Bwbe7n8ewW8gTdbVJp-iaDCk780Qxg,11220
53
+ mapchete_eo/platforms/sentinel2/metadata_parser.py,sha256=M1w6sdKx0u_BFxHMsjx8TsSx1v7p5C16cZc8_FOQpns,26835
54
+ mapchete_eo/platforms/sentinel2/preprocessing_tasks.py,sha256=eJh1wSDsQkEKtQ6G6vmVkFBoBl5nZUV5vNHQM4RifQg,772
55
+ mapchete_eo/platforms/sentinel2/processing_baseline.py,sha256=B2-t5H7xC54g2aIvcdBSRQPHygfqccbKEhXSgClAADY,5085
56
+ mapchete_eo/platforms/sentinel2/product.py,sha256=2FvHSS52Bqur1dn-D1RHnPeTVzqVv3XpfHWf2MeGes8,25368
57
+ mapchete_eo/platforms/sentinel2/types.py,sha256=Cd0bmDT1mLETuSJYEAoF8Kl4-QOPv2fFrwgR8xHTka0,2009
58
+ mapchete_eo/platforms/sentinel2/brdf/__init__.py,sha256=W7zAJZ5F5Xla7j4ua2opRANUbcD3jZbhTwhW5_cpOUI,242
59
+ mapchete_eo/platforms/sentinel2/brdf/config.py,sha256=v3WCEu4r-tEPQgWBEkYNAPLgCQobvYtQ2YiDeAdImMk,1133
60
+ mapchete_eo/platforms/sentinel2/brdf/correction.py,sha256=g7gS0gMD1lCHjmm62IF9c297MqsBJ1xSRm2F8t_Xd5w,8640
61
+ mapchete_eo/platforms/sentinel2/brdf/hls.py,sha256=Z1jqiJzarss2knaH0TQQNMrWCDZA5ZE_TpnjHNPLkYQ,8807
62
+ mapchete_eo/platforms/sentinel2/brdf/models.py,sha256=mtuKteEEy8EXOp1hiFRfE5zk1YK4dsXT6GoEediqa_o,1435
63
+ mapchete_eo/platforms/sentinel2/brdf/protocols.py,sha256=Iqq_VKcRSyGtNuEtuoWGxijVnwPT_8ed8n1yRU1EwmE,741
64
+ mapchete_eo/platforms/sentinel2/brdf/ross_thick.py,sha256=sjthta25e0cOGL-O5yxydFjavRN5FiGCeON1UKhhQ00,4674
65
+ mapchete_eo/platforms/sentinel2/brdf/sun_angle_arrays.py,sha256=zzHLjzxzinVtqzNIY3wt-j5E7QJF4GE-Wf3_HriPgIw,2137
66
+ mapchete_eo/platforms/sentinel2/path_mappers/__init__.py,sha256=vX3tu610BQ7pgG9Ooltoi-Upoja1Y_l5tvgZYIcFT6g,1081
67
+ mapchete_eo/platforms/sentinel2/path_mappers/base.py,sha256=xuri2IG5infKFtw05oQHTJiM2ZnP3Hj2HYfHr9gMltM,1512
68
+ mapchete_eo/platforms/sentinel2/path_mappers/earthsearch.py,sha256=O1H18z258I_Vo7wVNlVf9gw4dAfH10V5x4q_PJwTJVg,1422
69
+ mapchete_eo/platforms/sentinel2/path_mappers/metadata_xml.py,sha256=lwxnFQ2ejxvMUNNe2d7RYYodz-ydtubkhOihQaosx4Y,5325
70
+ mapchete_eo/platforms/sentinel2/path_mappers/sinergise.py,sha256=qHp4yOK_po6IvGt50QmTmB09s9AkQiYq8W0fqHSUgt0,4287
71
+ mapchete_eo/processes/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
72
+ mapchete_eo/processes/config.py,sha256=WorMzHJzJaZPh-aEyEEwcXN08ALxn6zAhVMrjkDUWDU,1745
73
+ mapchete_eo/processes/dtype_scale.py,sha256=7hJlIe2DsE6Kmk1c3PLwLr8rnn_4_9S6Cz7bmRuzP9M,4176
74
+ mapchete_eo/processes/eo_to_xarray.py,sha256=Gcp4qju2C9S8KeUnVY5f3nAsrdckPhGRguzsgRtWBFs,514
75
+ mapchete_eo/processes/merge_rasters.py,sha256=f9QG8_nIJRIVYC-hkq9hcmQOZIdoRzAWsJp1OlRS4qQ,8316
76
+ mapchete_eo/search/__init__.py,sha256=71VuR1BFFbFiV9rae5qXt0RLtwWk1DP_CYbZflMZDWA,516
77
+ mapchete_eo/search/base.py,sha256=8B7bg6dj3n79lv9SalVMVjjLth12AIcTuqJjyggZLCk,8601
78
+ mapchete_eo/search/config.py,sha256=0idsjXt2T8scerlw-PzNVc0u8JxpOxHgrEO2asSRtNE,1122
79
+ mapchete_eo/search/s2_mgrs.py,sha256=5LWl9c7WzFvXODr9f8m37cv-8yyf-LvnN0-TSSPcXKM,10868
80
+ mapchete_eo/search/stac_search.py,sha256=YnISHpdvMJfrY_wfM1dHOtHYqgsbXsYLMYrRdJlAZTo,9551
81
+ mapchete_eo/search/stac_static.py,sha256=P1C2OC33UopV80xIvFeL-HbOuaxxe7qsPDdnkU8IXcA,8613
82
+ mapchete_eo/search/utm_search.py,sha256=wKrG2KwqL2fjSrkDUTZuRayiVAR27BtWpX-PFab0Dng,9646
83
+ mapchete_eo-2025.7.0.dist-info/METADATA,sha256=Yb9rTjokNJNKksLVg9Q0XBZMwtGKdbNFJQ7-BCI_bCk,1243
84
+ mapchete_eo-2025.7.0.dist-info/WHEEL,sha256=tkmg4JIqwd9H8mL30xA7crRmoStyCtGp0VWshokd1Jc,105
85
+ mapchete_eo-2025.7.0.dist-info/entry_points.txt,sha256=ewk6R4FGdAclOnUpikhlPZGWI40MWeksVIIwu4jVebk,324
86
+ mapchete_eo-2025.7.0.dist-info/licenses/LICENSE,sha256=TC5JwvBnFrUgsSQSCDFPc3cqlbth2N0q8MWrhY1EVd0,1089
87
+ mapchete_eo-2025.7.0.dist-info/RECORD,,
@@ -0,0 +1,5 @@
1
+ Wheel-Version: 1.0
2
+ Generator: hatchling 1.27.0
3
+ Root-Is-Purelib: true
4
+ Tag: py2-none-any
5
+ Tag: py3-none-any
@@ -0,0 +1,11 @@
1
+ [mapchete.cli.commands]
2
+ eo = mapchete_eo.cli:eo
3
+
4
+ [mapchete.formats.drivers]
5
+ eostac_dev = mapchete_eo.eostac
6
+ sentinel2 = mapchete_eo.platforms.sentinel2
7
+
8
+ [mapchete.processes]
9
+ dtype_scale = mapchete_eo.processes.dtype_scale
10
+ eo_to_xarray = mapchete_eo.processes.eo_to_xarray
11
+ merge_rasters = mapchete_eo.processes.merge_rasters
@@ -0,0 +1,21 @@
1
+ The MIT License (MIT)
2
+
3
+ Copyright (c) 2022 - 2025 EOX IT Services
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.