tiled 0.1.0__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 (521) hide show
  1. tiled-0.1.0/.codecov.yml +10 -0
  2. tiled-0.1.0/.coveragerc +14 -0
  3. tiled-0.1.0/.devcontainer/devcontainer.json +31 -0
  4. tiled-0.1.0/.flake8 +13 -0
  5. tiled-0.1.0/.git_archival.txt +4 -0
  6. tiled-0.1.0/.gitattributes +3 -0
  7. tiled-0.1.0/.github/pull_request_template.md +3 -0
  8. tiled-0.1.0/.github/workflows/ci.yml +161 -0
  9. tiled-0.1.0/.github/workflows/docs.yml +28 -0
  10. tiled-0.1.0/.github/workflows/publish-docs.yml +52 -0
  11. tiled-0.1.0/.github/workflows/publish-image.yml +83 -0
  12. tiled-0.1.0/.github/workflows/publish-pypi.yml +45 -0
  13. tiled-0.1.0/.gitignore +87 -0
  14. tiled-0.1.0/.isort.cfg +2 -0
  15. tiled-0.1.0/.mypy.ini +35 -0
  16. tiled-0.1.0/.pre-commit-config.yaml +37 -0
  17. tiled-0.1.0/.vscode/launch.json +28 -0
  18. tiled-0.1.0/CHANGELOG.md +752 -0
  19. tiled-0.1.0/Containerfile +124 -0
  20. tiled-0.1.0/LICENSE +29 -0
  21. tiled-0.1.0/PKG-INFO +393 -0
  22. tiled-0.1.0/README.md +164 -0
  23. tiled-0.1.0/asv.conf.json +171 -0
  24. tiled-0.1.0/benchmarks/__init__.py +0 -0
  25. tiled-0.1.0/benchmarks/benchmarks.py +67 -0
  26. tiled-0.1.0/canary-validator.yml +61 -0
  27. tiled-0.1.0/continuous_integration/docker-configs/ldap-docker-compose.yml +19 -0
  28. tiled-0.1.0/continuous_integration/scripts/download_sqlite_data.sh +4 -0
  29. tiled-0.1.0/continuous_integration/scripts/start_LDAP.sh +7 -0
  30. tiled-0.1.0/continuous_integration/scripts/start_postgres.sh +8 -0
  31. tiled-0.1.0/continuous_integration/scripts/start_redis.sh +5 -0
  32. tiled-0.1.0/docker-compose.yml +57 -0
  33. tiled-0.1.0/docs/Makefile +20 -0
  34. tiled-0.1.0/docs/make.bat +36 -0
  35. tiled-0.1.0/docs/source/_static/.placeholder +0 -0
  36. tiled-0.1.0/docs/source/_static/grafana-screenshot.png +0 -0
  37. tiled-0.1.0/docs/source/_static/orcid-authorize.png +0 -0
  38. tiled-0.1.0/docs/source/_static/orcid-login.png +0 -0
  39. tiled-0.1.0/docs/source/conf.py +294 -0
  40. tiled-0.1.0/docs/source/explanations/access-control.md +77 -0
  41. tiled-0.1.0/docs/source/explanations/architecture.md +129 -0
  42. tiled-0.1.0/docs/source/explanations/caching.md +82 -0
  43. tiled-0.1.0/docs/source/explanations/catalog.md +337 -0
  44. tiled-0.1.0/docs/source/explanations/compression.md +170 -0
  45. tiled-0.1.0/docs/source/explanations/faq.md +37 -0
  46. tiled-0.1.0/docs/source/explanations/lineage.md +118 -0
  47. tiled-0.1.0/docs/source/explanations/metadata.md +57 -0
  48. tiled-0.1.0/docs/source/explanations/roadmap.md +18 -0
  49. tiled-0.1.0/docs/source/explanations/security.md +333 -0
  50. tiled-0.1.0/docs/source/explanations/specialized-formats.md +280 -0
  51. tiled-0.1.0/docs/source/explanations/standards.md +15 -0
  52. tiled-0.1.0/docs/source/explanations/storage-database.md +163 -0
  53. tiled-0.1.0/docs/source/explanations/structures.md +591 -0
  54. tiled-0.1.0/docs/source/how-to/api-keys.md +224 -0
  55. tiled-0.1.0/docs/source/how-to/authentication.md +158 -0
  56. tiled-0.1.0/docs/source/how-to/client-logger.md +111 -0
  57. tiled-0.1.0/docs/source/how-to/configuration.md +76 -0
  58. tiled-0.1.0/docs/source/how-to/custom-clients.md +192 -0
  59. tiled-0.1.0/docs/source/how-to/custom-export-formats.md +237 -0
  60. tiled-0.1.0/docs/source/how-to/direct-client.md +99 -0
  61. tiled-0.1.0/docs/source/how-to/docker.md +234 -0
  62. tiled-0.1.0/docs/source/how-to/helm.md +98 -0
  63. tiled-0.1.0/docs/source/how-to/metrics.md +64 -0
  64. tiled-0.1.0/docs/source/how-to/profiles.md +199 -0
  65. tiled-0.1.0/docs/source/how-to/read-custom-formats.md +274 -0
  66. tiled-0.1.0/docs/source/how-to/register.md +114 -0
  67. tiled-0.1.0/docs/source/how-to/retries.md +37 -0
  68. tiled-0.1.0/docs/source/how-to/tiled-authn-database.md +54 -0
  69. tiled-0.1.0/docs/source/index.md +74 -0
  70. tiled-0.1.0/docs/source/reference/authentication.md +279 -0
  71. tiled-0.1.0/docs/source/reference/client-profiles-header.txt +16 -0
  72. tiled-0.1.0/docs/source/reference/commandline.md +11 -0
  73. tiled-0.1.0/docs/source/reference/http-api-overview.md +56 -0
  74. tiled-0.1.0/docs/source/reference/min-versions.rst +28 -0
  75. tiled-0.1.0/docs/source/reference/python-client.md +320 -0
  76. tiled-0.1.0/docs/source/reference/queries.md +129 -0
  77. tiled-0.1.0/docs/source/reference/release-history.rst +5 -0
  78. tiled-0.1.0/docs/source/reference/scopes.md +41 -0
  79. tiled-0.1.0/docs/source/reference/service-configuration-header.txt +30 -0
  80. tiled-0.1.0/docs/source/reference/service.md +141 -0
  81. tiled-0.1.0/docs/source/tutorials/export.md +161 -0
  82. tiled-0.1.0/docs/source/tutorials/installation.rst +84 -0
  83. tiled-0.1.0/docs/source/tutorials/login.md +86 -0
  84. tiled-0.1.0/docs/source/tutorials/navigation.md +215 -0
  85. tiled-0.1.0/docs/source/tutorials/plotly-integration.md +30 -0
  86. tiled-0.1.0/docs/source/tutorials/search.md +70 -0
  87. tiled-0.1.0/docs/source/tutorials/serving-files.md +94 -0
  88. tiled-0.1.0/docs/source/tutorials/simple-server.md +29 -0
  89. tiled-0.1.0/docs/source/tutorials/slicing.md +233 -0
  90. tiled-0.1.0/docs/source/tutorials/streaming.md +174 -0
  91. tiled-0.1.0/docs/source/tutorials/writing.md +117 -0
  92. tiled-0.1.0/docs/source/tutorials/zarr-integration.md +101 -0
  93. tiled-0.1.0/example_configs/access_tags/compile_tags.py +30 -0
  94. tiled-0.1.0/example_configs/access_tags/tag_definitions.yml +36 -0
  95. tiled-0.1.0/example_configs/catalog/create_catalog.py +34 -0
  96. tiled-0.1.0/example_configs/custom_export_formats/README.md +6 -0
  97. tiled-0.1.0/example_configs/custom_export_formats/custom_exporters.py +20 -0
  98. tiled-0.1.0/example_configs/external_service/README.md +1 -0
  99. tiled-0.1.0/example_configs/external_service/custom.py +94 -0
  100. tiled-0.1.0/example_configs/google_auth.yml +17 -0
  101. tiled-0.1.0/example_configs/multiple_providers.yml +26 -0
  102. tiled-0.1.0/example_configs/orcid_auth.yml +17 -0
  103. tiled-0.1.0/example_configs/saml.yml +30 -0
  104. tiled-0.1.0/example_configs/simple_oidc/README.md +47 -0
  105. tiled-0.1.0/example_configs/simple_oidc/oidc_provider_config.json +27 -0
  106. tiled-0.1.0/example_configs/simple_oidc/users.json +11 -0
  107. tiled-0.1.0/example_configs/single_catalog_single_user.yml +19 -0
  108. tiled-0.1.0/example_configs/small_single_user_demo.yml +5 -0
  109. tiled-0.1.0/example_configs/toy_authentication.yml +35 -0
  110. tiled-0.1.0/example_log_config.yml +41 -0
  111. tiled-0.1.0/hatch_build.py +67 -0
  112. tiled-0.1.0/helm/tiled/.helmignore +23 -0
  113. tiled-0.1.0/helm/tiled/Chart.yaml +19 -0
  114. tiled-0.1.0/helm/tiled/templates/NOTES.txt +22 -0
  115. tiled-0.1.0/helm/tiled/templates/_helpers.tpl +62 -0
  116. tiled-0.1.0/helm/tiled/templates/configmap.yaml +7 -0
  117. tiled-0.1.0/helm/tiled/templates/deployment.yaml +77 -0
  118. tiled-0.1.0/helm/tiled/templates/hpa.yaml +32 -0
  119. tiled-0.1.0/helm/tiled/templates/ingress.yaml +43 -0
  120. tiled-0.1.0/helm/tiled/templates/service.yaml +15 -0
  121. tiled-0.1.0/helm/tiled/templates/serviceaccount.yaml +13 -0
  122. tiled-0.1.0/helm/tiled/templates/tests/test-connection.yaml +15 -0
  123. tiled-0.1.0/helm/tiled/values.yaml +140 -0
  124. tiled-0.1.0/locust/README.md +107 -0
  125. tiled-0.1.0/locust/reader.py +253 -0
  126. tiled-0.1.0/locust/streaming.py +238 -0
  127. tiled-0.1.0/monitoring_example/README.md +19 -0
  128. tiled-0.1.0/monitoring_example/grafana/dashboards/dashboard.json +217 -0
  129. tiled-0.1.0/monitoring_example/grafana/main.yml +12 -0
  130. tiled-0.1.0/monitoring_example/grafana/provisioning/datasources/prometheus.yml +6 -0
  131. tiled-0.1.0/monitoring_example/prometheus/prometheus.yml +13 -0
  132. tiled-0.1.0/pixi.toml +150 -0
  133. tiled-0.1.0/pyproject.toml +332 -0
  134. tiled-0.1.0/pytest.ini +7 -0
  135. tiled-0.1.0/scripts/json_indexes.py +49 -0
  136. tiled-0.1.0/share/tiled/.identifying_file_72628d5f953b4229b58c9f1f8f6a9a09 +2 -0
  137. tiled-0.1.0/share/tiled/static/default_ui_settings.yml +59 -0
  138. tiled-0.1.0/share/tiled/static/favicon.ico +0 -0
  139. tiled-0.1.0/share/tiled/templates/device_code_failure.html +9 -0
  140. tiled-0.1.0/share/tiled/templates/device_code_form.html +25 -0
  141. tiled-0.1.0/share/tiled/templates/device_code_success.html +9 -0
  142. tiled-0.1.0/share/tiled/templates/index.html +66 -0
  143. tiled-0.1.0/share/tiled/templates/page.html +19 -0
  144. tiled-0.1.0/share/tiled/ui/assets/Checkbox-vyYUPBbX.js +1 -0
  145. tiled-0.1.0/share/tiled/ui/assets/DataGrid-DyFuY0s8.js +183 -0
  146. tiled-0.1.0/share/tiled/ui/assets/FormControlLabel-Ckn-i3Sp.js +1 -0
  147. tiled-0.1.0/share/tiled/ui/assets/FormGroup-y9-iIeyA.js +1 -0
  148. tiled-0.1.0/share/tiled/ui/assets/Input-BJwdycW3.js +2 -0
  149. tiled-0.1.0/share/tiled/ui/assets/Stack-Cwu0vGSf.js +1 -0
  150. tiled-0.1.0/share/tiled/ui/assets/Tooltip-DDkR3tcv.js +1 -0
  151. tiled-0.1.0/share/tiled/ui/assets/array-1d-B1Aq4rcu.js +69 -0
  152. tiled-0.1.0/share/tiled/ui/assets/array-nd-BY-MA2EH.js +1 -0
  153. tiled-0.1.0/share/tiled/ui/assets/browse-Ypk-yEjt.js +7 -0
  154. tiled-0.1.0/share/tiled/ui/assets/choose-partition-tmVN7Yw-.js +1 -0
  155. tiled-0.1.0/share/tiled/ui/assets/default-highlight-BScOjbTS.js +17 -0
  156. tiled-0.1.0/share/tiled/ui/assets/download-array-1GiW5t1M.js +1 -0
  157. tiled-0.1.0/share/tiled/ui/assets/download-core-CRepuej1.js +1 -0
  158. tiled-0.1.0/share/tiled/ui/assets/download-node-_Cs0Wq6z.js +1 -0
  159. tiled-0.1.0/share/tiled/ui/assets/download-table-CYWC9Dxd.js +1 -0
  160. tiled-0.1.0/share/tiled/ui/assets/index-Bjnup-cL.css +1 -0
  161. tiled-0.1.0/share/tiled/ui/assets/index-G4l7qcMm.js +214 -0
  162. tiled-0.1.0/share/tiled/ui/assets/index.esm-Dfo1uwtt.js +1 -0
  163. tiled-0.1.0/share/tiled/ui/assets/json-viewer-D8zlNXsw.js +1 -0
  164. tiled-0.1.0/share/tiled/ui/assets/metadata-view-BUHq6DoX.js +32 -0
  165. tiled-0.1.0/share/tiled/ui/assets/overview-array-BTlLTAOt.js +2 -0
  166. tiled-0.1.0/share/tiled/ui/assets/overview-generic-node-ysT48OV9.js +1 -0
  167. tiled-0.1.0/share/tiled/ui/assets/overview-table-Dx2_Un16.js +2 -0
  168. tiled-0.1.0/share/tiled/ui/assets/roboto-all-300-normal-lRRuIfal.woff +0 -0
  169. tiled-0.1.0/share/tiled/ui/assets/roboto-all-400-normal-BZJ9QssU.woff +0 -0
  170. tiled-0.1.0/share/tiled/ui/assets/roboto-all-500-normal-B0NPRryQ.woff +0 -0
  171. tiled-0.1.0/share/tiled/ui/assets/roboto-all-700-normal-BfaNsj0k.woff +0 -0
  172. tiled-0.1.0/share/tiled/ui/assets/roboto-cyrillic-300-normal-D6mjswgs.woff2 +0 -0
  173. tiled-0.1.0/share/tiled/ui/assets/roboto-cyrillic-400-normal-DVDTZtmW.woff2 +0 -0
  174. tiled-0.1.0/share/tiled/ui/assets/roboto-cyrillic-500-normal-DAkZhMOh.woff2 +0 -0
  175. tiled-0.1.0/share/tiled/ui/assets/roboto-cyrillic-700-normal-B5ZBKWCH.woff2 +0 -0
  176. tiled-0.1.0/share/tiled/ui/assets/roboto-cyrillic-ext-300-normal-TzZWIuiO.woff2 +0 -0
  177. tiled-0.1.0/share/tiled/ui/assets/roboto-cyrillic-ext-400-normal-DORK9bGA.woff2 +0 -0
  178. tiled-0.1.0/share/tiled/ui/assets/roboto-cyrillic-ext-500-normal-G9W8hgzQ.woff2 +0 -0
  179. tiled-0.1.0/share/tiled/ui/assets/roboto-cyrillic-ext-700-normal-CsrCEJIc.woff2 +0 -0
  180. tiled-0.1.0/share/tiled/ui/assets/roboto-greek-300-normal-ndiuWqED.woff2 +0 -0
  181. tiled-0.1.0/share/tiled/ui/assets/roboto-greek-400-normal-BRWHCUYo.woff2 +0 -0
  182. tiled-0.1.0/share/tiled/ui/assets/roboto-greek-500-normal-CpESfwfG.woff2 +0 -0
  183. tiled-0.1.0/share/tiled/ui/assets/roboto-greek-700-normal-Cc2Tq8FV.woff2 +0 -0
  184. tiled-0.1.0/share/tiled/ui/assets/roboto-latin-300-normal-ThHrQhYb.woff2 +0 -0
  185. tiled-0.1.0/share/tiled/ui/assets/roboto-latin-400-normal-mTIRXP6Y.woff2 +0 -0
  186. tiled-0.1.0/share/tiled/ui/assets/roboto-latin-500-normal-Dxdx3aXO.woff2 +0 -0
  187. tiled-0.1.0/share/tiled/ui/assets/roboto-latin-700-normal-CeM5gOv8.woff2 +0 -0
  188. tiled-0.1.0/share/tiled/ui/assets/roboto-latin-ext-300-normal-DEsNdRC-.woff2 +0 -0
  189. tiled-0.1.0/share/tiled/ui/assets/roboto-latin-ext-400-normal-4bLplyDh.woff2 +0 -0
  190. tiled-0.1.0/share/tiled/ui/assets/roboto-latin-ext-500-normal-BWKy6SgX.woff2 +0 -0
  191. tiled-0.1.0/share/tiled/ui/assets/roboto-latin-ext-700-normal-BYGCo3Go.woff2 +0 -0
  192. tiled-0.1.0/share/tiled/ui/assets/roboto-vietnamese-300-normal-CnPrVvBs.woff2 +0 -0
  193. tiled-0.1.0/share/tiled/ui/assets/roboto-vietnamese-400-normal-kCRe3VZk.woff2 +0 -0
  194. tiled-0.1.0/share/tiled/ui/assets/roboto-vietnamese-500-normal-CcijQRVW.woff2 +0 -0
  195. tiled-0.1.0/share/tiled/ui/assets/roboto-vietnamese-700-normal-SekShQfT.woff2 +0 -0
  196. tiled-0.1.0/share/tiled/ui/assets/toPropertyKey-DCwh5dYN.js +1 -0
  197. tiled-0.1.0/share/tiled/ui/favicon.ico +0 -0
  198. tiled-0.1.0/share/tiled/ui/index.html +24 -0
  199. tiled-0.1.0/share/tiled/ui/manifest.json +15 -0
  200. tiled-0.1.0/share/tiled/ui/robots.txt +3 -0
  201. tiled-0.1.0/tiled/__init__.py +6 -0
  202. tiled-0.1.0/tiled/__main__.py +3 -0
  203. tiled-0.1.0/tiled/_tests/__init__.py +0 -0
  204. tiled-0.1.0/tiled/_tests/adapters/__init__.py +0 -0
  205. tiled-0.1.0/tiled/_tests/adapters/test_arrow.py +90 -0
  206. tiled-0.1.0/tiled/_tests/adapters/test_sql.py +799 -0
  207. tiled-0.1.0/tiled/_tests/adapters/test_sql_arrays.py +256 -0
  208. tiled-0.1.0/tiled/_tests/adapters/test_sql_types.py +269 -0
  209. tiled-0.1.0/tiled/_tests/conftest.py +309 -0
  210. tiled-0.1.0/tiled/_tests/sql/__init__.py +0 -0
  211. tiled-0.1.0/tiled/_tests/sql/before_creating_fts5_virtual_table.sql +111 -0
  212. tiled-0.1.0/tiled/_tests/test_access_control.py +1049 -0
  213. tiled-0.1.0/tiled/_tests/test_allow_origins.py +37 -0
  214. tiled-0.1.0/tiled/_tests/test_array.py +231 -0
  215. tiled-0.1.0/tiled/_tests/test_asset_access.py +126 -0
  216. tiled-0.1.0/tiled/_tests/test_authentication.py +702 -0
  217. tiled-0.1.0/tiled/_tests/test_authenticators.py +51 -0
  218. tiled-0.1.0/tiled/_tests/test_awkward.py +253 -0
  219. tiled-0.1.0/tiled/_tests/test_caches.py +98 -0
  220. tiled-0.1.0/tiled/_tests/test_catalog.py +955 -0
  221. tiled-0.1.0/tiled/_tests/test_cli.py +125 -0
  222. tiled-0.1.0/tiled/_tests/test_client.py +165 -0
  223. tiled-0.1.0/tiled/_tests/test_client_cache.py +225 -0
  224. tiled-0.1.0/tiled/_tests/test_client_smoke.py +46 -0
  225. tiled-0.1.0/tiled/_tests/test_composite.py +671 -0
  226. tiled-0.1.0/tiled/_tests/test_compression.py +51 -0
  227. tiled-0.1.0/tiled/_tests/test_config.py +125 -0
  228. tiled-0.1.0/tiled/_tests/test_configs/config_missing_api_key.yml +9 -0
  229. tiled-0.1.0/tiled/_tests/test_configs/config_missing_secret_keys.yml +16 -0
  230. tiled-0.1.0/tiled/_tests/test_configs/config_missing_secret_keys_public.yml +19 -0
  231. tiled-0.1.0/tiled/_tests/test_configs/config_public_no_authenticator.yml +10 -0
  232. tiled-0.1.0/tiled/_tests/test_configs/config_with_api_key.yml +10 -0
  233. tiled-0.1.0/tiled/_tests/test_configs/config_with_secret_keys.yml +19 -0
  234. tiled-0.1.0/tiled/_tests/test_container_fields.py +150 -0
  235. tiled-0.1.0/tiled/_tests/test_container_files.py +85 -0
  236. tiled-0.1.0/tiled/_tests/test_csv_adapter.py +141 -0
  237. tiled-0.1.0/tiled/_tests/test_custom_format.py +93 -0
  238. tiled-0.1.0/tiled/_tests/test_dataframe.py +235 -0
  239. tiled-0.1.0/tiled/_tests/test_decoders.py +45 -0
  240. tiled-0.1.0/tiled/_tests/test_directory_walker.py +386 -0
  241. tiled-0.1.0/tiled/_tests/test_distinct.py +142 -0
  242. tiled-0.1.0/tiled/_tests/test_export.py +158 -0
  243. tiled-0.1.0/tiled/_tests/test_hdf5.py +453 -0
  244. tiled-0.1.0/tiled/_tests/test_history.py +22 -0
  245. tiled-0.1.0/tiled/_tests/test_import_object.py +36 -0
  246. tiled-0.1.0/tiled/_tests/test_indexers.py +87 -0
  247. tiled-0.1.0/tiled/_tests/test_inlined_contents.py +133 -0
  248. tiled-0.1.0/tiled/_tests/test_jpeg.py +189 -0
  249. tiled-0.1.0/tiled/_tests/test_json.py +35 -0
  250. tiled-0.1.0/tiled/_tests/test_metrics.py +66 -0
  251. tiled-0.1.0/tiled/_tests/test_mount_node.py +109 -0
  252. tiled-0.1.0/tiled/_tests/test_no_heavy_imports.py +20 -0
  253. tiled-0.1.0/tiled/_tests/test_npy.py +183 -0
  254. tiled-0.1.0/tiled/_tests/test_openapi.py +50 -0
  255. tiled-0.1.0/tiled/_tests/test_pagination.py +210 -0
  256. tiled-0.1.0/tiled/_tests/test_pickle.py +63 -0
  257. tiled-0.1.0/tiled/_tests/test_profiles.py +23 -0
  258. tiled-0.1.0/tiled/_tests/test_protocols.py +447 -0
  259. tiled-0.1.0/tiled/_tests/test_queries.py +382 -0
  260. tiled-0.1.0/tiled/_tests/test_register.py +9 -0
  261. tiled-0.1.0/tiled/_tests/test_resource_cache.py +45 -0
  262. tiled-0.1.0/tiled/_tests/test_routes.py +14 -0
  263. tiled-0.1.0/tiled/_tests/test_scaled_config_option.py +35 -0
  264. tiled-0.1.0/tiled/_tests/test_search.py +97 -0
  265. tiled-0.1.0/tiled/_tests/test_select_metadata.py +38 -0
  266. tiled-0.1.0/tiled/_tests/test_sentinel.py +13 -0
  267. tiled-0.1.0/tiled/_tests/test_server.py +146 -0
  268. tiled-0.1.0/tiled/_tests/test_simple_server.py +90 -0
  269. tiled-0.1.0/tiled/_tests/test_size_limit.py +85 -0
  270. tiled-0.1.0/tiled/_tests/test_slicer.py +227 -0
  271. tiled-0.1.0/tiled/_tests/test_sort.py +106 -0
  272. tiled-0.1.0/tiled/_tests/test_sparse.py +71 -0
  273. tiled-0.1.0/tiled/_tests/test_specs.py +25 -0
  274. tiled-0.1.0/tiled/_tests/test_structured_array.py +39 -0
  275. tiled-0.1.0/tiled/_tests/test_subscription.py +250 -0
  276. tiled-0.1.0/tiled/_tests/test_sync.py +160 -0
  277. tiled-0.1.0/tiled/_tests/test_tiff.py +215 -0
  278. tiled-0.1.0/tiled/_tests/test_tokenize.py +13 -0
  279. tiled-0.1.0/tiled/_tests/test_utils.py +367 -0
  280. tiled-0.1.0/tiled/_tests/test_validation.py +135 -0
  281. tiled-0.1.0/tiled/_tests/test_websockets.py +301 -0
  282. tiled-0.1.0/tiled/_tests/test_writing.py +805 -0
  283. tiled-0.1.0/tiled/_tests/test_xarray.py +201 -0
  284. tiled-0.1.0/tiled/_tests/test_zarr.py +342 -0
  285. tiled-0.1.0/tiled/_tests/utils.py +152 -0
  286. tiled-0.1.0/tiled/_version.py +34 -0
  287. tiled-0.1.0/tiled/access_control/__init__.py +0 -0
  288. tiled-0.1.0/tiled/access_control/access_policies.py +362 -0
  289. tiled-0.1.0/tiled/access_control/access_tags.py +536 -0
  290. tiled-0.1.0/tiled/access_control/scopes.py +36 -0
  291. tiled-0.1.0/tiled/adapters/__init__.py +0 -0
  292. tiled-0.1.0/tiled/adapters/array.py +195 -0
  293. tiled-0.1.0/tiled/adapters/arrow.py +328 -0
  294. tiled-0.1.0/tiled/adapters/awkward.py +123 -0
  295. tiled-0.1.0/tiled/adapters/awkward_buffers.py +84 -0
  296. tiled-0.1.0/tiled/adapters/awkward_directory_container.py +78 -0
  297. tiled-0.1.0/tiled/adapters/csv.py +369 -0
  298. tiled-0.1.0/tiled/adapters/dataframe.py +2 -0
  299. tiled-0.1.0/tiled/adapters/excel.py +102 -0
  300. tiled-0.1.0/tiled/adapters/files.py +6 -0
  301. tiled-0.1.0/tiled/adapters/hdf5.py +542 -0
  302. tiled-0.1.0/tiled/adapters/jpeg.py +124 -0
  303. tiled-0.1.0/tiled/adapters/mapping.py +883 -0
  304. tiled-0.1.0/tiled/adapters/netcdf.py +41 -0
  305. tiled-0.1.0/tiled/adapters/npy.py +116 -0
  306. tiled-0.1.0/tiled/adapters/parquet.py +177 -0
  307. tiled-0.1.0/tiled/adapters/protocols.py +155 -0
  308. tiled-0.1.0/tiled/adapters/resource_cache.py +102 -0
  309. tiled-0.1.0/tiled/adapters/sequence.py +230 -0
  310. tiled-0.1.0/tiled/adapters/sparse.py +229 -0
  311. tiled-0.1.0/tiled/adapters/sparse_blocks_parquet.py +216 -0
  312. tiled-0.1.0/tiled/adapters/sql.py +820 -0
  313. tiled-0.1.0/tiled/adapters/table.py +213 -0
  314. tiled-0.1.0/tiled/adapters/tiff.py +127 -0
  315. tiled-0.1.0/tiled/adapters/utils.py +103 -0
  316. tiled-0.1.0/tiled/adapters/xarray.py +133 -0
  317. tiled-0.1.0/tiled/adapters/zarr.py +307 -0
  318. tiled-0.1.0/tiled/alembic_utils.py +163 -0
  319. tiled-0.1.0/tiled/authenticators.py +885 -0
  320. tiled-0.1.0/tiled/authn_database/__init__.py +0 -0
  321. tiled-0.1.0/tiled/authn_database/__main__.py +32 -0
  322. tiled-0.1.0/tiled/authn_database/alembic.ini.template +99 -0
  323. tiled-0.1.0/tiled/authn_database/alembic_constants.py +5 -0
  324. tiled-0.1.0/tiled/authn_database/base.py +7 -0
  325. tiled-0.1.0/tiled/authn_database/connection_pool.py +61 -0
  326. tiled-0.1.0/tiled/authn_database/core.py +324 -0
  327. tiled-0.1.0/tiled/authn_database/migrations/README +1 -0
  328. tiled-0.1.0/tiled/authn_database/migrations/env.py +88 -0
  329. tiled-0.1.0/tiled/authn_database/migrations/script.py.mako +24 -0
  330. tiled-0.1.0/tiled/authn_database/migrations/versions/0c705a02954c_restore_server_default_for_time_created.py +38 -0
  331. tiled-0.1.0/tiled/authn_database/migrations/versions/13024b8a6b74_add_register_scope_to_default_roles.py +51 -0
  332. tiled-0.1.0/tiled/authn_database/migrations/versions/481830dd6c11_initialize.py +116 -0
  333. tiled-0.1.0/tiled/authn_database/migrations/versions/4a9dfaba4a98_add_pendingsession.py +35 -0
  334. tiled-0.1.0/tiled/authn_database/migrations/versions/56809bcbfcb0_add_create_scope_to_default_roles.py +51 -0
  335. tiled-0.1.0/tiled/authn_database/migrations/versions/722ff4e4fcc7_add_write_scopes_to_default_roles.py +51 -0
  336. tiled-0.1.0/tiled/authn_database/migrations/versions/769180ce732e_add_write_principals_scope_to_admin.py +47 -0
  337. tiled-0.1.0/tiled/authn_database/migrations/versions/a806cc635ab2_add_access_tags_to_api_keys.py +31 -0
  338. tiled-0.1.0/tiled/authn_database/migrations/versions/c7bd2573716d_add_session_state_column.py +28 -0
  339. tiled-0.1.0/tiled/authn_database/migrations/versions/d88e91ea03f9_localize_all_timestamps.py +122 -0
  340. tiled-0.1.0/tiled/authn_database/orm.py +242 -0
  341. tiled-0.1.0/tiled/catalog/__init__.py +6 -0
  342. tiled-0.1.0/tiled/catalog/__main__.py +32 -0
  343. tiled-0.1.0/tiled/catalog/adapter.py +1976 -0
  344. tiled-0.1.0/tiled/catalog/alembic.ini.template +99 -0
  345. tiled-0.1.0/tiled/catalog/alembic_constants.py +5 -0
  346. tiled-0.1.0/tiled/catalog/base.py +7 -0
  347. tiled-0.1.0/tiled/catalog/core.py +74 -0
  348. tiled-0.1.0/tiled/catalog/explain.py +80 -0
  349. tiled-0.1.0/tiled/catalog/migrations/README +1 -0
  350. tiled-0.1.0/tiled/catalog/migrations/env.py +88 -0
  351. tiled-0.1.0/tiled/catalog/migrations/script.py.mako +24 -0
  352. tiled-0.1.0/tiled/catalog/migrations/versions/0b033e7fbe30_add_awkward_to_structurefamily_enum.py +33 -0
  353. tiled-0.1.0/tiled/catalog/migrations/versions/1cd99c02d0c7_create_index_for_fulltext_search.py +39 -0
  354. tiled-0.1.0/tiled/catalog/migrations/versions/2ca16566d692_separate_structure_table.py +199 -0
  355. tiled-0.1.0/tiled/catalog/migrations/versions/3db11ff95b6c_changing_top_level_metadata_to_btree_gin.py +35 -0
  356. tiled-0.1.0/tiled/catalog/migrations/versions/45a702586b2a_add_composite_structure_family.py +35 -0
  357. tiled-0.1.0/tiled/catalog/migrations/versions/6825c778aa3c_initialize.py +22 -0
  358. tiled-0.1.0/tiled/catalog/migrations/versions/7809873ea2c7_add_node_id_index_in_data_sources_table.py +24 -0
  359. tiled-0.1.0/tiled/catalog/migrations/versions/83889e049ddc_add_table_to_structurefamily_enum.py +104 -0
  360. tiled-0.1.0/tiled/catalog/migrations/versions/9331ed94d6ac_add_access_blob_column_to_nodes.py +28 -0
  361. tiled-0.1.0/tiled/catalog/migrations/versions/a66028395cab_enrich_datasource_asset_association.py +288 -0
  362. tiled-0.1.0/tiled/catalog/migrations/versions/a963a6c32a0c_add_access_blob_column_to_revisions.py +28 -0
  363. tiled-0.1.0/tiled/catalog/migrations/versions/dfbb7478c6bd_demote_composite.py +216 -0
  364. tiled-0.1.0/tiled/catalog/migrations/versions/e05e918092c3_add_closure_table.py +445 -0
  365. tiled-0.1.0/tiled/catalog/migrations/versions/e756b9381c14_add_structure_family_to_data_sources.py +65 -0
  366. tiled-0.1.0/tiled/catalog/migrations/versions/ed3a4223a600_create_sqlite_table_for_fulltext_search.py +59 -0
  367. tiled-0.1.0/tiled/catalog/orm.py +561 -0
  368. tiled-0.1.0/tiled/catalog/utils.py +10 -0
  369. tiled-0.1.0/tiled/client/CACHEY_LICENSE.txt +28 -0
  370. tiled-0.1.0/tiled/client/__init__.py +20 -0
  371. tiled-0.1.0/tiled/client/array.py +392 -0
  372. tiled-0.1.0/tiled/client/auth.py +156 -0
  373. tiled-0.1.0/tiled/client/awkward.py +112 -0
  374. tiled-0.1.0/tiled/client/base.py +897 -0
  375. tiled-0.1.0/tiled/client/cache.py +400 -0
  376. tiled-0.1.0/tiled/client/cache_control.py +332 -0
  377. tiled-0.1.0/tiled/client/composite.py +280 -0
  378. tiled-0.1.0/tiled/client/constructors.py +263 -0
  379. tiled-0.1.0/tiled/client/container.py +1315 -0
  380. tiled-0.1.0/tiled/client/context.py +1062 -0
  381. tiled-0.1.0/tiled/client/dataframe.py +330 -0
  382. tiled-0.1.0/tiled/client/decoders.py +46 -0
  383. tiled-0.1.0/tiled/client/download.py +112 -0
  384. tiled-0.1.0/tiled/client/logger.py +147 -0
  385. tiled-0.1.0/tiled/client/metadata_update.py +50 -0
  386. tiled-0.1.0/tiled/client/node.py +10 -0
  387. tiled-0.1.0/tiled/client/register.py +640 -0
  388. tiled-0.1.0/tiled/client/smoke.py +44 -0
  389. tiled-0.1.0/tiled/client/sparse.py +181 -0
  390. tiled-0.1.0/tiled/client/stream.py +242 -0
  391. tiled-0.1.0/tiled/client/sync.py +157 -0
  392. tiled-0.1.0/tiled/client/transport.py +223 -0
  393. tiled-0.1.0/tiled/client/utils.py +439 -0
  394. tiled-0.1.0/tiled/client/xarray.py +226 -0
  395. tiled-0.1.0/tiled/commandline/__init__.py +0 -0
  396. tiled-0.1.0/tiled/commandline/_admin.py +193 -0
  397. tiled-0.1.0/tiled/commandline/_api_key.py +136 -0
  398. tiled-0.1.0/tiled/commandline/_catalog.py +148 -0
  399. tiled-0.1.0/tiled/commandline/_profile.py +174 -0
  400. tiled-0.1.0/tiled/commandline/_register.py +143 -0
  401. tiled-0.1.0/tiled/commandline/_serve.py +742 -0
  402. tiled-0.1.0/tiled/commandline/_utils.py +85 -0
  403. tiled-0.1.0/tiled/commandline/main.py +172 -0
  404. tiled-0.1.0/tiled/config.py +405 -0
  405. tiled-0.1.0/tiled/config_schemas/client_profiles.yml +168 -0
  406. tiled-0.1.0/tiled/config_schemas/service_configuration.yml +527 -0
  407. tiled-0.1.0/tiled/examples/__init__.py +0 -0
  408. tiled-0.1.0/tiled/examples/generate_files.py +51 -0
  409. tiled-0.1.0/tiled/examples/generated.py +191 -0
  410. tiled-0.1.0/tiled/examples/generated_minimal.py +29 -0
  411. tiled-0.1.0/tiled/examples/nexus.py +39 -0
  412. tiled-0.1.0/tiled/examples/numpy_structured_dtypes.py +21 -0
  413. tiled-0.1.0/tiled/examples/xdi.py +279 -0
  414. tiled-0.1.0/tiled/iterviews.py +248 -0
  415. tiled-0.1.0/tiled/media_type_registration.py +358 -0
  416. tiled-0.1.0/tiled/mimetypes.py +106 -0
  417. tiled-0.1.0/tiled/ndslice.py +176 -0
  418. tiled-0.1.0/tiled/profiles.py +342 -0
  419. tiled-0.1.0/tiled/queries.py +638 -0
  420. tiled-0.1.0/tiled/query_registration.py +134 -0
  421. tiled-0.1.0/tiled/schemas.py +36 -0
  422. tiled-0.1.0/tiled/serialization/__init__.py +32 -0
  423. tiled-0.1.0/tiled/serialization/array.py +166 -0
  424. tiled-0.1.0/tiled/serialization/awkward.py +78 -0
  425. tiled-0.1.0/tiled/serialization/container.py +115 -0
  426. tiled-0.1.0/tiled/serialization/image_serializer_helpers.py +384 -0
  427. tiled-0.1.0/tiled/serialization/scikit-image-LICENSE.txt +81 -0
  428. tiled-0.1.0/tiled/serialization/sparse.py +113 -0
  429. tiled-0.1.0/tiled/serialization/table.py +150 -0
  430. tiled-0.1.0/tiled/serialization/xarray.py +136 -0
  431. tiled-0.1.0/tiled/server/__init__.py +3 -0
  432. tiled-0.1.0/tiled/server/app.py +959 -0
  433. tiled-0.1.0/tiled/server/authentication.py +1362 -0
  434. tiled-0.1.0/tiled/server/compression.py +142 -0
  435. tiled-0.1.0/tiled/server/core.py +817 -0
  436. tiled-0.1.0/tiled/server/dependencies.py +163 -0
  437. tiled-0.1.0/tiled/server/etag.py +36 -0
  438. tiled-0.1.0/tiled/server/file_response_with_range.py +99 -0
  439. tiled-0.1.0/tiled/server/links.py +53 -0
  440. tiled-0.1.0/tiled/server/logging_config.py +54 -0
  441. tiled-0.1.0/tiled/server/metrics.py +167 -0
  442. tiled-0.1.0/tiled/server/principal_log_filter.py +28 -0
  443. tiled-0.1.0/tiled/server/protocols.py +23 -0
  444. tiled-0.1.0/tiled/server/router.py +2439 -0
  445. tiled-0.1.0/tiled/server/schemas.py +597 -0
  446. tiled-0.1.0/tiled/server/settings.py +68 -0
  447. tiled-0.1.0/tiled/server/simple.py +181 -0
  448. tiled-0.1.0/tiled/server/utils.py +109 -0
  449. tiled-0.1.0/tiled/server/zarr.py +511 -0
  450. tiled-0.1.0/tiled/storage.py +222 -0
  451. tiled-0.1.0/tiled/structures/__init__.py +0 -0
  452. tiled-0.1.0/tiled/structures/array.py +281 -0
  453. tiled-0.1.0/tiled/structures/awkward.py +75 -0
  454. tiled-0.1.0/tiled/structures/core.py +68 -0
  455. tiled-0.1.0/tiled/structures/data_source.py +41 -0
  456. tiled-0.1.0/tiled/structures/sparse.py +50 -0
  457. tiled-0.1.0/tiled/structures/table.py +119 -0
  458. tiled-0.1.0/tiled/type_aliases.py +30 -0
  459. tiled-0.1.0/tiled/utils.py +900 -0
  460. tiled-0.1.0/tiled/validation_registration.py +85 -0
  461. tiled-0.1.0/web-frontend/.eslintrc.json +15 -0
  462. tiled-0.1.0/web-frontend/.prettierignore +3 -0
  463. tiled-0.1.0/web-frontend/.prettierrc.json +1 -0
  464. tiled-0.1.0/web-frontend/README.md +35 -0
  465. tiled-0.1.0/web-frontend/import-sorter.json +7 -0
  466. tiled-0.1.0/web-frontend/index.html +23 -0
  467. tiled-0.1.0/web-frontend/package-lock.json +6378 -0
  468. tiled-0.1.0/web-frontend/package.json +68 -0
  469. tiled-0.1.0/web-frontend/public/favicon.ico +0 -0
  470. tiled-0.1.0/web-frontend/public/manifest.json +15 -0
  471. tiled-0.1.0/web-frontend/public/robots.txt +3 -0
  472. tiled-0.1.0/web-frontend/src/App.css +38 -0
  473. tiled-0.1.0/web-frontend/src/App.tsx +63 -0
  474. tiled-0.1.0/web-frontend/src/client.ts +51 -0
  475. tiled-0.1.0/web-frontend/src/clipboard-copy.d.ts +6 -0
  476. tiled-0.1.0/web-frontend/src/components/array-1d/array-1d.test.tsx +60 -0
  477. tiled-0.1.0/web-frontend/src/components/array-1d/array-1d.tsx +161 -0
  478. tiled-0.1.0/web-frontend/src/components/array-nd/array-nd.test.tsx +82 -0
  479. tiled-0.1.0/web-frontend/src/components/array-nd/array-nd.tsx +117 -0
  480. tiled-0.1.0/web-frontend/src/components/choose-partition/choose-partition.tsx +50 -0
  481. tiled-0.1.0/web-frontend/src/components/column-list/column-list.tsx +96 -0
  482. tiled-0.1.0/web-frontend/src/components/contents/contents.test.tsx +180 -0
  483. tiled-0.1.0/web-frontend/src/components/contents/contents.tsx +113 -0
  484. tiled-0.1.0/web-frontend/src/components/cut-slider/cut-slider.tsx +71 -0
  485. tiled-0.1.0/web-frontend/src/components/download-array/download-array.test.tsx +111 -0
  486. tiled-0.1.0/web-frontend/src/components/download-array/download-array.tsx +157 -0
  487. tiled-0.1.0/web-frontend/src/components/download-core/download-core.test.tsx +122 -0
  488. tiled-0.1.0/web-frontend/src/components/download-core/download-core.tsx +186 -0
  489. tiled-0.1.0/web-frontend/src/components/download-node/download-node.test.tsx +22 -0
  490. tiled-0.1.0/web-frontend/src/components/download-node/download-node.tsx +23 -0
  491. tiled-0.1.0/web-frontend/src/components/download-table/download-table.test.tsx +132 -0
  492. tiled-0.1.0/web-frontend/src/components/download-table/download-table.tsx +105 -0
  493. tiled-0.1.0/web-frontend/src/components/error-boundary/error-boundary.test.tsx +59 -0
  494. tiled-0.1.0/web-frontend/src/components/error-boundary/error-boundary.tsx +36 -0
  495. tiled-0.1.0/web-frontend/src/components/json-viewer/json-viewer.tsx +28 -0
  496. tiled-0.1.0/web-frontend/src/components/line/line.tsx +51 -0
  497. tiled-0.1.0/web-frontend/src/components/metadata-view/metadata-view.tsx +28 -0
  498. tiled-0.1.0/web-frontend/src/components/node-breadcrumbs/node-breadcrumbs.test.tsx +50 -0
  499. tiled-0.1.0/web-frontend/src/components/node-breadcrumbs/node-breadcrumbs.tsx +42 -0
  500. tiled-0.1.0/web-frontend/src/components/node-contents/node-contents.tsx +64 -0
  501. tiled-0.1.0/web-frontend/src/components/node-lazy-contents/node-lazy-contents.test.tsx +262 -0
  502. tiled-0.1.0/web-frontend/src/components/node-lazy-contents/node-lazy-contents.tsx +197 -0
  503. tiled-0.1.0/web-frontend/src/components/overview-array/overview-array.tsx +63 -0
  504. tiled-0.1.0/web-frontend/src/components/overview-generic-node/overview-generic-node.tsx +46 -0
  505. tiled-0.1.0/web-frontend/src/components/overview-table/overview-table.tsx +176 -0
  506. tiled-0.1.0/web-frontend/src/components/range-slider/range-slider.test.tsx +71 -0
  507. tiled-0.1.0/web-frontend/src/components/range-slider/range-slider.tsx +123 -0
  508. tiled-0.1.0/web-frontend/src/components/tiled-app-bar/tiled-app-bar.test.tsx +34 -0
  509. tiled-0.1.0/web-frontend/src/components/tiled-app-bar/tiled-app-bar.tsx +36 -0
  510. tiled-0.1.0/web-frontend/src/context/settings.tsx +11 -0
  511. tiled-0.1.0/web-frontend/src/index.tsx +21 -0
  512. tiled-0.1.0/web-frontend/src/openapi_schemas.ts +432 -0
  513. tiled-0.1.0/web-frontend/src/routes/browse.test.tsx +355 -0
  514. tiled-0.1.0/web-frontend/src/routes/browse.tsx +299 -0
  515. tiled-0.1.0/web-frontend/src/settings.ts +32 -0
  516. tiled-0.1.0/web-frontend/src/theme.ts +19 -0
  517. tiled-0.1.0/web-frontend/test/e2e.spec.ts +6 -0
  518. tiled-0.1.0/web-frontend/test/setup.ts +10 -0
  519. tiled-0.1.0/web-frontend/tsconfig.json +20 -0
  520. tiled-0.1.0/web-frontend/vite-env.d.ts +1 -0
  521. tiled-0.1.0/web-frontend/vite.config.js +40 -0
