datajoint 0.14.2__tar.gz → 0.14.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.

Potentially problematic release.


This version of datajoint might be problematic. Click here for more details.

Files changed (259) hide show
  1. datajoint-0.14.3/.codespellrc +5 -0
  2. datajoint-0.14.3/.coveragerc +6 -0
  3. datajoint-0.14.3/.devcontainer/Dockerfile +13 -0
  4. datajoint-0.14.3/.devcontainer/devcontainer.json +50 -0
  5. datajoint-0.14.3/.devcontainer/docker-compose.yml +32 -0
  6. datajoint-0.14.3/.dockerignore +6 -0
  7. datajoint-0.14.3/.github/ISSUE_TEMPLATE/bug_report.md +37 -0
  8. datajoint-0.14.3/.github/ISSUE_TEMPLATE/feature_request.md +46 -0
  9. datajoint-0.14.3/.github/workflows/development.yaml +239 -0
  10. datajoint-0.14.3/.github/workflows/docs.yaml +19 -0
  11. datajoint-0.14.3/.gitignore +35 -0
  12. datajoint-0.14.3/.vscode/launch.json +16 -0
  13. datajoint-0.14.3/.vscode/settings.json +21 -0
  14. datajoint-0.14.3/CHANGELOG.md +338 -0
  15. datajoint-0.14.3/Dockerfile +24 -0
  16. datajoint-0.14.3/PKG-INFO +592 -0
  17. {datajoint-0.14.2 → datajoint-0.14.3}/datajoint/__init__.py +4 -1
  18. {datajoint-0.14.2 → datajoint-0.14.3}/datajoint/autopopulate.py +9 -2
  19. datajoint-0.14.3/datajoint/cli.py +77 -0
  20. {datajoint-0.14.2 → datajoint-0.14.3}/datajoint/condition.py +31 -0
  21. {datajoint-0.14.2 → datajoint-0.14.3}/datajoint/declare.py +20 -3
  22. {datajoint-0.14.2 → datajoint-0.14.3}/datajoint/dependencies.py +64 -32
  23. {datajoint-0.14.2 → datajoint-0.14.3}/datajoint/diagram.py +53 -43
  24. {datajoint-0.14.2 → datajoint-0.14.3}/datajoint/expression.py +82 -33
  25. {datajoint-0.14.2 → datajoint-0.14.3}/datajoint/external.py +7 -2
  26. {datajoint-0.14.2 → datajoint-0.14.3}/datajoint/fetch.py +11 -37
  27. {datajoint-0.14.2 → datajoint-0.14.3}/datajoint/heading.py +3 -1
  28. {datajoint-0.14.2 → datajoint-0.14.3}/datajoint/s3.py +1 -1
  29. {datajoint-0.14.2 → datajoint-0.14.3}/datajoint/schemas.py +7 -9
  30. {datajoint-0.14.2 → datajoint-0.14.3}/datajoint/settings.py +8 -0
  31. {datajoint-0.14.2 → datajoint-0.14.3}/datajoint/table.py +9 -6
  32. {datajoint-0.14.2 → datajoint-0.14.3}/datajoint/user_tables.py +27 -0
  33. {datajoint-0.14.2 → datajoint-0.14.3}/datajoint/version.py +1 -1
  34. datajoint-0.14.3/datajoint.egg-info/PKG-INFO +592 -0
  35. datajoint-0.14.3/datajoint.egg-info/SOURCES.txt +251 -0
  36. datajoint-0.14.3/datajoint.egg-info/entry_points.txt +3 -0
  37. {datajoint-0.14.2 → datajoint-0.14.3}/datajoint.egg-info/requires.txt +8 -1
  38. datajoint-0.14.3/docker-compose.yaml +79 -0
  39. datajoint-0.14.3/docs/.docker/Dockerfile +15 -0
  40. datajoint-0.14.3/docs/.docker/apk_requirements.txt +1 -0
  41. datajoint-0.14.3/docs/.docker/pip_requirements.txt +11 -0
  42. datajoint-0.14.3/docs/.markdownlint.yaml +20 -0
  43. datajoint-0.14.3/docs/README.md +16 -0
  44. datajoint-0.14.3/docs/docker-compose.yaml +38 -0
  45. datajoint-0.14.3/docs/mkdocs.yaml +194 -0
  46. datajoint-0.14.3/docs/src/.overrides/.icons/main/company-logo.svg +11 -0
  47. datajoint-0.14.3/docs/src/.overrides/assets/images/company-logo-blue.png +0 -0
  48. datajoint-0.14.3/docs/src/.overrides/assets/stylesheets/extra.css +105 -0
  49. datajoint-0.14.3/docs/src/.overrides/partials/nav.html +33 -0
  50. datajoint-0.14.3/docs/src/api/make_pages.py +18 -0
  51. datajoint-0.14.3/docs/src/changelog.md +338 -0
  52. datajoint-0.14.3/docs/src/citation.md +7 -0
  53. datajoint-0.14.3/docs/src/client/credentials.md +46 -0
  54. datajoint-0.14.3/docs/src/client/install.md +209 -0
  55. datajoint-0.14.3/docs/src/client/settings.md +11 -0
  56. datajoint-0.14.3/docs/src/client/stores.md +1 -0
  57. datajoint-0.14.3/docs/src/compute/distributed.md +166 -0
  58. datajoint-0.14.3/docs/src/compute/key-source.md +51 -0
  59. datajoint-0.14.3/docs/src/compute/make.md +25 -0
  60. datajoint-0.14.3/docs/src/compute/populate.md +127 -0
  61. datajoint-0.14.3/docs/src/concepts/data-model.md +117 -0
  62. datajoint-0.14.3/docs/src/concepts/data-pipelines.md +166 -0
  63. datajoint-0.14.3/docs/src/concepts/principles.md +136 -0
  64. datajoint-0.14.3/docs/src/concepts/teamwork.md +100 -0
  65. datajoint-0.14.3/docs/src/concepts/terminology.md +127 -0
  66. datajoint-0.14.3/docs/src/design/alter.md +1 -0
  67. datajoint-0.14.3/docs/src/design/diagrams.md +110 -0
  68. datajoint-0.14.3/docs/src/design/drop.md +23 -0
  69. datajoint-0.14.3/docs/src/design/integrity.md +218 -0
  70. datajoint-0.14.3/docs/src/design/normalization.md +117 -0
  71. datajoint-0.14.3/docs/src/design/recall.md +207 -0
  72. datajoint-0.14.3/docs/src/design/schema.md +49 -0
  73. datajoint-0.14.3/docs/src/design/tables/attach.md +67 -0
  74. datajoint-0.14.3/docs/src/design/tables/attributes.md +88 -0
  75. datajoint-0.14.3/docs/src/design/tables/blobs.md +1 -0
  76. datajoint-0.14.3/docs/src/design/tables/customtype.md +1 -0
  77. datajoint-0.14.3/docs/src/design/tables/declare.md +242 -0
  78. datajoint-0.14.3/docs/src/design/tables/dependencies.md +241 -0
  79. datajoint-0.14.3/docs/src/design/tables/filepath.md +96 -0
  80. datajoint-0.14.3/docs/src/design/tables/indexes.md +1 -0
  81. datajoint-0.14.3/docs/src/design/tables/lookup.md +31 -0
  82. datajoint-0.14.3/docs/src/design/tables/manual.md +47 -0
  83. datajoint-0.14.3/docs/src/design/tables/master-part.md +112 -0
  84. datajoint-0.14.3/docs/src/design/tables/primary.md +178 -0
  85. datajoint-0.14.3/docs/src/design/tables/tiers.md +68 -0
  86. datajoint-0.14.3/docs/src/develop.md +126 -0
  87. datajoint-0.14.3/docs/src/faq.md +191 -0
  88. datajoint-0.14.3/docs/src/images/StudentTable.png +0 -0
  89. datajoint-0.14.3/docs/src/images/added-example-ERD.svg +207 -0
  90. datajoint-0.14.3/docs/src/images/data-engineering.png +0 -0
  91. datajoint-0.14.3/docs/src/images/data-science-after.png +0 -0
  92. datajoint-0.14.3/docs/src/images/data-science-before.png +0 -0
  93. datajoint-0.14.3/docs/src/images/diff-example1.png +0 -0
  94. datajoint-0.14.3/docs/src/images/diff-example2.png +0 -0
  95. datajoint-0.14.3/docs/src/images/diff-example3.png +0 -0
  96. datajoint-0.14.3/docs/src/images/dimitri-ERD.svg +117 -0
  97. datajoint-0.14.3/docs/src/images/doc_1-1.png +0 -0
  98. datajoint-0.14.3/docs/src/images/doc_1-many.png +0 -0
  99. datajoint-0.14.3/docs/src/images/doc_many-1.png +0 -0
  100. datajoint-0.14.3/docs/src/images/doc_many-many.png +0 -0
  101. datajoint-0.14.3/docs/src/images/how-it-works.png +0 -0
  102. datajoint-0.14.3/docs/src/images/install-cmd-prompt.png +0 -0
  103. datajoint-0.14.3/docs/src/images/install-datajoint-1.png +0 -0
  104. datajoint-0.14.3/docs/src/images/install-datajoint-2.png +0 -0
  105. datajoint-0.14.3/docs/src/images/install-git-1.png +0 -0
  106. datajoint-0.14.3/docs/src/images/install-graphviz-1.png +0 -0
  107. datajoint-0.14.3/docs/src/images/install-graphviz-2a.png +0 -0
  108. datajoint-0.14.3/docs/src/images/install-graphviz-2b.png +0 -0
  109. datajoint-0.14.3/docs/src/images/install-jupyter-1.png +0 -0
  110. datajoint-0.14.3/docs/src/images/install-jupyter-2.png +0 -0
  111. datajoint-0.14.3/docs/src/images/install-matplotlib.png +0 -0
  112. datajoint-0.14.3/docs/src/images/install-pydotplus.png +0 -0
  113. datajoint-0.14.3/docs/src/images/install-python-advanced-1.png +0 -0
  114. datajoint-0.14.3/docs/src/images/install-python-advanced-2.png +0 -0
  115. datajoint-0.14.3/docs/src/images/install-python-simple.png +0 -0
  116. datajoint-0.14.3/docs/src/images/install-run-jupyter-1.png +0 -0
  117. datajoint-0.14.3/docs/src/images/install-run-jupyter-2.png +0 -0
  118. datajoint-0.14.3/docs/src/images/install-verify-graphviz.png +0 -0
  119. datajoint-0.14.3/docs/src/images/install-verify-jupyter.png +0 -0
  120. datajoint-0.14.3/docs/src/images/install-verify-python.png +0 -0
  121. datajoint-0.14.3/docs/src/images/join-example1.png +0 -0
  122. datajoint-0.14.3/docs/src/images/join-example2.png +0 -0
  123. datajoint-0.14.3/docs/src/images/join-example3.png +0 -0
  124. datajoint-0.14.3/docs/src/images/key_source_combination.png +0 -0
  125. datajoint-0.14.3/docs/src/images/map-dataflow.png +0 -0
  126. datajoint-0.14.3/docs/src/images/matched_tuples1.png +0 -0
  127. datajoint-0.14.3/docs/src/images/matched_tuples2.png +0 -0
  128. datajoint-0.14.3/docs/src/images/matched_tuples3.png +0 -0
  129. datajoint-0.14.3/docs/src/images/mp-diagram.png +0 -0
  130. datajoint-0.14.3/docs/src/images/op-restrict.png +0 -0
  131. datajoint-0.14.3/docs/src/images/outer-example1.png +0 -0
  132. datajoint-0.14.3/docs/src/images/pipeline-database.png +0 -0
  133. datajoint-0.14.3/docs/src/images/pipeline.png +0 -0
  134. datajoint-0.14.3/docs/src/images/python_collection.png +0 -0
  135. datajoint-0.14.3/docs/src/images/queries_example_diagram.png +0 -0
  136. datajoint-0.14.3/docs/src/images/query_object_preview.png +0 -0
  137. datajoint-0.14.3/docs/src/images/restrict-example1.png +0 -0
  138. datajoint-0.14.3/docs/src/images/restrict-example2.png +0 -0
  139. datajoint-0.14.3/docs/src/images/restrict-example3.png +0 -0
  140. datajoint-0.14.3/docs/src/images/shapes_pipeline.svg +36 -0
  141. datajoint-0.14.3/docs/src/images/spawned-classes-ERD.svg +147 -8
  142. datajoint-0.14.3/docs/src/images/union-example1.png +0 -0
  143. datajoint-0.14.3/docs/src/images/union-example2.png +0 -0
  144. datajoint-0.14.3/docs/src/images/virtual-module-ERD.svg +147 -8
  145. datajoint-0.14.3/docs/src/index.md +44 -0
  146. datajoint-0.14.3/docs/src/internal/transpilation.md +170 -0
  147. datajoint-0.14.3/docs/src/manipulation/delete.md +31 -0
  148. datajoint-0.14.3/docs/src/manipulation/index.md +9 -0
  149. datajoint-0.14.3/docs/src/manipulation/insert.md +94 -0
  150. datajoint-0.14.3/docs/src/manipulation/transactions.md +36 -0
  151. datajoint-0.14.3/docs/src/manipulation/update.md +48 -0
  152. datajoint-0.14.3/docs/src/publish-data.md +34 -0
  153. datajoint-0.14.3/docs/src/query/aggregation.md +29 -0
  154. datajoint-0.14.3/docs/src/query/example-schema.md +112 -0
  155. datajoint-0.14.3/docs/src/query/fetch.md +126 -0
  156. datajoint-0.14.3/docs/src/query/iteration.md +36 -0
  157. datajoint-0.14.3/docs/src/query/join.md +37 -0
  158. datajoint-0.14.3/docs/src/query/operators.md +395 -0
  159. datajoint-0.14.3/docs/src/query/principles.md +81 -0
  160. datajoint-0.14.3/docs/src/query/project.md +68 -0
  161. datajoint-0.14.3/docs/src/query/query-caching.md +42 -0
  162. datajoint-0.14.3/docs/src/query/restrict.md +193 -0
  163. datajoint-0.14.3/docs/src/query/union.md +48 -0
  164. datajoint-0.14.3/docs/src/query/universals.md +46 -0
  165. datajoint-0.14.3/docs/src/quick-start.md +460 -0
  166. datajoint-0.14.3/docs/src/sysadmin/bulk-storage.md +106 -0
  167. datajoint-0.14.3/docs/src/sysadmin/database-admin.md +364 -0
  168. datajoint-0.14.3/docs/src/sysadmin/external-store.md +293 -0
  169. datajoint-0.14.3/docs/src/tutorials/json.ipynb +1085 -0
  170. datajoint-0.14.3/images/pipeline.drawio +1 -0
  171. datajoint-0.14.3/images/pipeline.png +0 -0
  172. datajoint-0.14.3/pyproject.toml +71 -0
  173. datajoint-0.14.3/tests/__init__.py +0 -0
  174. datajoint-0.14.3/tests/conftest.py +535 -0
  175. datajoint-0.14.3/tests/data/Course.csv +46 -0
  176. datajoint-0.14.3/tests/data/CurrentTerm.csv +2 -0
  177. datajoint-0.14.3/tests/data/Department.csv +9 -0
  178. datajoint-0.14.3/tests/data/Enroll.csv +3365 -0
  179. datajoint-0.14.3/tests/data/Grade.csv +3028 -0
  180. datajoint-0.14.3/tests/data/Section.csv +757 -0
  181. datajoint-0.14.3/tests/data/Student.csv +301 -0
  182. datajoint-0.14.3/tests/data/StudentMajor.csv +227 -0
  183. datajoint-0.14.3/tests/data/Term.csv +19 -0
  184. datajoint-0.14.3/tests/schema.py +469 -0
  185. datajoint-0.14.3/tests/schema_adapted.py +62 -0
  186. datajoint-0.14.3/tests/schema_advanced.py +140 -0
  187. datajoint-0.14.3/tests/schema_aggr_regress.py +51 -0
  188. datajoint-0.14.3/tests/schema_alter.py +56 -0
  189. datajoint-0.14.3/tests/schema_external.py +88 -0
  190. datajoint-0.14.3/tests/schema_privileges.py +34 -0
  191. datajoint-0.14.3/tests/schema_simple.py +320 -0
  192. datajoint-0.14.3/tests/schema_university.py +112 -0
  193. datajoint-0.14.3/tests/schema_uuid.py +49 -0
  194. datajoint-0.14.3/tests/test_adapted_attributes.py +135 -0
  195. datajoint-0.14.3/tests/test_admin.py +150 -0
  196. datajoint-0.14.3/tests/test_aggr_regressions.py +127 -0
  197. datajoint-0.14.3/tests/test_alter.py +65 -0
  198. datajoint-0.14.3/tests/test_attach.py +66 -0
  199. datajoint-0.14.3/tests/test_autopopulate.py +139 -0
  200. datajoint-0.14.3/tests/test_blob.py +253 -0
  201. datajoint-0.14.3/tests/test_blob_matlab.py +171 -0
  202. datajoint-0.14.3/tests/test_bypass_serialization.py +56 -0
  203. datajoint-0.14.3/tests/test_cascading_delete.py +150 -0
  204. datajoint-0.14.3/tests/test_cli.py +111 -0
  205. datajoint-0.14.3/tests/test_connection.py +115 -0
  206. datajoint-0.14.3/tests/test_declare.py +427 -0
  207. datajoint-0.14.3/tests/test_dependencies.py +50 -0
  208. datajoint-0.14.3/tests/test_erd.py +68 -0
  209. datajoint-0.14.3/tests/test_external.py +131 -0
  210. datajoint-0.14.3/tests/test_external_class.py +50 -0
  211. datajoint-0.14.3/tests/test_fetch.py +371 -0
  212. datajoint-0.14.3/tests/test_fetch_same.py +68 -0
  213. datajoint-0.14.3/tests/test_filepath.py +265 -0
  214. datajoint-0.14.3/tests/test_foreign_keys.py +47 -0
  215. datajoint-0.14.3/tests/test_groupby.py +11 -0
  216. datajoint-0.14.3/tests/test_hash.py +6 -0
  217. datajoint-0.14.3/tests/test_jobs.py +146 -0
  218. datajoint-0.14.3/tests/test_json.py +222 -0
  219. datajoint-0.14.3/tests/test_log.py +5 -0
  220. datajoint-0.14.3/tests/test_nan.py +51 -0
  221. datajoint-0.14.3/tests/test_plugin.py +60 -0
  222. datajoint-0.14.3/tests/test_privileges.py +117 -0
  223. datajoint-0.14.3/tests/test_reconnection.py +32 -0
  224. datajoint-0.14.3/tests/test_relation.py +293 -0
  225. datajoint-0.14.3/tests/test_relation_u.py +78 -0
  226. datajoint-0.14.3/tests/test_relational_operand.py +666 -0
  227. datajoint-0.14.3/tests/test_s3.py +48 -0
  228. datajoint-0.14.3/tests/test_schema.py +254 -0
  229. datajoint-0.14.3/tests/test_schema_keywords.py +49 -0
  230. datajoint-0.14.3/tests/test_settings.py +105 -0
  231. datajoint-0.14.3/tests/test_tls.py +32 -0
  232. datajoint-0.14.3/tests/test_university.py +169 -0
  233. datajoint-0.14.3/tests/test_update1.py +146 -0
  234. datajoint-0.14.3/tests/test_utils.py +44 -0
  235. datajoint-0.14.3/tests/test_uuid.py +69 -0
  236. datajoint-0.14.3/tests/test_virtual_module.py +7 -0
  237. datajoint-0.14.2/MANIFEST.in +0 -1
  238. datajoint-0.14.2/PKG-INFO +0 -13
  239. datajoint-0.14.2/datajoint.egg-info/PKG-INFO +0 -13
  240. datajoint-0.14.2/datajoint.egg-info/SOURCES.txt +0 -38
  241. datajoint-0.14.2/requirements.txt +0 -13
  242. datajoint-0.14.2/setup.py +0 -46
  243. {datajoint-0.14.2 → datajoint-0.14.3}/LICENSE.txt +0 -0
  244. {datajoint-0.14.2 → datajoint-0.14.3}/README.md +0 -0
  245. {datajoint-0.14.2 → datajoint-0.14.3}/datajoint/admin.py +0 -0
  246. {datajoint-0.14.2 → datajoint-0.14.3}/datajoint/attribute_adapter.py +0 -0
  247. {datajoint-0.14.2 → datajoint-0.14.3}/datajoint/blob.py +0 -0
  248. {datajoint-0.14.2 → datajoint-0.14.3}/datajoint/connection.py +0 -0
  249. {datajoint-0.14.2 → datajoint-0.14.3}/datajoint/errors.py +0 -0
  250. {datajoint-0.14.2 → datajoint-0.14.3}/datajoint/hash.py +0 -0
  251. {datajoint-0.14.2 → datajoint-0.14.3}/datajoint/jobs.py +0 -0
  252. {datajoint-0.14.2 → datajoint-0.14.3}/datajoint/logging.py +0 -0
  253. {datajoint-0.14.2 → datajoint-0.14.3}/datajoint/plugin.py +0 -0
  254. {datajoint-0.14.2 → datajoint-0.14.3}/datajoint/preview.py +0 -0
  255. {datajoint-0.14.2 → datajoint-0.14.3}/datajoint/utils.py +0 -0
  256. {datajoint-0.14.2 → datajoint-0.14.3}/datajoint.egg-info/dependency_links.txt +0 -0
  257. {datajoint-0.14.2 → datajoint-0.14.3}/datajoint.egg-info/top_level.txt +0 -0
  258. {datajoint-0.14.2/datajoint.egg-info → datajoint-0.14.3}/datajoint.pub +0 -0
  259. {datajoint-0.14.2 → datajoint-0.14.3}/setup.cfg +0 -0
