datajoint 0.14.1__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.
- datajoint-0.14.3/.codespellrc +5 -0
- datajoint-0.14.3/.coveragerc +6 -0
- datajoint-0.14.3/.devcontainer/Dockerfile +13 -0
- datajoint-0.14.3/.devcontainer/devcontainer.json +50 -0
- datajoint-0.14.3/.devcontainer/docker-compose.yml +32 -0
- datajoint-0.14.3/.dockerignore +6 -0
- datajoint-0.14.3/.github/ISSUE_TEMPLATE/bug_report.md +37 -0
- datajoint-0.14.3/.github/ISSUE_TEMPLATE/feature_request.md +46 -0
- datajoint-0.14.3/.github/workflows/development.yaml +239 -0
- datajoint-0.14.3/.github/workflows/docs.yaml +19 -0
- datajoint-0.14.3/.gitignore +35 -0
- datajoint-0.14.3/.vscode/launch.json +16 -0
- datajoint-0.14.3/.vscode/settings.json +21 -0
- datajoint-0.14.3/CHANGELOG.md +338 -0
- datajoint-0.14.3/Dockerfile +24 -0
- datajoint-0.14.3/PKG-INFO +592 -0
- {datajoint-0.14.1 → datajoint-0.14.3}/README.md +20 -11
- {datajoint-0.14.1 → datajoint-0.14.3}/datajoint/__init__.py +5 -2
- {datajoint-0.14.1 → datajoint-0.14.3}/datajoint/admin.py +10 -2
- {datajoint-0.14.1 → datajoint-0.14.3}/datajoint/autopopulate.py +113 -84
- {datajoint-0.14.1 → datajoint-0.14.3}/datajoint/blob.py +6 -4
- datajoint-0.14.3/datajoint/cli.py +77 -0
- {datajoint-0.14.1 → datajoint-0.14.3}/datajoint/condition.py +31 -0
- {datajoint-0.14.1 → datajoint-0.14.3}/datajoint/connection.py +4 -1
- {datajoint-0.14.1 → datajoint-0.14.3}/datajoint/declare.py +22 -6
- {datajoint-0.14.1 → datajoint-0.14.3}/datajoint/dependencies.py +64 -32
- {datajoint-0.14.1 → datajoint-0.14.3}/datajoint/diagram.py +62 -48
- {datajoint-0.14.1 → datajoint-0.14.3}/datajoint/expression.py +98 -41
- {datajoint-0.14.1 → datajoint-0.14.3}/datajoint/external.py +7 -2
- {datajoint-0.14.1 → datajoint-0.14.3}/datajoint/fetch.py +31 -51
- {datajoint-0.14.1 → datajoint-0.14.3}/datajoint/heading.py +14 -8
- {datajoint-0.14.1 → datajoint-0.14.3}/datajoint/preview.py +8 -6
- {datajoint-0.14.1 → datajoint-0.14.3}/datajoint/s3.py +2 -1
- {datajoint-0.14.1 → datajoint-0.14.3}/datajoint/schemas.py +8 -10
- {datajoint-0.14.1 → datajoint-0.14.3}/datajoint/settings.py +9 -0
- {datajoint-0.14.1 → datajoint-0.14.3}/datajoint/table.py +54 -12
- {datajoint-0.14.1 → datajoint-0.14.3}/datajoint/user_tables.py +27 -0
- {datajoint-0.14.1 → datajoint-0.14.3}/datajoint/utils.py +14 -1
- {datajoint-0.14.1 → datajoint-0.14.3}/datajoint/version.py +1 -1
- datajoint-0.14.3/datajoint.egg-info/PKG-INFO +592 -0
- datajoint-0.14.3/datajoint.egg-info/SOURCES.txt +251 -0
- datajoint-0.14.3/datajoint.egg-info/entry_points.txt +3 -0
- {datajoint-0.14.1 → datajoint-0.14.3}/datajoint.egg-info/requires.txt +9 -2
- datajoint-0.14.3/docker-compose.yaml +79 -0
- datajoint-0.14.3/docs/.docker/Dockerfile +15 -0
- datajoint-0.14.3/docs/.docker/apk_requirements.txt +1 -0
- datajoint-0.14.3/docs/.docker/pip_requirements.txt +11 -0
- datajoint-0.14.3/docs/.markdownlint.yaml +20 -0
- datajoint-0.14.3/docs/README.md +16 -0
- datajoint-0.14.3/docs/docker-compose.yaml +38 -0
- datajoint-0.14.3/docs/mkdocs.yaml +194 -0
- datajoint-0.14.3/docs/src/.overrides/.icons/main/company-logo.svg +11 -0
- datajoint-0.14.3/docs/src/.overrides/assets/images/company-logo-blue.png +0 -0
- datajoint-0.14.3/docs/src/.overrides/assets/stylesheets/extra.css +105 -0
- datajoint-0.14.3/docs/src/.overrides/partials/nav.html +33 -0
- datajoint-0.14.3/docs/src/api/make_pages.py +18 -0
- datajoint-0.14.3/docs/src/changelog.md +338 -0
- datajoint-0.14.3/docs/src/citation.md +7 -0
- datajoint-0.14.3/docs/src/client/credentials.md +46 -0
- datajoint-0.14.3/docs/src/client/install.md +209 -0
- datajoint-0.14.3/docs/src/client/settings.md +11 -0
- datajoint-0.14.3/docs/src/client/stores.md +1 -0
- datajoint-0.14.3/docs/src/compute/distributed.md +166 -0
- datajoint-0.14.3/docs/src/compute/key-source.md +51 -0
- datajoint-0.14.3/docs/src/compute/make.md +25 -0
- datajoint-0.14.3/docs/src/compute/populate.md +127 -0
- datajoint-0.14.3/docs/src/concepts/data-model.md +117 -0
- datajoint-0.14.3/docs/src/concepts/data-pipelines.md +166 -0
- datajoint-0.14.3/docs/src/concepts/principles.md +136 -0
- datajoint-0.14.3/docs/src/concepts/teamwork.md +100 -0
- datajoint-0.14.3/docs/src/concepts/terminology.md +127 -0
- datajoint-0.14.3/docs/src/design/alter.md +1 -0
- datajoint-0.14.3/docs/src/design/diagrams.md +110 -0
- datajoint-0.14.3/docs/src/design/drop.md +23 -0
- datajoint-0.14.3/docs/src/design/integrity.md +218 -0
- datajoint-0.14.3/docs/src/design/normalization.md +117 -0
- datajoint-0.14.3/docs/src/design/recall.md +207 -0
- datajoint-0.14.3/docs/src/design/schema.md +49 -0
- datajoint-0.14.3/docs/src/design/tables/attach.md +67 -0
- datajoint-0.14.3/docs/src/design/tables/attributes.md +88 -0
- datajoint-0.14.3/docs/src/design/tables/blobs.md +1 -0
- datajoint-0.14.3/docs/src/design/tables/customtype.md +1 -0
- datajoint-0.14.3/docs/src/design/tables/declare.md +242 -0
- datajoint-0.14.3/docs/src/design/tables/dependencies.md +241 -0
- datajoint-0.14.3/docs/src/design/tables/filepath.md +96 -0
- datajoint-0.14.3/docs/src/design/tables/indexes.md +1 -0
- datajoint-0.14.3/docs/src/design/tables/lookup.md +31 -0
- datajoint-0.14.3/docs/src/design/tables/manual.md +47 -0
- datajoint-0.14.3/docs/src/design/tables/master-part.md +112 -0
- datajoint-0.14.3/docs/src/design/tables/primary.md +178 -0
- datajoint-0.14.3/docs/src/design/tables/tiers.md +68 -0
- datajoint-0.14.3/docs/src/develop.md +126 -0
- datajoint-0.14.3/docs/src/faq.md +191 -0
- datajoint-0.14.3/docs/src/images/StudentTable.png +0 -0
- datajoint-0.14.3/docs/src/images/added-example-ERD.svg +207 -0
- datajoint-0.14.3/docs/src/images/data-engineering.png +0 -0
- datajoint-0.14.3/docs/src/images/data-science-after.png +0 -0
- datajoint-0.14.3/docs/src/images/data-science-before.png +0 -0
- datajoint-0.14.3/docs/src/images/diff-example1.png +0 -0
- datajoint-0.14.3/docs/src/images/diff-example2.png +0 -0
- datajoint-0.14.3/docs/src/images/diff-example3.png +0 -0
- datajoint-0.14.3/docs/src/images/dimitri-ERD.svg +117 -0
- datajoint-0.14.3/docs/src/images/doc_1-1.png +0 -0
- datajoint-0.14.3/docs/src/images/doc_1-many.png +0 -0
- datajoint-0.14.3/docs/src/images/doc_many-1.png +0 -0
- datajoint-0.14.3/docs/src/images/doc_many-many.png +0 -0
- datajoint-0.14.3/docs/src/images/how-it-works.png +0 -0
- datajoint-0.14.3/docs/src/images/install-cmd-prompt.png +0 -0
- datajoint-0.14.3/docs/src/images/install-datajoint-1.png +0 -0
- datajoint-0.14.3/docs/src/images/install-datajoint-2.png +0 -0
- datajoint-0.14.3/docs/src/images/install-git-1.png +0 -0
- datajoint-0.14.3/docs/src/images/install-graphviz-1.png +0 -0
- datajoint-0.14.3/docs/src/images/install-graphviz-2a.png +0 -0
- datajoint-0.14.3/docs/src/images/install-graphviz-2b.png +0 -0
- datajoint-0.14.3/docs/src/images/install-jupyter-1.png +0 -0
- datajoint-0.14.3/docs/src/images/install-jupyter-2.png +0 -0
- datajoint-0.14.3/docs/src/images/install-matplotlib.png +0 -0
- datajoint-0.14.3/docs/src/images/install-pydotplus.png +0 -0
- datajoint-0.14.3/docs/src/images/install-python-advanced-1.png +0 -0
- datajoint-0.14.3/docs/src/images/install-python-advanced-2.png +0 -0
- datajoint-0.14.3/docs/src/images/install-python-simple.png +0 -0
- datajoint-0.14.3/docs/src/images/install-run-jupyter-1.png +0 -0
- datajoint-0.14.3/docs/src/images/install-run-jupyter-2.png +0 -0
- datajoint-0.14.3/docs/src/images/install-verify-graphviz.png +0 -0
- datajoint-0.14.3/docs/src/images/install-verify-jupyter.png +0 -0
- datajoint-0.14.3/docs/src/images/install-verify-python.png +0 -0
- datajoint-0.14.3/docs/src/images/join-example1.png +0 -0
- datajoint-0.14.3/docs/src/images/join-example2.png +0 -0
- datajoint-0.14.3/docs/src/images/join-example3.png +0 -0
- datajoint-0.14.3/docs/src/images/key_source_combination.png +0 -0
- datajoint-0.14.3/docs/src/images/map-dataflow.png +0 -0
- datajoint-0.14.3/docs/src/images/matched_tuples1.png +0 -0
- datajoint-0.14.3/docs/src/images/matched_tuples2.png +0 -0
- datajoint-0.14.3/docs/src/images/matched_tuples3.png +0 -0
- datajoint-0.14.3/docs/src/images/mp-diagram.png +0 -0
- datajoint-0.14.3/docs/src/images/op-restrict.png +0 -0
- datajoint-0.14.3/docs/src/images/outer-example1.png +0 -0
- datajoint-0.14.3/docs/src/images/pipeline-database.png +0 -0
- datajoint-0.14.3/docs/src/images/pipeline.png +0 -0
- datajoint-0.14.3/docs/src/images/python_collection.png +0 -0
- datajoint-0.14.3/docs/src/images/queries_example_diagram.png +0 -0
- datajoint-0.14.3/docs/src/images/query_object_preview.png +0 -0
- datajoint-0.14.3/docs/src/images/restrict-example1.png +0 -0
- datajoint-0.14.3/docs/src/images/restrict-example2.png +0 -0
- datajoint-0.14.3/docs/src/images/restrict-example3.png +0 -0
- datajoint-0.14.3/docs/src/images/shapes_pipeline.svg +36 -0
- datajoint-0.14.3/docs/src/images/spawned-classes-ERD.svg +147 -8
- datajoint-0.14.3/docs/src/images/union-example1.png +0 -0
- datajoint-0.14.3/docs/src/images/union-example2.png +0 -0
- datajoint-0.14.3/docs/src/images/virtual-module-ERD.svg +147 -8
- datajoint-0.14.3/docs/src/index.md +44 -0
- datajoint-0.14.3/docs/src/internal/transpilation.md +170 -0
- datajoint-0.14.3/docs/src/manipulation/delete.md +31 -0
- datajoint-0.14.3/docs/src/manipulation/index.md +9 -0
- datajoint-0.14.3/docs/src/manipulation/insert.md +94 -0
- datajoint-0.14.3/docs/src/manipulation/transactions.md +36 -0
- datajoint-0.14.3/docs/src/manipulation/update.md +48 -0
- datajoint-0.14.3/docs/src/publish-data.md +34 -0
- datajoint-0.14.3/docs/src/query/aggregation.md +29 -0
- datajoint-0.14.3/docs/src/query/example-schema.md +112 -0
- datajoint-0.14.3/docs/src/query/fetch.md +126 -0
- datajoint-0.14.3/docs/src/query/iteration.md +36 -0
- datajoint-0.14.3/docs/src/query/join.md +37 -0
- datajoint-0.14.3/docs/src/query/operators.md +395 -0
- datajoint-0.14.3/docs/src/query/principles.md +81 -0
- datajoint-0.14.3/docs/src/query/project.md +68 -0
- datajoint-0.14.3/docs/src/query/query-caching.md +42 -0
- datajoint-0.14.3/docs/src/query/restrict.md +193 -0
- datajoint-0.14.3/docs/src/query/union.md +48 -0
- datajoint-0.14.3/docs/src/query/universals.md +46 -0
- datajoint-0.14.3/docs/src/quick-start.md +460 -0
- datajoint-0.14.3/docs/src/sysadmin/bulk-storage.md +106 -0
- datajoint-0.14.3/docs/src/sysadmin/database-admin.md +364 -0
- datajoint-0.14.3/docs/src/sysadmin/external-store.md +293 -0
- datajoint-0.14.3/docs/src/tutorials/json.ipynb +1085 -0
- datajoint-0.14.3/images/pipeline.drawio +1 -0
- datajoint-0.14.3/images/pipeline.png +0 -0
- datajoint-0.14.3/pyproject.toml +71 -0
- datajoint-0.14.3/tests/__init__.py +0 -0
- datajoint-0.14.3/tests/conftest.py +535 -0
- datajoint-0.14.3/tests/data/Course.csv +46 -0
- datajoint-0.14.3/tests/data/CurrentTerm.csv +2 -0
- datajoint-0.14.3/tests/data/Department.csv +9 -0
- datajoint-0.14.3/tests/data/Enroll.csv +3365 -0
- datajoint-0.14.3/tests/data/Grade.csv +3028 -0
- datajoint-0.14.3/tests/data/Section.csv +757 -0
- datajoint-0.14.3/tests/data/Student.csv +301 -0
- datajoint-0.14.3/tests/data/StudentMajor.csv +227 -0
- datajoint-0.14.3/tests/data/Term.csv +19 -0
- datajoint-0.14.3/tests/schema.py +469 -0
- datajoint-0.14.3/tests/schema_adapted.py +62 -0
- datajoint-0.14.3/tests/schema_advanced.py +140 -0
- datajoint-0.14.3/tests/schema_aggr_regress.py +51 -0
- datajoint-0.14.3/tests/schema_alter.py +56 -0
- datajoint-0.14.3/tests/schema_external.py +88 -0
- datajoint-0.14.3/tests/schema_privileges.py +34 -0
- datajoint-0.14.3/tests/schema_simple.py +320 -0
- datajoint-0.14.3/tests/schema_university.py +112 -0
- datajoint-0.14.3/tests/schema_uuid.py +49 -0
- datajoint-0.14.3/tests/test_adapted_attributes.py +135 -0
- datajoint-0.14.3/tests/test_admin.py +150 -0
- datajoint-0.14.3/tests/test_aggr_regressions.py +127 -0
- datajoint-0.14.3/tests/test_alter.py +65 -0
- datajoint-0.14.3/tests/test_attach.py +66 -0
- datajoint-0.14.3/tests/test_autopopulate.py +139 -0
- datajoint-0.14.3/tests/test_blob.py +253 -0
- datajoint-0.14.3/tests/test_blob_matlab.py +171 -0
- datajoint-0.14.3/tests/test_bypass_serialization.py +56 -0
- datajoint-0.14.3/tests/test_cascading_delete.py +150 -0
- datajoint-0.14.3/tests/test_cli.py +111 -0
- datajoint-0.14.3/tests/test_connection.py +115 -0
- datajoint-0.14.3/tests/test_declare.py +427 -0
- datajoint-0.14.3/tests/test_dependencies.py +50 -0
- datajoint-0.14.3/tests/test_erd.py +68 -0
- datajoint-0.14.3/tests/test_external.py +131 -0
- datajoint-0.14.3/tests/test_external_class.py +50 -0
- datajoint-0.14.3/tests/test_fetch.py +371 -0
- datajoint-0.14.3/tests/test_fetch_same.py +68 -0
- datajoint-0.14.3/tests/test_filepath.py +265 -0
- datajoint-0.14.3/tests/test_foreign_keys.py +47 -0
- datajoint-0.14.3/tests/test_groupby.py +11 -0
- datajoint-0.14.3/tests/test_hash.py +6 -0
- datajoint-0.14.3/tests/test_jobs.py +146 -0
- datajoint-0.14.3/tests/test_json.py +222 -0
- datajoint-0.14.3/tests/test_log.py +5 -0
- datajoint-0.14.3/tests/test_nan.py +51 -0
- datajoint-0.14.3/tests/test_plugin.py +60 -0
- datajoint-0.14.3/tests/test_privileges.py +117 -0
- datajoint-0.14.3/tests/test_reconnection.py +32 -0
- datajoint-0.14.3/tests/test_relation.py +293 -0
- datajoint-0.14.3/tests/test_relation_u.py +78 -0
- datajoint-0.14.3/tests/test_relational_operand.py +666 -0
- datajoint-0.14.3/tests/test_s3.py +48 -0
- datajoint-0.14.3/tests/test_schema.py +254 -0
- datajoint-0.14.3/tests/test_schema_keywords.py +49 -0
- datajoint-0.14.3/tests/test_settings.py +105 -0
- datajoint-0.14.3/tests/test_tls.py +32 -0
- datajoint-0.14.3/tests/test_university.py +169 -0
- datajoint-0.14.3/tests/test_update1.py +146 -0
- datajoint-0.14.3/tests/test_utils.py +44 -0
- datajoint-0.14.3/tests/test_uuid.py +69 -0
- datajoint-0.14.3/tests/test_virtual_module.py +7 -0
- datajoint-0.14.1/MANIFEST.in +0 -1
- datajoint-0.14.1/PKG-INFO +0 -13
- datajoint-0.14.1/datajoint.egg-info/PKG-INFO +0 -13
- datajoint-0.14.1/datajoint.egg-info/SOURCES.txt +0 -38
- datajoint-0.14.1/requirements.txt +0 -13
- datajoint-0.14.1/setup.py +0 -46
- {datajoint-0.14.1 → datajoint-0.14.3}/LICENSE.txt +0 -0
- {datajoint-0.14.1 → datajoint-0.14.3}/datajoint/attribute_adapter.py +0 -0
- {datajoint-0.14.1 → datajoint-0.14.3}/datajoint/errors.py +0 -0
- {datajoint-0.14.1 → datajoint-0.14.3}/datajoint/hash.py +0 -0
- {datajoint-0.14.1 → datajoint-0.14.3}/datajoint/jobs.py +0 -0
- {datajoint-0.14.1 → datajoint-0.14.3}/datajoint/logging.py +0 -0
- {datajoint-0.14.1 → datajoint-0.14.3}/datajoint/plugin.py +0 -0
- {datajoint-0.14.1 → datajoint-0.14.3}/datajoint.egg-info/dependency_links.txt +0 -0
- {datajoint-0.14.1 → datajoint-0.14.3}/datajoint.egg-info/top_level.txt +0 -0
- {datajoint-0.14.1/datajoint.egg-info → datajoint-0.14.3}/datajoint.pub +0 -0
- {datajoint-0.14.1 → datajoint-0.14.3}/setup.cfg +0 -0
|
@@ -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,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
|
+
}
|