@@ -0,0 +1,10 @@
1
+ # show coverage in CI status, not as a comment.
2
+ comment: off
3
+ coverage:
4
+ status:
5
+ project:
6
+ default:
7
+ target: auto
8
+ patch:
9
+ default:
10
+ target: auto
@@ -0,0 +1,14 @@
1
+ [run]
2
+ source =
3
+ tiled
4
+ [report]
5
+ omit =
6
+ */python?.?/*
7
+ */site-packages/nose/*
8
+ # ignore _version.py and versioneer.py
9
+ .*version.*
10
+ *_version.py
11
+ */_tests/*
12
+
13
+ exclude_lines =
14
+ if __name__ == '__main__':
@@ -0,0 +1,31 @@
1
+ {
2
+ "name": "tiled-devcontainer",
3
+ "build": {
4
+ "context": "..",
5
+ "dockerfile": "../Containerfile",
6
+ "target": "developer",
7
+ "args": {
8
+ "PYTHON_VERSION": "3.9"
9
+ }
10
+ },
11
+ "containerEnv": {
12
+ "TILED_BUILD_SKIP_UI": "1"
13
+ },
14
+ "features": {
15
+ "ghcr.io/devcontainers/features/git:1": {}
16
+ },
17
+ "postCreateCommand": "set -ex && uv sync --extra all --extra dev --project src && uv tool install pre-commit --with pre-commit-uv && SHELL=bash uv tool update-shell && pre-commit install",
18
+ "customizations": {
19
+ "vscode": {
20
+ "settings": {
21
+ "python.defaultInterpreterPath": "/app/bin/python"
22
+ },
23
+ "extensions": [
24
+ "ms-python.python",
25
+ "ms-toolsai.jupyter",
26
+ "GitHub.codespaces",
27
+ "ms-vscode-remote.remote-containers"
28
+ ]
29
+ }
30
+ }
31
+ }
tiled-0.1.0/.flake8 ADDED
@@ -0,0 +1,13 @@
1
+ [flake8]
2
+ exclude =
3
+ .git,
4
+ __pycache__,
5
+ build,
6
+ dist,
7
+ versioneer.py,
8
+ tiled/_version.py,
9
+ tiled/serialization/_zipfile_py39.py,
10
+ docs/source/conf.py,
11
+ share,
12
+ web-frontend,
13
+ max-line-length = 115
@@ -0,0 +1,4 @@
1
+ node: $Format:%H$
2
+ node-date: $Format:%cI$
3
+ describe-name: $Format:%(describe:tags=true,match=*[0-9]*)$
4
+ ref-names: $Format:%D$
@@ -0,0 +1,3 @@
1
+ .git_archival.txt export-subst
2
+ # SCM syntax highlighting & preventing 3-way merges
3
+ pixi.lock merge=binary linguist-language=YAML linguist-generated=true
@@ -0,0 +1,3 @@
1
+ ### Checklist
2
+ - [ ] Add a Changelog entry
3
+ - [ ] Add the ticket number which this PR closes to the comment section
@@ -0,0 +1,161 @@
1
+ name: CI
2
+
3
+ on:
4
+ pull_request:
5
+ push:
6
+ branches:
7
+ - main
8
+ schedule:
9
+ - cron: '00 4 * * *' # daily at 4AM
10
+
11
+ env:
12
+ TEST_TAG: bluesky/tiled:test
13
+
14
+ jobs:
15
+ pre-commit:
16
+ name: Static Code Checks
17
+ runs-on: ubuntu-latest
18
+ steps:
19
+ - uses: actions/checkout@v3
20
+ - uses: pre-commit/action@v3.0.0
21
+
22
+ linux_checks:
23
+
24
+ name: Test on Linux
25
+ runs-on: ubuntu-latest
26
+ strategy:
27
+ matrix:
28
+ python-version:
29
+ - "3.9"
30
+ - "3.10"
31
+ - "3.11"
32
+ - "3.12"
33
+ - "3.13"
34
+ fail-fast: false
35
+ steps:
36
+
37
+ - uses: actions/checkout@v3
38
+
39
+ - name: Install uv and set the python version
40
+ uses: astral-sh/setup-uv@v6
41
+ with:
42
+ python-version: ${{ matrix.python-version }}
43
+
44
+ - name: Install tiled
45
+ run: uv sync --all-extras
46
+
47
+ # TODO Find a new image to use.
48
+ # https://github.com/bluesky/tiled/issues/1109
49
+ # - name: Start LDAP service in container.
50
+ # shell: bash -l {0}
51
+ # run: source continuous_integration/scripts/start_LDAP.sh
52
+
53
+ - name: Download SQLite example data.
54
+ shell: bash -l {0}
55
+ run: source continuous_integration/scripts/download_sqlite_data.sh
56
+
57
+ - name: Start PostgreSQL service in container.
58
+ shell: bash -l {0}
59
+ run: source continuous_integration/scripts/start_postgres.sh
60
+
61
+ - name: Start Redis service in container.
62
+ shell: bash -l {0}
63
+ run: source continuous_integration/scripts/start_redis.sh
64
+
65
+
66
+ - name: Ensure example data is migrated to current catalog database schema.
67
+ # The example data is expected to be kept up to date to the latest Tiled
68
+ # release, but this CI run may include some unreleased schema changes,
69
+ # so we run a migration here.
70
+ shell: bash -l {0}
71
+ run: |
72
+ set -vxeuo pipefail
73
+ uv run tiled catalog upgrade-database sqlite:///tiled_test_db_sqlite.db
74
+ uv run tiled catalog upgrade-database postgresql://postgres:secret@localhost:5432/tiled-example-data
75
+
76
+ - name: Test with pytest
77
+ shell: bash -l {0}
78
+ run: |
79
+ set -vxeuo pipefail
80
+ uv run coverage run -m pytest -v
81
+ uv run coverage report -m
82
+ uv run coverage xml -o cov.xml
83
+ env:
84
+ # Provide test suite with PostgreSQL and Redis databases to use.
85
+ TILED_TEST_POSTGRESQL_URI: postgresql://postgres:secret@localhost:5432
86
+ TILED_TEST_REIDS_URI: redis://localhost:6379
87
+ # TODO Reinstate after finding a new image to use
88
+ # https://github.com/bluesky/tiled/issues/1109
89
+ # # Opt in to LDAPAuthenticator tests.
90
+ # TILED_TEST_LDAP: 1
91
+
92
+ - name: Upload coverage to Codecov
93
+ uses: codecov/codecov-action@v4
94
+ with:
95
+ name: ${{ inputs.python-version }}/${{ inputs.runs-on }}
96
+ files: cov.xml
97
+ env:
98
+ CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
99
+
100
+ windows_checks:
101
+ name: Test on Windows
102
+ runs-on: windows-latest
103
+ strategy:
104
+ matrix:
105
+ python-version: ["3.12"]
106
+ fail-fast: false
107
+ steps:
108
+
109
+ - uses: actions/checkout@v3
110
+
111
+ - name: Install uv and set the python version
112
+ uses: astral-sh/setup-uv@v6
113
+ with:
114
+ python-version: ${{ matrix.python-version }}
115
+
116
+ - name: Install tiled
117
+ run: uv sync --all-extras
118
+ env:
119
+ TILED_BUILD_SKIP_UI: 1
120
+
121
+ - name: Test with pytest
122
+ run: uv run pytest -v
123
+
124
+ container_canary:
125
+ name: Build and validate container
126
+ runs-on: ubuntu-latest
127
+ steps:
128
+ - name: Checkout
129
+ uses: actions/checkout@v3
130
+
131
+ - name: Install Container Canary
132
+ run: |
133
+ curl -L https://github.com/NVIDIA/container-canary/releases/download/v0.2.1/canary_linux_amd64 > /usr/local/bin/canary
134
+ chmod +x /usr/local/bin/canary
135
+
136
+ - name: Set up Docker Buildx
137
+ uses: docker/setup-buildx-action@e468171a9de216ec08956ac3ada2f0791b6bd435 # v3
138
+
139
+ - name: Build Docker image on multiple arch
140
+ uses: docker/build-push-action@263435318d21b8e681c14492fe198d362a7d2c83 # v6
141
+ with:
142
+ context: .
143
+ file: Containerfile
144
+ platforms: linux/amd64,linux/arm64
145
+ cache-from: type=gha
146
+ cache-to: type=gha,mode=max
147
+
148
+ - name: Tag and load Docker image on single arch for testing (will use cache)
149
+ uses: docker/build-push-action@263435318d21b8e681c14492fe198d362a7d2c83 # v6
150
+ with:
151
+ context: .
152
+ file: Containerfile
153
+ load: true
154
+ push: false
155
+ tags: ${{ env.TEST_TAG }}
156
+ cache-from: type=gha
157
+ cache-to: type=gha,mode=max
158
+
159
+ - name: Validate container
160
+ run: |
161
+ canary validate --file canary-validator.yml ${{ env.TEST_TAG }}
@@ -0,0 +1,28 @@
1
+ name: Documentation
2
+
3
+ on: [push, pull_request]
4
+
5
+ jobs:
6
+ build:
7
+
8
+ runs-on: ubuntu-latest
9
+ strategy:
10
+ matrix:
11
+ python-version: ["3.12"]
12
+ fail-fast: false
13
+
14
+ steps:
15
+
16
+ - uses: actions/checkout@v3
17
+
18
+ - name: Install uv and set the python version
19
+ uses: astral-sh/setup-uv@v6
20
+ with:
21
+ python-version: ${{ matrix.python-version }}
22
+
23
+ - name: Install tiled
24
+ run: uv sync --all-extras
25
+
26
+ - name: Build Docs
27
+ shell: bash -l {0}
28
+ run: uv run make -C docs/ html
@@ -0,0 +1,52 @@
1
+ name: Publish Documentation
2
+
3
+ on:
4
+ push:
5
+ branches:
6
+ - main
7
+
8
+ jobs:
9
+ build:
10
+ if: github.repository_owner == 'bluesky'
11
+ runs-on: ubuntu-latest
12
+ strategy:
13
+ matrix:
14
+ python-version: ["3.12"]
15
+ fail-fast: false
16
+
17
+ steps:
18
+
19
+ - name: Set env.REPOSITORY_NAME # just the repo, as opposed to org/repo
20
+ shell: bash -l {0}
21
+ run: |
22
+ export REPOSITORY_NAME=${GITHUB_REPOSITORY#*/}
23
+ echo "REPOSITORY_NAME=${REPOSITORY_NAME}" >> $GITHUB_ENV
24
+
25
+ - uses: actions/checkout@v3
26
+ with:
27
+ fetch-depth: 1000 # should be enough to reach the most recent tag
28
+
29
+ - name: Install uv and set the python version
30
+ uses: astral-sh/setup-uv@v6
31
+ with:
32
+ python-version: ${{ matrix.python-version }}
33
+
34
+ - name: Install tiled
35
+ run: uv sync --all-extras
36
+
37
+ - name: Build Docs
38
+ shell: bash -l {0}
39
+ run: uv run make -C docs/ html
40
+
41
+ - name: Deploy documentation to blueskyproject.io.
42
+ # We pin to the SHA, not the tag, for security reasons.
43
+ # https://docs.github.com/en/free-pro-team@latest/actions/learn-github-actions/security-hardening-for-github-actions#using-third-party-actions
44
+ uses: peaceiris/actions-gh-pages@bbdfb200618d235585ad98e965f4aafc39b4c501 # v3.7.3
45
+ with:
46
+ deploy_key: ${{ secrets.ACTIONS_DOCUMENTATION_DEPLOY_KEY }}
47
+ publish_branch: master
48
+ publish_dir: ./docs/build/html
49
+ external_repository: bluesky/bluesky.github.io
50
+ destination_dir: ${{ env.REPOSITORY_NAME }} # just the repo name, without the "bluesky/"
51
+ keep_files: true # Keep old files.
52
+ force_orphan: false # Keep git history.
@@ -0,0 +1,83 @@
1
+ # This workflow uses actions that are not certified by GitHub.
2
+ # They are provided by a third-party and are governed by
3
+ # separate terms of service, privacy policy, and support
4
+ # documentation.
5
+
6
+ name: Create and publish image and chart
7
+
8
+ on:
9
+ push:
10
+ branches: ['main']
11
+ tags: ['v*']
12
+
13
+ env:
14
+ REGISTRY: ghcr.io
15
+ IMAGE_NAME: ${{ github.repository }}
16
+
17
+ jobs:
18
+ build-and-push:
19
+ runs-on: ubuntu-latest
20
+ permissions:
21
+ contents: read
22
+ packages: write
23
+
24
+ steps:
25
+ - name: Checkout repository
26
+ uses: actions/checkout@v4
27
+ with:
28
+ fetch-depth: 0
29
+
30
+ - name: Log in to the Container registry
31
+ uses: docker/login-action@74a5d142397b4f367a81961eba4e8cd7edddf772 # v3
32
+ with:
33
+ registry: ${{ env.REGISTRY }}
34
+ username: ${{ github.actor }}
35
+ password: ${{ secrets.GITHUB_TOKEN }}
36
+
37
+ - name: Set up Docker Buildx
38
+ uses: docker/setup-buildx-action@v3
39
+
40
+ - name: Extract metadata (tags, labels) for Docker
41
+ id: meta
42
+ uses: docker/metadata-action@c1e51972afc2121e065aed6d45c65596fe445f3f # v5
43
+ with:
44
+ images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}
45
+ tags: |
46
+ type=semver,pattern={{version}}
47
+ type=raw,value=latest
48
+
49
+ - name: Build and push Docker image
50
+ uses: docker/build-push-action@263435318d21b8e681c14492fe198d362a7d2c83 # v6
51
+ if: github.ref_type == 'tag'
52
+ with:
53
+ context: .
54
+ file: Containerfile
55
+ platforms: linux/amd64,linux/arm64
56
+ push: true
57
+ tags: ${{ steps.meta.outputs.tags }}
58
+ labels: ${{ steps.meta.outputs.labels }}
59
+ cache-from: type=gha
60
+ cache-to: type=gha,mode=max
61
+
62
+ - name: Install Helm
63
+ uses: Azure/setup-helm@v4
64
+ id: install
65
+ if: github.ref_type == 'tag'
66
+
67
+ - name: Lint Helm chart
68
+ run: helm lint helm/tiled
69
+
70
+ - name: Log in to the Chart registry
71
+ run: |
72
+ echo ${{ secrets.GITHUB_TOKEN }} | helm registry login ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }} --username ${{ github.repository_owner }} --password-stdin
73
+
74
+ - name: Package and Push chart
75
+ if: github.ref_type == 'tag'
76
+ run: |
77
+ helm dependencies update helm/tiled
78
+ helm package helm/tiled --version ${{ steps.meta.outputs.version }} --app-version ${{ steps.meta.outputs.version }} -d /tmp/
79
+
80
+ - name: Publish Helm chart
81
+ if: github.ref_type == 'tag'
82
+ run: |
83
+ helm push /tmp/tiled-${{ steps.meta.outputs.version }}.tgz oci://ghcr.io/bluesky/charts
@@ -0,0 +1,45 @@
1
+ name: Publish package on PyPI
2
+
3
+ on:
4
+ workflow_dispatch:
5
+ push:
6
+ branches:
7
+ - main
8
+ release:
9
+ types:
10
+ - published
11
+
12
+ jobs:
13
+ dist:
14
+ runs-on: ubuntu-latest
15
+ steps:
16
+ - uses: actions/checkout@v4
17
+
18
+ with:
19
+ fetch-depth: 0
20
+
21
+ - name: Build SDist and wheel
22
+ run: pipx run build
23
+
24
+ - uses: actions/upload-artifact@v4
25
+ with:
26
+ path: dist/*
27
+
28
+ - name: Check metadata
29
+ run: pipx run twine check dist/*
30
+
31
+ publish:
32
+ needs: [dist]
33
+ environment: pypi
34
+ permissions:
35
+ id-token: write
36
+ runs-on: ubuntu-latest
37
+ if: github.event_name == 'release' && github.event.action == 'published'
38
+
39
+ steps:
40
+ - uses: actions/download-artifact@v4
41
+ with:
42
+ name: artifact
43
+ path: dist
44
+
45
+ - uses: pypa/gh-action-pypi-publish@release/v1
tiled-0.1.0/.gitignore ADDED
@@ -0,0 +1,87 @@
1
+ # Byte-compiled / optimized / DLL files
2
+ __pycache__/
3
+
4
+ # Sphinx documentation
5
+ docs/build/
6
+ docs/source/reference/generated/
7
+
8
+ # Builds
9
+ /build
10
+ /dist
11
+ /tiled.egg-info
12
+ /web-frontend/dist
13
+
14
+ /web-frontend/node_modules
15
+
16
+ # pytest
17
+ .pytest_cache/
18
+
19
+ # Unit test / coverage reports
20
+ coverage/
21
+ htmlcov/
22
+ .tox/
23
+ .coverage
24
+ .cache
25
+ nosetests.xml
26
+ coverage.xml
27
+ cover/*
28
+
29
+ # PyBuilder
30
+ target/
31
+
32
+ # Editor files
33
+ #mac
34
+ .DS_Store
35
+ *~
36
+
37
+ #vim
38
+ *.swp
39
+ *.swo
40
+
41
+ #pycharm
42
+ .idea/
43
+
44
+ #VSCode
45
+ .vscode/*
46
+ !.vscode/launch.json
47
+
48
+ #Ipython Notebook
49
+ .ipynb_checkpoints
50
+
51
+ example_files/
52
+ tokens.json
53
+
54
+ # generated docs
55
+ docs/source/reference/client-profiles.md
56
+ docs/source/reference/service-configuration.md
57
+ docs/source/reference/api.yml
58
+
59
+ # placed React bundle
60
+ share/tiled/ui
61
+
62
+ config.yaml
63
+ config.yml
64
+ *.sqlite
65
+ *.db
66
+ *.db-wal
67
+ *.db-shm
68
+
69
+ prometheus_data
70
+ grafana_data
71
+ data
72
+ alembic.ini
73
+
74
+ tiled/_version.py
75
+
76
+ .env
77
+ .asv/
78
+ venv/
79
+ # pixi environments
80
+ .pixi
81
+ pixi.lock
82
+ # uv environments
83
+ uv.lock
84
+ .venv
85
+ # pixi environments
86
+ .pixi/*
87
+ !.pixi/config.toml
tiled-0.1.0/.isort.cfg ADDED
@@ -0,0 +1,2 @@
1
+ [settings]
2
+ profile=black
tiled-0.1.0/.mypy.ini ADDED
@@ -0,0 +1,35 @@
1
+ [mypy]
2
+ ignore_errors = True
3
+ ignore_missing_imports = True
4
+ disallow_untyped_defs = False
5
+ disallow_untyped_calls = False
6
+ check_untyped_defs = False
7
+ disallow_incomplete_defs = False
8
+
9
+
10
+ [mypy-tiled.adapters.*]
11
+ ignore_errors = False
12
+ ignore_missing_imports = False
13
+ check_untyped_defs = True
14
+ disallow_untyped_defs = True
15
+ disallow_incomplete_defs = True
16
+ disallow_untyped_calls = True
17
+ disallow_untyped_decorators = True
18
+
19
+ [mypy-tiled._tests.adapters.*]
20
+ ignore_errors = False
21
+ ignore_missing_imports = False
22
+ check_untyped_defs = True
23
+ disallow_untyped_defs = True
24
+ disallow_incomplete_defs = True
25
+ disallow_untyped_calls = True
26
+ disallow_untyped_decorators = False
27
+
28
+ [mypy-tiled._tests.test_protocols]
29
+ ignore_errors = False
30
+ ignore_missing_imports = False
31
+ check_untyped_defs = True
32
+ disallow_untyped_defs = True
33
+ disallow_incomplete_defs = True
34
+ disallow_untyped_calls = True
35
+ disallow_untyped_decorators = True
@@ -0,0 +1,37 @@
1
+ # See https://pre-commit.com for more information
2
+ # See https://pre-commit.com/hooks.html for more hooks
3
+ repos:
4
+ - repo: https://github.com/pre-commit/pre-commit-hooks
5
+ rev: v4.5.0
6
+ hooks:
7
+ - id: trailing-whitespace
8
+ - id: end-of-file-fixer
9
+ - id: check-ast
10
+ - id: check-case-conflict
11
+ - id: check-merge-conflict
12
+ - id: check-symlinks
13
+ - id: check-yaml
14
+ # These yaml files output valid yaml only after templating
15
+ exclude: ^helm/tiled/templates/
16
+ - id: debug-statements
17
+
18
+ - repo: https://github.com/pycqa/flake8
19
+ rev: 6.1.0
20
+ hooks:
21
+ - id: flake8
22
+
23
+ - repo: https://github.com/timothycrosley/isort
24
+ rev: 5.12.0
25
+ hooks:
26
+ - id: isort
27
+
28
+ - repo: https://github.com/psf/black
29
+ rev: 23.10.1
30
+ hooks:
31
+ - id: black
32
+
33
+ - repo: https://github.com/pre-commit/mirrors-mypy
34
+ rev: v1.9.0
35
+ hooks:
36
+ - id: mypy
37
+ args: [--strict]
@@ -0,0 +1,28 @@
1
+ {
2
+ "version": "0.2.0",
3
+ "configurations": [
4
+ {
5
+ "name": "Debug Tiled Server",
6
+ "type": "python",
7
+ "request": "launch",
8
+ "module": "tiled",
9
+ "args": [
10
+ "serve",
11
+ "config",
12
+ "--host", "127.0.0.1",
13
+ "--port", "8000",
14
+ "--scalable"
15
+ ],
16
+ "env": {
17
+ // Point this at any of your YAML configs or a config directory
18
+ "TILED_CONFIG":
19
+ "${workspaceFolder}/example_configs/single_catalog_single_user.yml",
20
+ "TILED_SINGLE_USER_API_KEY": "secret",
21
+ },
22
+ "console": "integratedTerminal",
23
+ "justMyCode": false,
24
+ "jinja": true,
25
+ "subProcess": true
26
+ }
27
+ ]
28
+ }