dso-core 0.8.2.post2__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 (84) hide show
  1. dso_core-0.8.2.post2/.cruft.json +30 -0
  2. dso_core-0.8.2.post2/.editorconfig +15 -0
  3. dso_core-0.8.2.post2/.github/ISSUE_TEMPLATE/bug_report.yml +35 -0
  4. dso_core-0.8.2.post2/.github/ISSUE_TEMPLATE/feature_request.yml +10 -0
  5. dso_core-0.8.2.post2/.github/workflows/pre_commit.yml +26 -0
  6. dso_core-0.8.2.post2/.github/workflows/release.yml +29 -0
  7. dso_core-0.8.2.post2/.github/workflows/unit_tests.yml +51 -0
  8. dso_core-0.8.2.post2/.gitignore +20 -0
  9. dso_core-0.8.2.post2/.pre-commit-config.yaml +47 -0
  10. dso_core-0.8.2.post2/.prettierrc.yaml +7 -0
  11. dso_core-0.8.2.post2/.vscode/extensions.json +18 -0
  12. dso_core-0.8.2.post2/.vscode/launch.json +33 -0
  13. dso_core-0.8.2.post2/.vscode/settings.json +18 -0
  14. dso_core-0.8.2.post2/CHANGELOG.md +186 -0
  15. dso_core-0.8.2.post2/CODE_OF_CONDUCT.md +127 -0
  16. dso_core-0.8.2.post2/LICENSE +674 -0
  17. dso_core-0.8.2.post2/PKG-INFO +863 -0
  18. dso_core-0.8.2.post2/README.md +140 -0
  19. dso_core-0.8.2.post2/codecov.yml +10 -0
  20. dso_core-0.8.2.post2/img/config.png +0 -0
  21. dso_core-0.8.2.post2/img/dso_kraken.jpg +0 -0
  22. dso_core-0.8.2.post2/pyproject.toml +153 -0
  23. dso_core-0.8.2.post2/src/dso/__init__.py +62 -0
  24. dso_core-0.8.2.post2/src/dso/_logging.py +15 -0
  25. dso_core-0.8.2.post2/src/dso/_metadata.py +3 -0
  26. dso_core-0.8.2.post2/src/dso/_util.py +226 -0
  27. dso_core-0.8.2.post2/src/dso/assets/__init__.py +0 -0
  28. dso_core-0.8.2.post2/src/dso/assets/open_sans.ttf +0 -0
  29. dso_core-0.8.2.post2/src/dso/compile_config.py +181 -0
  30. dso_core-0.8.2.post2/src/dso/create.py +108 -0
  31. dso_core-0.8.2.post2/src/dso/exec.py +146 -0
  32. dso_core-0.8.2.post2/src/dso/get_config.py +139 -0
  33. dso_core-0.8.2.post2/src/dso/hiyapyco.py +564 -0
  34. dso_core-0.8.2.post2/src/dso/init.py +45 -0
  35. dso_core-0.8.2.post2/src/dso/lint.py +279 -0
  36. dso_core-0.8.2.post2/src/dso/pandocfilter.py +98 -0
  37. dso_core-0.8.2.post2/src/dso/repro.py +26 -0
  38. dso_core-0.8.2.post2/src/dso/templates/__init__.py +0 -0
  39. dso_core-0.8.2.post2/src/dso/templates/folder/__init__.py +4 -0
  40. dso_core-0.8.2.post2/src/dso/templates/folder/default/dvc.yaml +0 -0
  41. dso_core-0.8.2.post2/src/dso/templates/folder/default/params.in.yaml +0 -0
  42. dso_core-0.8.2.post2/src/dso/templates/init/__init__.py +1 -0
  43. dso_core-0.8.2.post2/src/dso/templates/init/default/.dvc/.gitignore +3 -0
  44. dso_core-0.8.2.post2/src/dso/templates/init/default/.dvc/config +2 -0
  45. dso_core-0.8.2.post2/src/dso/templates/init/default/.dvcignore +0 -0
  46. dso_core-0.8.2.post2/src/dso/templates/init/default/.editorconfig +15 -0
  47. dso_core-0.8.2.post2/src/dso/templates/init/default/.gitattributes +2 -0
  48. dso_core-0.8.2.post2/src/dso/templates/init/default/.gitignore +41 -0
  49. dso_core-0.8.2.post2/src/dso/templates/init/default/.pre-commit-config.yaml +70 -0
  50. dso_core-0.8.2.post2/src/dso/templates/init/default/.ruff.toml +43 -0
  51. dso_core-0.8.2.post2/src/dso/templates/init/default/README.md +3 -0
  52. dso_core-0.8.2.post2/src/dso/templates/init/default/dvc.yaml +0 -0
  53. dso_core-0.8.2.post2/src/dso/templates/init/default/params.in.yaml +21 -0
  54. dso_core-0.8.2.post2/src/dso/templates/stage/__init__.py +1 -0
  55. dso_core-0.8.2.post2/src/dso/templates/stage/bash/.gitignore +4 -0
  56. dso_core-0.8.2.post2/src/dso/templates/stage/bash/README.md +3 -0
  57. dso_core-0.8.2.post2/src/dso/templates/stage/bash/dvc.yaml +13 -0
  58. dso_core-0.8.2.post2/src/dso/templates/stage/bash/input/.gitignore +0 -0
  59. dso_core-0.8.2.post2/src/dso/templates/stage/bash/output/.gitignore +0 -0
  60. dso_core-0.8.2.post2/src/dso/templates/stage/bash/params.in.yaml +0 -0
  61. dso_core-0.8.2.post2/src/dso/templates/stage/quarto/.gitignore +4 -0
  62. dso_core-0.8.2.post2/src/dso/templates/stage/quarto/README.md +3 -0
  63. dso_core-0.8.2.post2/src/dso/templates/stage/quarto/dvc.yaml +11 -0
  64. dso_core-0.8.2.post2/src/dso/templates/stage/quarto/input/.gitignore +0 -0
  65. dso_core-0.8.2.post2/src/dso/templates/stage/quarto/output/.gitignore +0 -0
  66. dso_core-0.8.2.post2/src/dso/templates/stage/quarto/params.in.yaml +0 -0
  67. dso_core-0.8.2.post2/src/dso/templates/stage/quarto/report/.gitignore +0 -0
  68. dso_core-0.8.2.post2/src/dso/templates/stage/quarto/src/.gitignore +2 -0
  69. dso_core-0.8.2.post2/src/dso/templates/stage/quarto/src/{{ stage_name }}.qmd +14 -0
  70. dso_core-0.8.2.post2/src/dso/watermark.py +192 -0
  71. dso_core-0.8.2.post2/tests/__init__.py +0 -0
  72. dso_core-0.8.2.post2/tests/conftest.py +147 -0
  73. dso_core-0.8.2.post2/tests/data/git_logo.png +0 -0
  74. dso_core-0.8.2.post2/tests/data/git_logo.svg +7 -0
  75. dso_core-0.8.2.post2/tests/test_cli.py +9 -0
  76. dso_core-0.8.2.post2/tests/test_compile_config.py +176 -0
  77. dso_core-0.8.2.post2/tests/test_create.py +57 -0
  78. dso_core-0.8.2.post2/tests/test_exec.py +61 -0
  79. dso_core-0.8.2.post2/tests/test_get_config.py +166 -0
  80. dso_core-0.8.2.post2/tests/test_init.py +40 -0
  81. dso_core-0.8.2.post2/tests/test_lint.py +181 -0
  82. dso_core-0.8.2.post2/tests/test_pandocfilter.py +60 -0
  83. dso_core-0.8.2.post2/tests/test_util.py +64 -0
  84. dso_core-0.8.2.post2/tests/test_watermark.py +59 -0