@@ -0,0 +1,5 @@
1
+ [codespell]
2
+ skip = .git,*.pdf,*.svg,*.csv,*.ipynb,*.drawio
3
+ # Rever -- nobody knows
4
+ # numer -- numerator variable
5
+ ignore-words-list = rever,numer
@@ -0,0 +1,6 @@
1
+ [run]
2
+ branch = False
3
+ source = datajoint
4
+
5
+ [report]
6
+ show_missing = True
@@ -0,0 +1,13 @@
1
+ ARG PY_VER
2
+ ARG DISTRO
3
+ FROM mcr.microsoft.com/devcontainers/python:${PY_VER}-${DISTRO}
4
+ RUN \
5
+ apt update && \
6
+ apt-get install bash-completion graphviz default-mysql-client -y && \
7
+ pip install flake8 black faker ipykernel pytest pytest-cov nose nose-cov datajoint jupyterlab && \
8
+ pip uninstall datajoint -y
9
+
10
+ USER root
11
+ ENV DJ_HOST db
12
+ ENV DJ_USER root
13
+ ENV DJ_PASS password
@@ -0,0 +1,50 @@
1
+ // For format details, see https://aka.ms/devcontainer.json. For config options, see the
2
+ // README at: https://github.com/devcontainers/templates/tree/main/src/docker-existing-docker-compose
3
+ {
4
+ "name": "Existing Docker Compose (Extend)",
5
+ // Update the 'dockerComposeFile' list if you have more compose files or use different names.
6
+ // The .devcontainer/docker-compose.yml file contains any overrides you need/want to make.
7
+ "dockerComposeFile": [
8
+ "../docker-compose.yaml",
9
+ "docker-compose.yml"
10
+ ],
11
+ // The 'service' property is the name of the service for the container that VS Code should
12
+ // use. Update this value and .devcontainer/docker-compose.yml to the real service name.
13
+ "service": "app",
14
+ // The optional 'workspaceFolder' property is the path VS Code should open by default when
15
+ // connected. This is typically a file mount in .devcontainer/docker-compose.yml
16
+ "workspaceFolder": "/workspaces/${localWorkspaceFolderBasename}",
17
+ // Features to add to the dev container. More info: https://containers.dev/features.
18
+ // "features": {},
19
+ // Use 'forwardPorts' to make a list of ports inside the container available locally.
20
+ "forwardPorts": [
21
+ 80,
22
+ 443,
23
+ 3306,
24
+ 8080,
25
+ 9000
26
+ ],
27
+ // Uncomment the next line if you want start specific services in your Docker Compose config.
28
+ // "runServices": [],
29
+ // Uncomment the next line if you want to keep your containers running after VS Code shuts down.
30
+ "shutdownAction": "stopCompose",
31
+ "onCreateCommand": "python3 -m pip install -q -e .[test]",
32
+ "features": {
33
+ "ghcr.io/devcontainers/features/git:1": {},
34
+ "ghcr.io/devcontainers/features/docker-in-docker:2": {},
35
+ "ghcr.io/devcontainers/features/github-cli:1": {},
36
+ },
37
+ // Configure tool-specific properties.
38
+ "customizations": {
39
+ "vscode": {
40
+ "extensions": [
41
+ "ms-python.python"
42
+ ]
43
+ }
44
+ },
45
+ "remoteEnv": {
46
+ "LOCAL_WORKSPACE_FOLDER": "${localWorkspaceFolder}"
47
+ }
48
+ // Uncomment to connect as an existing user other than the container default. More info: https://aka.ms/dev-containers-non-root.
49
+ // "remoteUser": "devcontainer"
50
+ }
@@ -0,0 +1,32 @@
1
+ version: '2.4'
2
+ services:
3
+ # Update this to the name of the service you want to work with in your docker-compose.yml file
4
+ app:
5
+ # Uncomment if you want to override the service's Dockerfile to one in the .devcontainer
6
+ # folder. Note that the path of the Dockerfile and context is relative to the *primary*
7
+ # docker-compose.yml file (the first in the devcontainer.json "dockerComposeFile"
8
+ # array). The sample below assumes your primary file is in the root of your project.
9
+ container_name: datajoint-python-devcontainer
10
+ image: datajoint/datajoint-python-devcontainer:${PY_VER:-3.11}-${DISTRO:-buster}
11
+ build:
12
+ context: .
13
+ dockerfile: .devcontainer/Dockerfile
14
+ args:
15
+ - PY_VER=${PY_VER:-3.11}
16
+ - DISTRO=${DISTRO:-buster}
17
+
18
+ volumes:
19
+ # Update this to wherever you want VS Code to mount the folder of your project
20
+ - ..:/workspaces:cached
21
+
22
+ # Uncomment the next four lines if you will use a ptrace-based debugger like C++, Go, and Rust.
23
+ # cap_add:
24
+ # - SYS_PTRACE
25
+ # security_opt:
26
+ # - seccomp:unconfined
27
+
28
+ user: root
29
+
30
+ # Overrides default command so things don't shut down after the process ends.
31
+ command: /bin/sh -c "while sleep 1000; do :; done"
32
+
@@ -0,0 +1,6 @@
1
+ notebook
2
+ build
3
+ *.egg-info
4
+ dist
5
+ .vscode
6
+ __pycache__
@@ -0,0 +1,37 @@
1
+ ---
2
+ name: Bug report
3
+ about: Create a report to help us improve
4
+ title: ''
5
+ labels: 'bug'
6
+ assignees: ''
7
+
8
+ ---
9
+
10
+ ## Bug Report
11
+
12
+ ### Description
13
+ A clear and concise description of what is the overall operation that is intended to be performed that resulted in an error.
14
+
15
+ ### Reproducibility
16
+ Include:
17
+ - OS (WIN | MACOS | Linux)
18
+ - Python Version OR MATLAB Version
19
+ - MySQL Version
20
+ - MySQL Deployment Strategy (local-native | local-docker | remote)
21
+ - DataJoint Version
22
+ - Minimum number of steps to reliably reproduce the issue
23
+ - Complete error stack as a result of evaluating the above steps
24
+
25
+ ### Expected Behavior
26
+ A clear and concise description of what you expected to happen.
27
+
28
+ ### Screenshots
29
+ If applicable, add screenshots to help explain your problem.
30
+
31
+ ### Additional Research and Context
32
+ Add any additional research or context that was conducted in creating this report.
33
+
34
+ For example:
35
+ - Related GitHub issues and PR's either within this repository or in other relevant repositories.
36
+ - Specific links to specific lines or a focus within source code.
37
+ - Relevant summary of Maintainers development meetings, milestones, projects, etc.
@@ -0,0 +1,46 @@
1
+ ---
2
+ name: Feature request
3
+ about: Suggest an idea for a new feature
4
+ title: ''
5
+ labels: 'enhancement, awaiting-triage'
6
+ assignees: ''
7
+
8
+ ---
9
+
10
+ ## Feature Request
11
+
12
+ ### Problem
13
+ A clear and concise description how this idea has manifested and the context. Elaborate on the need for this feature and/or what could be improved. Ex. I'm always frustrated when [...]
14
+
15
+ ### Requirements
16
+ A clear and concise description of the requirements to satisfy the new feature. Detail what you expect from a successful implementation of the feature. Ex. When using this feature, it should [...]
17
+
18
+ ### Justification
19
+ Provide the key benefits in making this a supported feature. Ex. Adding support for this feature would ensure [...]
20
+
21
+ ### Alternative Considerations
22
+ Do you currently have a work-around for this? Provide any alternative solutions or features you've considered.
23
+
24
+ ### Related Errors
25
+ Add any errors as a direct result of not exposing this feature.
26
+
27
+ Please include steps to reproduce provided errors as follows:
28
+ - OS (WIN | MACOS | Linux)
29
+ - Python Version OR MATLAB Version
30
+ - MySQL Version
31
+ - MySQL Deployment Strategy (local-native | local-docker | remote)
32
+ - DataJoint Version
33
+ - Minimum number of steps to reliably reproduce the issue
34
+ - Complete error stack as a result of evaluating the above steps
35
+
36
+ ### Screenshots
37
+ If applicable, add screenshots to help explain your feature.
38
+
39
+ ### Additional Research and Context
40
+ Add any additional research or context that was conducted in creating this feature request.
41
+
42
+ For example:
43
+ - Related GitHub issues and PR's either within this repository or in other relevant repositories.
44
+ - Specific links to specific line or focus within source code.
45
+ - Relevant summary of Maintainers development meetings, milestones, projects, etc.
46
+ - Any additional supplemental web references or links that would further justify this feature request.
@@ -0,0 +1,239 @@
1
+ name: Development
2
+ on:
3
+ push:
4
+ branches:
5
+ - "**" # every branch
6
+ - "!gh-pages" # exclude gh-pages branch
7
+ - "!stage*" # exclude branches beginning with stage
8
+ tags:
9
+ - '\d+\.\d+\.\d+' # only semver tags
10
+ pull_request:
11
+ branches:
12
+ - "**" # every branch
13
+ - "!gh-pages" # exclude gh-pages branch
14
+ - "!stage*" # exclude branches beginning with stage
15
+ jobs:
16
+ build:
17
+ runs-on: ubuntu-latest
18
+ strategy:
19
+ matrix:
20
+ include:
21
+ - py_ver: "3.9"
22
+ distro: debian
23
+ image: djbase
24
+ env:
25
+ PY_VER: ${{matrix.py_ver}}
26
+ DISTRO: ${{matrix.distro}}
27
+ IMAGE: ${{matrix.image}}
28
+ DOCKER_CLIENT_TIMEOUT: "120"
29
+ COMPOSE_HTTP_TIMEOUT: "120"
30
+ steps:
31
+ - uses: actions/checkout@v4
32
+ - uses: actions/setup-python@v5
33
+ with:
34
+ python-version: ${{matrix.py_ver}}
35
+ - name: Validate version and release notes
36
+ run: |
37
+ DJ_VERSION=$(grep -oP '\d+\.\d+\.\d+' datajoint/version.py)
38
+ RELEASE_BODY=$(python3 -c \
39
+ 'print(open("./CHANGELOG.md").read().split("\n\n")[1].split("\n", 1)[1])' \
40
+ )
41
+ echo "DJ_VERSION=${DJ_VERSION}" >> $GITHUB_ENV
42
+ echo "RELEASE_BODY<<EOF" >> $GITHUB_ENV
43
+ echo "$RELEASE_BODY" >> $GITHUB_ENV
44
+ echo "EOF" >> $GITHUB_ENV
45
+ - name: Build pip artifacts
46
+ run: |
47
+ python3 -m pip install build
48
+ python3 -m build .
49
+ echo "DJ_VERSION=${DJ_VERSION}" >> $GITHUB_ENV
50
+ - if: matrix.py_ver == '3.9' && matrix.distro == 'debian'
51
+ name: Add pip artifacts
52
+ uses: actions/upload-artifact@v3
53
+ with:
54
+ name: pip-datajoint-${{env.DJ_VERSION}}
55
+ path: dist
56
+ retention-days: 1
57
+ test:
58
+ runs-on: ubuntu-latest
59
+ strategy:
60
+ matrix:
61
+ py_ver: ["3.9"]
62
+ mysql_ver: ["8.0", "5.7"]
63
+ include:
64
+ - py_ver: "3.12"
65
+ mysql_ver: "8.0"
66
+ - py_ver: "3.11"
67
+ mysql_ver: "8.0"
68
+ - py_ver: "3.10"
69
+ mysql_ver: "8.0"
70
+ - py_ver: "3.8"
71
+ mysql_ver: "5.7"
72
+ steps:
73
+ - uses: actions/checkout@v4
74
+ - name: Set up Python ${{matrix.py_ver}}
75
+ uses: actions/setup-python@v5
76
+ with:
77
+ python-version: ${{matrix.py_ver}}
78
+ - name: Run primary tests
79
+ env:
80
+ PY_VER: ${{matrix.py_ver}}
81
+ DJ_PASS: password
82
+ MYSQL_VER: ${{matrix.mysql_ver}}
83
+ DISTRO: alpine
84
+ MINIO_VER: RELEASE.2021-09-03T03-56-13Z
85
+ DOCKER_CLIENT_TIMEOUT: "120"
86
+ COMPOSE_HTTP_TIMEOUT: "120"
87
+ run: |
88
+ export HOST_UID=$(id -u)
89
+ docker compose --profile test up --quiet-pull --build --exit-code-from djtest djtest
90
+ lint:
91
+ runs-on: ubuntu-latest
92
+ strategy:
93
+ matrix:
94
+ py_ver: ["3.11"]
95
+ steps:
96
+ - uses: actions/checkout@v4
97
+ - name: Set up Python ${{matrix.py_ver}}
98
+ uses: actions/setup-python@v5
99
+ with:
100
+ python-version: ${{matrix.py_ver}}
101
+ - name: Install dependencies
102
+ run: |
103
+ python3 -m pip install --upgrade pip
104
+ python3 -m pip install ".[test]"
105
+ - name: Run syntax tests
106
+ run: flake8 datajoint --count --select=E9,F63,F7,F82 --show-source --statistics
107
+ - name: Run style tests
108
+ run: |
109
+ flake8 --ignore=E203,E722,W503 datajoint \
110
+ --count --max-complexity=62 --max-line-length=127 --statistics \
111
+ --per-file-ignores='datajoint/diagram.py:C901'
112
+ black --required-version '24.2.0' --check -v datajoint tests
113
+ codespell:
114
+ name: Check for spelling errors
115
+ permissions:
116
+ contents: read
117
+ runs-on: ubuntu-latest
118
+ steps:
119
+ - name: Checkout
120
+ uses: actions/checkout@v4
121
+ - name: Codespell
122
+ uses: codespell-project/actions-codespell@v2
123
+ publish-docs:
124
+ if: |
125
+ github.event_name == 'push' &&
126
+ startsWith(github.ref, 'refs/tags')
127
+ needs: test
128
+ runs-on: ubuntu-latest
129
+ env:
130
+ DOCKER_CLIENT_TIMEOUT: "120"
131
+ COMPOSE_HTTP_TIMEOUT: "120"
132
+ steps:
133
+ - uses: actions/checkout@v4
134
+ - name: Deploy docs
135
+ run: |
136
+ export MODE=BUILD
137
+ export PACKAGE=datajoint
138
+ export UPSTREAM_REPO=https://github.com/${GITHUB_REPOSITORY}.git
139
+ export HOST_UID=$(id -u)
140
+ docker compose -f docs/docker-compose.yaml up --quiet-pull --exit-code-from docs --build
141
+ git push origin gh-pages
142
+ publish-release:
143
+ if: |
144
+ github.event_name == 'push' &&
145
+ startsWith(github.ref, 'refs/tags')
146
+ needs: test
147
+ runs-on: ubuntu-latest
148
+ strategy:
149
+ matrix:
150
+ include:
151
+ - py_ver: "3.9"
152
+ distro: debian
153
+ image: djbase
154
+ env:
155
+ PY_VER: ${{matrix.py_ver}}
156
+ DISTRO: ${{matrix.distro}}
157
+ IMAGE: ${{matrix.image}}
158
+ TWINE_USERNAME: ${{secrets.twine_username}}
159
+ TWINE_PASSWORD: ${{secrets.twine_password}}
160
+ DOCKER_CLIENT_TIMEOUT: "120"
161
+ COMPOSE_HTTP_TIMEOUT: "120"
162
+ outputs:
163
+ release_upload_url: ${{steps.create_gh_release.outputs.upload_url}}
164
+ steps:
165
+ - uses: actions/checkout@v4
166
+ - name: Set up Python ${{matrix.py_ver}}
167
+ uses: actions/setup-python@v5
168
+ with:
169
+ python-version: ${{matrix.py_ver}}
170
+ - name: Determine package version
171
+ run: |
172
+ DJ_VERSION=$(grep -oP '\d+\.\d+\.\d+' datajoint/version.py)
173
+ RELEASE_BODY=$(python -c \
174
+ 'print(open("./CHANGELOG.md").read().split("\n\n")[1].split("\n", 1)[1])' \
175
+ )
176
+ echo "DJ_VERSION=${DJ_VERSION}" >> $GITHUB_ENV
177
+ echo "RELEASE_BODY<<EOF" >> $GITHUB_ENV
178
+ echo "$RELEASE_BODY" >> $GITHUB_ENV
179
+ echo "EOF" >> $GITHUB_ENV
180
+ - name: Create GH release
181
+ id: create_gh_release
182
+ uses: actions/create-release@v1
183
+ env:
184
+ GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}}
185
+ with:
186
+ tag_name: ${{env.DJ_VERSION}}
187
+ release_name: Release ${{env.DJ_VERSION}}
188
+ body: ${{env.RELEASE_BODY}}
189
+ prerelease: false
190
+ draft: false
191
+ - name: Fetch pip artifacts
192
+ uses: actions/download-artifact@v3
193
+ with:
194
+ name: pip-datajoint-${{env.DJ_VERSION}}
195
+ path: dist
196
+ - name: Determine pip artifact paths
197
+ run: |
198
+ echo "DJ_WHEEL_PATH=$(ls dist/datajoint-*.whl)" >> $GITHUB_ENV
199
+ echo "DJ_SDIST_PATH=$(ls dist/datajoint-*.tar.gz)" >> $GITHUB_ENV
200
+ - name: Upload pip wheel asset to release
201
+ uses: actions/upload-release-asset@v1
202
+ env:
203
+ GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}}
204
+ with:
205
+ upload_url: ${{steps.create_gh_release.outputs.upload_url}}
206
+ asset_path: ${{env.DJ_WHEEL_PATH}}
207
+ asset_name: pip-datajoint-${{env.DJ_VERSION}}.whl
208
+ asset_content_type: application/zip
209
+ - name: Upload pip sdist asset to release
210
+ uses: actions/upload-release-asset@v1
211
+ env:
212
+ GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}}
213
+ with:
214
+ upload_url: ${{steps.create_gh_release.outputs.upload_url}}
215
+ asset_path: ${{env.DJ_SDIST_PATH}}
216
+ asset_name: pip-datajoint-${{env.DJ_VERSION}}.tar.gz
217
+ asset_content_type: application/gzip
218
+ - name: Publish pip release
219
+ run: |
220
+ export HOST_UID=$(id -u)
221
+ docker compose run --build --quiet-pull \
222
+ -e TWINE_USERNAME=${TWINE_USERNAME} -e TWINE_PASSWORD=${TWINE_PASSWORD} app \
223
+ sh -c "pip install twine && python -m twine upload dist/*"
224
+ - name: Login to DockerHub
225
+ uses: docker/login-action@v3
226
+ with:
227
+ username: ${{secrets.docker_username}}
228
+ password: ${{secrets.docker_password}}
229
+ - name: Publish image
230
+ run: |
231
+ IMAGE=$(docker images --filter "reference=datajoint/datajoint*" --format "{{.Repository}}")
232
+ TAG=$(docker images --filter "reference=datajoint/datajoint*" --format "{{.Tag}}")
233
+ docker push "${IMAGE}:${TAG}"
234
+ docker tag "${IMAGE}:${TAG}" "${IMAGE}:${TAG}-${GITHUB_SHA:0:7}"
235
+ docker push "${IMAGE}:${TAG}-${GITHUB_SHA:0:7}"
236
+ [ "$PY_VER" == "3.9" ] && [ "$DISTRO" == "debian" ] \
237
+ && docker tag "${IMAGE}:${TAG}" "${IMAGE}:latest" \
238
+ && docker push "${IMAGE}:latest" \
239
+ || echo "skipping 'latest' tag..."
@@ -0,0 +1,19 @@
1
+ name: Manual docs release
2
+ on:
3
+ workflow_dispatch:
4
+ jobs:
5
+ publish-docs:
6
+ runs-on: ubuntu-latest
7
+ env:
8
+ DOCKER_CLIENT_TIMEOUT: "120"
9
+ COMPOSE_HTTP_TIMEOUT: "120"
10
+ steps:
11
+ - uses: actions/checkout@v4
12
+ - name: Deploy docs
13
+ run: |
14
+ export MODE=BUILD
15
+ export PACKAGE=datajoint
16
+ export UPSTREAM_REPO=https://github.com/${GITHUB_REPOSITORY}.git
17
+ export HOST_UID=$(id -u)
18
+ docker compose -f docs/docker-compose.yaml up --exit-code-from docs --build
19
+ git push origin gh-pages
@@ -0,0 +1,35 @@
1
+ .ipynb_checkpoints/
2
+ *.json
3
+ */.*.swp
4
+ */.*.swo
5
+ */*.pyc
6
+ .DS_Store
7
+ __*__
8
+ .idea/
9
+ *.pyc
10
+ .python-version
11
+ *.egg-info/
12
+ dist/
13
+ MANIFEST
14
+ .vagrant/
15
+ dj_local_conf.json
16
+ build/
17
+ .coverage
18
+ ./tests/.coverage
19
+ ./tests/dj-store/*
20
+ *.log
21
+ *.env
22
+ docker-compose.yml
23
+ notebook
24
+ __main__.py
25
+ jupyter_custom.js
26
+ .eggs
27
+ *.code-workspace
28
+ docs/site
29
+
30
+
31
+ !.vscode/settings.json
32
+ !.vscode/launch.json
33
+ !.devcontainer/devcontainer.json
34
+ !.devcontainer/docker-compose.yml
35
+
@@ -0,0 +1,16 @@
1
+ {
2
+ // Use IntelliSense to learn about possible attributes.
3
+ // Hover to view descriptions of existing attributes.
4
+ // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
5
+ "version": "0.2.0",
6
+ "configurations": [
7
+ {
8
+ "name": "Python: Current File",
9
+ "type": "python",
10
+ "request": "launch",
11
+ "program": "${file}",
12
+ "console": "integratedTerminal",
13
+ "justMyCode": false
14
+ }
15
+ ]
16
+ }
@@ -0,0 +1,21 @@
1
+ {
2
+ "editor.formatOnPaste": false,
3
+ "editor.formatOnSave": false,
4
+ "editor.rulers": [
5
+ 94
6
+ ],
7
+ "python.formatting.provider": "black",
8
+ "[python]": {
9
+ "editor.defaultFormatter": null
10
+ },
11
+ "[markdown]": {
12
+ "editor.defaultFormatter": "disable"
13
+ },
14
+ "[yaml]": {
15
+ "editor.defaultFormatter": "disable"
16
+ },
17
+ "[dockercompose]": {
18
+ "editor.defaultFormatter": "disable"
19
+ },
20
+ "files.autoSave": "off"
21
+ }