@@ -0,0 +1,30 @@
1
+ {
2
+ "template": "https://github.com/scverse/cookiecutter-scverse",
3
+ "commit": "4c8f4683073074b201a45b173d91b2a352d4a194",
4
+ "checkout": null,
5
+ "context": {
6
+ "cookiecutter": {
7
+ "project_name": "dso-core",
8
+ "package_name": "dso",
9
+ "project_description": "data science operations",
10
+ "author_full_name": "Gregor Sturm",
11
+ "author_email": "gregor.sturm@boehringer-ingelheim.com",
12
+ "github_user": "sturmgre",
13
+ "github_repo": "dso",
14
+ "license": "MIT License",
15
+ "ide_integration": true,
16
+ "_copy_without_render": [
17
+ ".github/workflows/build.yaml",
18
+ ".github/workflows/test.yaml",
19
+ "docs/_templates/autosummary/**.rst"
20
+ ],
21
+ "_render_devdocs": false,
22
+ "_jinja2_env_vars": {
23
+ "lstrip_blocks": true,
24
+ "trim_blocks": true
25
+ },
26
+ "_template": "https://github.com/scverse/cookiecutter-scverse"
27
+ }
28
+ },
29
+ "directory": null
30
+ }
@@ -0,0 +1,15 @@
1
+ root = true
2
+
3
+ [*]
4
+ indent_style = space
5
+ indent_size = 4
6
+ end_of_line = lf
7
+ charset = utf-8
8
+ trim_trailing_whitespace = true
9
+ insert_final_newline = true
10
+
11
+ [{*.{yml,yaml,toml},.cruft.json}]
12
+ indent_size = 2
13
+
14
+ [Makefile]
15
+ indent_style = tab
@@ -0,0 +1,35 @@
1
+ name: Bug report
2
+ description: File a bug report if DSO is breaking / not behaving in the way you expect
3
+ body:
4
+ - type: textarea
5
+ id: description
6
+ attributes:
7
+ label: Description of bug
8
+ description: |
9
+ A clear and concise description of what the bug is.
10
+ validations:
11
+ required: true
12
+
13
+ - type: textarea
14
+ id: log
15
+ attributes:
16
+ label: DSO Error log
17
+ description: |
18
+ Please paste your **full command** and DSO log.
19
+ render: console
20
+ placeholder: |
21
+ $ dso
22
+
23
+ - type: checkboxes
24
+ id: checklist
25
+ attributes:
26
+ label: Before submitting
27
+ description: >-
28
+ Please ensure your bug report fulfills all of the following requirements.
29
+ options:
30
+ - label: >-
31
+ I am using the latest release of DSO.
32
+ required: true
33
+ - label: >-
34
+ I have included a full DSO log, not truncated.
35
+ required: true
@@ -0,0 +1,10 @@
1
+ name: Feature request
2
+ description: Suggest an idea for DSO
3
+ body:
4
+ - type: textarea
5
+ id: description
6
+ attributes:
7
+ label: Description of feature
8
+ description: Please describe your suggestion for a new feature. It might help to describe a problem or use case, plus any alternatives that you have considered.
9
+ validations:
10
+ required: true
@@ -0,0 +1,26 @@
1
+ on:
2
+ push:
3
+ branches: [main]
4
+ pull_request:
5
+ branches: [main]
6
+
7
+ name: pre-commit
8
+
9
+ jobs:
10
+ pre-commit:
11
+ permissions:
12
+ # Give the default GITHUB_TOKEN write permission to commit and push the
13
+ # added or changed files to the repository.
14
+ contents: write
15
+ runs-on: ubuntu-latest
16
+ steps:
17
+ - uses: actions/checkout@v4
18
+ with:
19
+ ref: ${{ github.head_ref }}
20
+
21
+ - uses: pre-commit/action@v2.0.3
22
+
23
+ - uses: stefanzweifel/git-auto-commit-action@v5
24
+ if: '!cancelled()'
25
+ with:
26
+ commit_message: pre-commit autofixes
@@ -0,0 +1,29 @@
1
+ name: Release to PyPI
2
+
3
+ on:
4
+ release:
5
+ types: [published]
6
+
7
+ # Use "trusted publishing", see https://docs.pypi.org/trusted-publishers/
8
+ jobs:
9
+ release:
10
+ name: Upload release to PyPI
11
+ runs-on: ubuntu-latest
12
+ environment:
13
+ name: pypi
14
+ url: https://pypi.org/p/dso-core
15
+ permissions:
16
+ id-token: write # IMPORTANT: this permission is mandatory for trusted publishing
17
+ steps:
18
+ - uses: actions/checkout@v4
19
+ with:
20
+ filter: blob:none
21
+ fetch-depth: 0
22
+ - uses: actions/setup-python@v4
23
+ with:
24
+ python-version: "3.x"
25
+ cache: "pip"
26
+ - run: pip install build
27
+ - run: python -m build
28
+ - name: Publish package distributions to PyPI
29
+ uses: pypa/gh-action-pypi-publish@release/v1
@@ -0,0 +1,51 @@
1
+ name: "Unit tests for DSO"
2
+ on:
3
+ push:
4
+ branches:
5
+ - main
6
+ paths-ignore:
7
+ - "docs/**"
8
+ pull_request:
9
+ paths-ignore:
10
+ - "docs/**"
11
+
12
+ jobs:
13
+ unit_tests_linux:
14
+ name: "Python ${{ matrix.python-version }}"
15
+ runs-on: ubuntu-20.04
16
+ strategy:
17
+ matrix:
18
+ python-version: ["3.12"]
19
+
20
+ env:
21
+ # GitHub currently has 4 cores available for Linux runners
22
+ # https://docs.github.com/en/actions/using-github-hosted-runners/about-github-hosted-runners/about-github-hosted-runners#standard-github-hosted-runners-for-public-repositories
23
+ worker_cores: 4
24
+
25
+ steps:
26
+ - uses: actions/checkout@v4
27
+
28
+ - name: "Set up Python ${{ matrix.python-version }}"
29
+ uses: actions/setup-python@v5
30
+ with:
31
+ python-version: ${{ matrix.python-version }}
32
+ allow-prereleases: true
33
+
34
+ - name: Set up Quarto
35
+ uses: quarto-dev/quarto-actions/setup@v2
36
+
37
+ - name: Install libgit2 header files for libgit2 & pandoc for testing purposes
38
+ run: sudo apt-get install -y libgit2-dev pandoc
39
+
40
+ - name: "Install DSO"
41
+ run: pip install -e '.[test]'
42
+
43
+ - name: "Run unit tests"
44
+ run: pytest -vv tests -n ${{ env.worker_cores }} --cov=dso --cov-report=xml
45
+
46
+ # - name: "Upload coverage to Codecov"
47
+ # uses: codecov/codecov-action@v4
48
+ # with:
49
+ # files: ./coverage.xml
50
+ # env:
51
+ # CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
@@ -0,0 +1,20 @@
1
+ # Temp files
2
+ .DS_Store
3
+ *~
4
+ buck-out/
5
+
6
+ # Compiled files
7
+ .venv/
8
+ __pycache__/
9
+ .*cache/
10
+
11
+ # Distribution / packaging
12
+ /dist/
13
+
14
+ # Tests and coverage
15
+ /data/
16
+ /node_modules/
17
+
18
+ # docs
19
+ /docs/generated/
20
+ /docs/_build/
@@ -0,0 +1,47 @@
1
+ fail_fast: false
2
+ default_language_version:
3
+ python: python3
4
+ default_stages:
5
+ - commit
6
+ - push
7
+ minimum_pre_commit_version: 2.16.0
8
+ repos:
9
+ # - repo: https://github.com/pre-commit/mirrors-prettier
10
+ # rev: v4.0.0-alpha.8
11
+ # hooks:
12
+ # - id: prettier
13
+ # exclude: '^src/dso/templates/.*\.yaml$' # prettier messes with jinja2 templating here
14
+ - repo: https://github.com/astral-sh/ruff-pre-commit
15
+ rev: v0.6.8
16
+ hooks:
17
+ - id: ruff
18
+ types_or: [python, pyi, jupyter]
19
+ args: [--fix, --exit-non-zero-on-fix]
20
+ - id: ruff-format
21
+ types_or: [python, pyi, jupyter]
22
+ - repo: https://github.com/pre-commit/pre-commit-hooks
23
+ rev: v4.6.0
24
+ hooks:
25
+ - id: detect-private-key
26
+ - id: check-ast
27
+ - id: end-of-file-fixer
28
+ - id: mixed-line-ending
29
+ args: [--fix=lf]
30
+ - id: trailing-whitespace
31
+ - id: check-case-conflict
32
+ # Check that there are no merge conflicts (could be generated by template sync)
33
+ - id: check-merge-conflict
34
+ args: [--assume-in-merge]
35
+ - repo: https://github.com/tox-dev/pyproject-fmt
36
+ rev: "2.2.4"
37
+ hooks:
38
+ - id: pyproject-fmt
39
+ - repo: local
40
+ hooks:
41
+ - id: forbid-to-commit
42
+ name: Don't commit rej files
43
+ entry: |
44
+ Cannot commit .rej files. These indicate merge conflicts that arise during automated template updates.
45
+ Fix the merge conflicts manually and remove the .rej files.
46
+ language: fail
47
+ files: '.*\.rej$'
@@ -0,0 +1,7 @@
1
+ overrides:
2
+ # JSON with comments and trailing commas
3
+ - files: .vscode/*.json
4
+ options:
5
+ parser: json5
6
+ quoteProps: preserve
7
+ singleQuote: false
@@ -0,0 +1,18 @@
1
+ {
2
+ "recommendations": [
3
+ // GitHub integration
4
+ "github.vscode-github-actions",
5
+ "github.vscode-pull-request-github",
6
+ // Language support
7
+ "ms-python.python",
8
+ "ms-python.vscode-pylance",
9
+ "ms-toolsai.jupyter",
10
+ "tamasfe.even-better-toml",
11
+ // Dependency management
12
+ "ninoseki.vscode-mogami",
13
+ // Linting and formatting
14
+ "editorconfig.editorconfig",
15
+ "charliermarsh.ruff",
16
+ "esbenp.prettier-vscode",
17
+ ],
18
+ }
@@ -0,0 +1,33 @@
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: Build Documentation",
9
+ "type": "debugpy",
10
+ "request": "launch",
11
+ "module": "sphinx",
12
+ "args": ["-M", "html", ".", "_build"],
13
+ "cwd": "${workspaceFolder}/docs",
14
+ "console": "internalConsole",
15
+ "justMyCode": false,
16
+ },
17
+ {
18
+ "name": "Python: Debug Test",
19
+ "type": "debugpy",
20
+ "request": "launch",
21
+ "program": "${file}",
22
+ "purpose": ["debug-test"],
23
+ "console": "internalConsole",
24
+ "justMyCode": false,
25
+ "env": {
26
+ "PYTEST_ADDOPTS": "--color=yes",
27
+ },
28
+ "presentation": {
29
+ "hidden": true,
30
+ },
31
+ },
32
+ ],
33
+ }
@@ -0,0 +1,18 @@
1
+ {
2
+ "[python][jsonc][yaml]": {
3
+ "editor.formatOnSave": true,
4
+ },
5
+ "[python]": {
6
+ "editor.defaultFormatter": "charliermarsh.ruff",
7
+ "editor.codeActionsOnSave": {
8
+ "source.fixAll": "always",
9
+ "source.organizeImports": "always",
10
+ },
11
+ },
12
+ "[jsonc][yaml]": {
13
+ "editor.defaultFormatter": "esbenp.prettier-vscode",
14
+ },
15
+ "python.analysis.typeCheckingMode": "basic",
16
+ "python.testing.pytestEnabled": true,
17
+ "python.testing.pytestArgs": ["-vv", "--color=yes"],
18
+ }
@@ -0,0 +1,186 @@
1
+ # Changelog
2
+
3
+ All notable changes to this project will be documented in this file.
4
+
5
+ The format is based on [Keep a Changelog][],
6
+ and this project adheres to [Semantic Versioning][].
7
+
8
+ [keep a changelog]: https://keepachangelog.com/en/1.0.0/
9
+ [semantic versioning]: https://semver.org/spec/v2.0.0.html
10
+
11
+
12
+ ## v0.8.2
13
+
14
+ ### Fixes
15
+
16
+ - Fixed params.yaml sorting issue - params.yaml order will be kept intact when using `dso get-config`
17
+
18
+ ## v0.8.1
19
+
20
+ ### Fixes
21
+
22
+ - Fixed and issue with spaces in image filenames when watermarking a quarto document
23
+
24
+ ## v0.8.0
25
+
26
+ ### New Features
27
+
28
+ - `dso init` and `dso create folder` now also work in existing directories. In such case missing files will be added
29
+ from the template, but existing files are never overwritten.
30
+ - There's now a template for a bash stage available in `dso create stage`. The stage template needs can be specified
31
+ via the `--template` flag, otherwise the user is prompted to choose a template.
32
+ - `dso` now has flags to control logging verbosity. The default log-level is `info`. `-q` will set it to `warning`,
33
+ `-qq` to `error` and `-v` to `debug`. The "quiet" option can also be activated by setting the environment variable
34
+ `DSO_QUIET=1` or `DSO_QUIET=2`.
35
+ - `dso exec` and `dso get-config` now have a `--skip-compile` flag to disable automatic internal calls to
36
+ `dso compile-config`. The flag can also be activated by setting the environment variable `DSO_SKIP_COMPILE=1`.
37
+
38
+ ### Fixes
39
+
40
+ - Fix that compile-config also compiles parents when in a directory without a `params.in.yaml` file.
41
+ - The order of dictionaries is now preserved by `dso get-config`.
42
+ - When running `dso init` or `dso create`, `dso compile-config` is now only executed
43
+ after it was clearly communicated with the user that the project/stage/folder was successfully created.
44
+ - Specifying a stylesheet using `css` via `dso.quarto` is now possible.
45
+ - Adjusted the log level of some messages to more reasonable defaults. Some messages that were previously `info`
46
+ messages are now `debug` messages and not shown by default.
47
+ - When running `dso repro`, configuration is only compiled once and not recompiled when `dso exec` or `dso get-config`
48
+ is called internally. This reduces runtime and redundant log messages.
49
+
50
+
51
+ ## v0.7.0
52
+
53
+ - Improved watermarking support
54
+
55
+ - Added test cases for watermarking and the pandocfilter
56
+ - Support for SVG images
57
+ - There's now a `dso watermark` command line interface to watermark specified image files. In the future this
58
+ can be used to provide a custom plotting device in R that performs the watermarking.
59
+ - Changed the watermark layout to use a tiled pattern which is less obstrusive and is guaranteed to cover the entire plot
60
+ - The watermark is now fully configurable via `params.in.yaml`:
61
+
62
+ ```yaml
63
+ dso:
64
+ quarto:
65
+ watermark:
66
+ text: WATERMARK
67
+ # change the visuals - Usually fine to stick with the default, but these are the options that can be changed
68
+ tile_size: [100, 100]
69
+ font_size: 12
70
+ font_outline: 2
71
+ font_color: black
72
+ font_outline_color: "#AA111160"
73
+ ```
74
+
75
+ - Fix issue where dso was stuck in an infinity loop while searching for a config file. Now it should fail
76
+ if it can't be found. To realize this the funcitonality for searching parent folders for a certain file
77
+ that was used in different places was refactored into a separate function.
78
+
79
+ ## v0.6.1
80
+
81
+ - Fix issue in `dso get-config` if multiple parameters have been used in a single line in `deps:`.
82
+
83
+ ## v0.6.0
84
+
85
+ - Add a `dso lint` command that performs consistency checks on dso projects. For now, only a single rule is
86
+ implemented, but it can be easily extended. The rule:
87
+ - `DSO001`: In a quarto stage, ensure `dso::read_params` is called and stage name is correct.
88
+ - Logging information is now printed to STDERR instead of STDOUT
89
+ - Add `dso get-config <STAGE>` which will compile and print the configuration for a given stage to STDOUT.
90
+ Additionally, it filters the output to fields that are specified in `dvc.yaml` which forces the user
91
+ to declare all dependencies in `dvc.yaml`.
92
+ - Add automated watermarking of plots in quarto documents as experimental feature. For now, only png images are supported.
93
+ To enable, add to `params.in.yaml`:
94
+
95
+ - `dso.quarto.watermark`: a text to be shown as watermark.
96
+ - `dso.quarto.disclaimer.text`: a text to be shown as disclaimer box.
97
+ - `dso.quarto.disclaimer.title`: title of the disclaimer box.
98
+
99
+ The disclaimer box is only shown if both text and title are set.
100
+
101
+ ### Migration advice
102
+
103
+ - Update `dso-r` to v0.3.0 to take advantage of `dso get-config`.
104
+
105
+ - Add the following rule to your `.pre-commit-config.yaml`:
106
+ ```yaml
107
+ - repo: local
108
+ hooks:
109
+ [...]
110
+ - id: lint
111
+ name: Run dso lint
112
+ entry: dso lint --skip-compile
113
+ language: system
114
+ stages: [commit]
115
+ ```
116
+
117
+ ## v0.5.0
118
+
119
+ - `dso.before_script` is now `dso.quarto.before_script`. This change has been made because different "exec" modules
120
+ will likely need different setup-scripts (i.e. environment modules). If the script shall be shared nevertheless,
121
+ this can be done with jinja templating.
122
+ - It is now possible to specify bibliography files in `params.in.config:dso.quarto.bibliography` using `!path`.
123
+ - Upon `dso repro`, the CLI asks once if the user wants to install the pre-commit hooks
124
+
125
+ ### Migration advice
126
+
127
+ - Move `dso.before_script` to `dso.quarto.before_script` in all your config files.
128
+ - Update all quarto stages to depend only on `params:dso.quarto` instead of `params:dso`. This will avoid
129
+ invalidating the cache unnecessarily.
130
+ - add `/.dso.json` to your .gitignore file
131
+
132
+ ## v0.4.4
133
+
134
+ - Remove confirmation before overwriting a newer `params.yaml` file - It turned out not to work well with
135
+ switching branches in git and led to way too many unnecessary questions.
136
+ - Do not fail when `dso.quarto` is `null` in `params.in.yaml` (not all cases were addressed in v0.4.3)
137
+
138
+ ## v0.4.3
139
+
140
+ - Fix confirmation to overwrite params.yaml
141
+ - Improve error message when `dso exec quarto` fails
142
+ - Make pre-commit hooks verbose
143
+ - Do not fail when `dso.quarto` is `null` in `params.in.yaml`
144
+
145
+ ## v0.4.2
146
+
147
+ - Update quarto template to include `dso` params as dependency
148
+ - Reduce the number of false-positives when asking for confirmation to overwrite params.yaml
149
+
150
+ ## v0.4.1
151
+
152
+ - Allow a tolerance of 1s when comparing timestamps of params.in.yaml and params.yaml
153
+
154
+ ## v0.4.0
155
+
156
+ - Ask for confirmation before overwriting a newer `params.yaml` file
157
+ - The log messages when compiling configuration files have improved
158
+ - Added `dso exec quarto`, a convenient wrapper to execute quarto stages
159
+ - Quarto configuration/headers will be read from `params.yaml:qso.quarto`
160
+ - A shell snippet specified in `params.yaml:dso.before_script` will be executed before rendering the report.
161
+ This is useful for setting up the environment, e.g. by loading modules
162
+
163
+ ## v0.3.1
164
+
165
+ - Update quarto template to be concordant with latest dso-r version
166
+
167
+ ## v0.3.0
168
+
169
+ - Updated quarto template to use dso code to load files
170
+ - `dso compile-config` now optionally supports specifying a list of paths
171
+ - Renamed `dso create project` to `dso init`
172
+ - Added `dso create folder` in addition to `dso create stage`.
173
+ - Currently only one template for `dso init`, `dso create folder` and `dso create stage` but prepared the project
174
+ to easily support multiple templates in the future
175
+ - Improved pre-commit config. Install it using `pre-commit install` in the project. It automatically performs some
176
+ consistency checks and dvc pull/push/checkout.
177
+
178
+ ## v0.2.0
179
+
180
+ - It's now possible to specify paths via the `!path` tag in params.in.yaml. These paths will be checked for existence
181
+ and automatically resolved such that they are always relative to the compiled params.yaml files.
182
+
183
+ ## v0.1.0
184
+
185
+ - initial prototype
186
+ - `dso create` command
@@ -0,0 +1,127 @@
1
+ # Contributor Covenant Code of Conduct
2
+
3
+ ## Our Pledge
4
+
5
+ We as members, contributors, and leaders pledge to make participation in our
6
+ community a harassment-free experience for everyone, regardless of age, body
7
+ size, visible or invisible disability, ethnicity, sex characteristics, gender
8
+ identity and expression, level of experience, education, socio-economic status,
9
+ nationality, personal appearance, race, religion, or sexual identity
10
+ and orientation.
11
+
12
+ We pledge to act and interact in ways that contribute to an open, welcoming,
13
+ diverse, inclusive, and healthy community.
14
+
15
+ ## Our Standards
16
+
17
+ Examples of behavior that contributes to a positive environment for our
18
+ community include:
19
+
20
+ * Demonstrating empathy and kindness toward other people
21
+ * Being respectful of differing opinions, viewpoints, and experiences
22
+ * Giving and gracefully accepting constructive feedback
23
+ * Accepting responsibility and apologizing to those affected by our mistakes,
24
+ and learning from the experience
25
+ * Focusing on what is best not just for us as individuals, but for the
26
+ overall community
27
+
28
+ Examples of unacceptable behavior include:
29
+
30
+ * The use of sexualized language or imagery, and sexual attention or
31
+ advances of any kind
32
+ * Trolling, insulting or derogatory comments, and personal or political attacks
33
+ * Public or private harassment
34
+ * Publishing others' private information, such as a physical or email
35
+ address, without their explicit permission
36
+ * Other conduct which could reasonably be considered inappropriate in a
37
+ professional setting
38
+
39
+ ## Enforcement Responsibilities
40
+
41
+ Community leaders are responsible for clarifying and enforcing our standards of
42
+ acceptable behavior and will take appropriate and fair corrective action in
43
+ response to any behavior that they deem inappropriate, threatening, offensive,
44
+ or harmful.
45
+
46
+ Community leaders have the right and responsibility to remove, edit, or reject
47
+ comments, commits, code, wiki edits, issues, and other contributions that are
48
+ not aligned to this Code of Conduct, and will communicate reasons for moderation
49
+ decisions when appropriate.
50
+
51
+ ## Scope
52
+
53
+ This Code of Conduct applies within all community spaces, and also applies when
54
+ an individual is officially representing the community in public spaces.
55
+ Examples of representing our community include using an official e-mail address,
56
+ posting via an official social media account, or acting as an appointed
57
+ representative at an online or offline event.
58
+
59
+ ## Enforcement
60
+
61
+ Instances of abusive, harassing, or otherwise unacceptable behavior may be
62
+ reported to the package maintainers via the communication channels listed in their GitHub profiles.
63
+ All complaints will be reviewed and investigated promptly and fairly.
64
+
65
+ All community leaders are obligated to respect the privacy and security of the
66
+ reporter of any incident.
67
+
68
+ ## Enforcement Guidelines
69
+
70
+ Community leaders will follow these Community Impact Guidelines in determining
71
+ the consequences for any action they deem in violation of this Code of Conduct:
72
+
73
+ ### 1. Correction
74
+
75
+ **Community Impact**: Use of inappropriate language or other behavior deemed
76
+ unprofessional or unwelcome in the community.
77
+
78
+ **Consequence**: A private, written warning from community leaders, providing
79
+ clarity around the nature of the violation and an explanation of why the
80
+ behavior was inappropriate. A public apology may be requested.
81
+
82
+ ### 2. Warning
83
+
84
+ **Community Impact**: A violation through a single incident or series
85
+ of actions.
86
+
87
+ **Consequence**: A warning with consequences for continued behavior. No
88
+ interaction with the people involved, including unsolicited interaction with
89
+ those enforcing the Code of Conduct, for a specified period of time. This
90
+ includes avoiding interactions in community spaces as well as external channels
91
+ like social media. Violating these terms may lead to a temporary or
92
+ permanent ban.
93
+
94
+ ### 3. Temporary Ban
95
+
96
+ **Community Impact**: A serious violation of community standards, including
97
+ sustained inappropriate behavior.
98
+
99
+ **Consequence**: A temporary ban from any sort of interaction or public
100
+ communication with the community for a specified period of time. No public or
101
+ private interaction with the people involved, including unsolicited interaction
102
+ with those enforcing the Code of Conduct, is allowed during this period.
103
+ Violating these terms may lead to a permanent ban.
104
+
105
+ ### 4. Permanent Ban
106
+
107
+ **Community Impact**: Demonstrating a pattern of violation of community
108
+ standards, including sustained inappropriate behavior, harassment of an
109
+ individual, or aggression toward or disparagement of classes of individuals.
110
+
111
+ **Consequence**: A permanent ban from any sort of public interaction within
112
+ the community.
113
+
114
+ ## Attribution
115
+
116
+ This Code of Conduct is adapted from the [Contributor Covenant][homepage],
117
+ version 2.0, available at
118
+ https://www.contributor-covenant.org/version/2/0/code_of_conduct.html.
119
+
120
+ Community Impact Guidelines were inspired by [Mozilla's code of conduct
121
+ enforcement ladder](https://github.com/mozilla/diversity).
122
+
123
+ [homepage]: https://www.contributor-covenant.org
124
+
125
+ For answers to common questions about this code of conduct, see the FAQ at
126
+ https://www.contributor-covenant.org/faq. Translations are available at
127
+ https://www.contributor-covenant.org/translations.