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.
- dso_core-0.8.2.post2/.cruft.json +30 -0
- dso_core-0.8.2.post2/.editorconfig +15 -0
- dso_core-0.8.2.post2/.github/ISSUE_TEMPLATE/bug_report.yml +35 -0
- dso_core-0.8.2.post2/.github/ISSUE_TEMPLATE/feature_request.yml +10 -0
- dso_core-0.8.2.post2/.github/workflows/pre_commit.yml +26 -0
- dso_core-0.8.2.post2/.github/workflows/release.yml +29 -0
- dso_core-0.8.2.post2/.github/workflows/unit_tests.yml +51 -0
- dso_core-0.8.2.post2/.gitignore +20 -0
- dso_core-0.8.2.post2/.pre-commit-config.yaml +47 -0
- dso_core-0.8.2.post2/.prettierrc.yaml +7 -0
- dso_core-0.8.2.post2/.vscode/extensions.json +18 -0
- dso_core-0.8.2.post2/.vscode/launch.json +33 -0
- dso_core-0.8.2.post2/.vscode/settings.json +18 -0
- dso_core-0.8.2.post2/CHANGELOG.md +186 -0
- dso_core-0.8.2.post2/CODE_OF_CONDUCT.md +127 -0
- dso_core-0.8.2.post2/LICENSE +674 -0
- dso_core-0.8.2.post2/PKG-INFO +863 -0
- dso_core-0.8.2.post2/README.md +140 -0
- dso_core-0.8.2.post2/codecov.yml +10 -0
- dso_core-0.8.2.post2/img/config.png +0 -0
- dso_core-0.8.2.post2/img/dso_kraken.jpg +0 -0
- dso_core-0.8.2.post2/pyproject.toml +153 -0
- dso_core-0.8.2.post2/src/dso/__init__.py +62 -0
- dso_core-0.8.2.post2/src/dso/_logging.py +15 -0
- dso_core-0.8.2.post2/src/dso/_metadata.py +3 -0
- dso_core-0.8.2.post2/src/dso/_util.py +226 -0
- dso_core-0.8.2.post2/src/dso/assets/__init__.py +0 -0
- dso_core-0.8.2.post2/src/dso/assets/open_sans.ttf +0 -0
- dso_core-0.8.2.post2/src/dso/compile_config.py +181 -0
- dso_core-0.8.2.post2/src/dso/create.py +108 -0
- dso_core-0.8.2.post2/src/dso/exec.py +146 -0
- dso_core-0.8.2.post2/src/dso/get_config.py +139 -0
- dso_core-0.8.2.post2/src/dso/hiyapyco.py +564 -0
- dso_core-0.8.2.post2/src/dso/init.py +45 -0
- dso_core-0.8.2.post2/src/dso/lint.py +279 -0
- dso_core-0.8.2.post2/src/dso/pandocfilter.py +98 -0
- dso_core-0.8.2.post2/src/dso/repro.py +26 -0
- dso_core-0.8.2.post2/src/dso/templates/__init__.py +0 -0
- dso_core-0.8.2.post2/src/dso/templates/folder/__init__.py +4 -0
- dso_core-0.8.2.post2/src/dso/templates/folder/default/dvc.yaml +0 -0
- dso_core-0.8.2.post2/src/dso/templates/folder/default/params.in.yaml +0 -0
- dso_core-0.8.2.post2/src/dso/templates/init/__init__.py +1 -0
- dso_core-0.8.2.post2/src/dso/templates/init/default/.dvc/.gitignore +3 -0
- dso_core-0.8.2.post2/src/dso/templates/init/default/.dvc/config +2 -0
- dso_core-0.8.2.post2/src/dso/templates/init/default/.dvcignore +0 -0
- dso_core-0.8.2.post2/src/dso/templates/init/default/.editorconfig +15 -0
- dso_core-0.8.2.post2/src/dso/templates/init/default/.gitattributes +2 -0
- dso_core-0.8.2.post2/src/dso/templates/init/default/.gitignore +41 -0
- dso_core-0.8.2.post2/src/dso/templates/init/default/.pre-commit-config.yaml +70 -0
- dso_core-0.8.2.post2/src/dso/templates/init/default/.ruff.toml +43 -0
- dso_core-0.8.2.post2/src/dso/templates/init/default/README.md +3 -0
- dso_core-0.8.2.post2/src/dso/templates/init/default/dvc.yaml +0 -0
- dso_core-0.8.2.post2/src/dso/templates/init/default/params.in.yaml +21 -0
- dso_core-0.8.2.post2/src/dso/templates/stage/__init__.py +1 -0
- dso_core-0.8.2.post2/src/dso/templates/stage/bash/.gitignore +4 -0
- dso_core-0.8.2.post2/src/dso/templates/stage/bash/README.md +3 -0
- dso_core-0.8.2.post2/src/dso/templates/stage/bash/dvc.yaml +13 -0
- dso_core-0.8.2.post2/src/dso/templates/stage/bash/input/.gitignore +0 -0
- dso_core-0.8.2.post2/src/dso/templates/stage/bash/output/.gitignore +0 -0
- dso_core-0.8.2.post2/src/dso/templates/stage/bash/params.in.yaml +0 -0
- dso_core-0.8.2.post2/src/dso/templates/stage/quarto/.gitignore +4 -0
- dso_core-0.8.2.post2/src/dso/templates/stage/quarto/README.md +3 -0
- dso_core-0.8.2.post2/src/dso/templates/stage/quarto/dvc.yaml +11 -0
- dso_core-0.8.2.post2/src/dso/templates/stage/quarto/input/.gitignore +0 -0
- dso_core-0.8.2.post2/src/dso/templates/stage/quarto/output/.gitignore +0 -0
- dso_core-0.8.2.post2/src/dso/templates/stage/quarto/params.in.yaml +0 -0
- dso_core-0.8.2.post2/src/dso/templates/stage/quarto/report/.gitignore +0 -0
- dso_core-0.8.2.post2/src/dso/templates/stage/quarto/src/.gitignore +2 -0
- dso_core-0.8.2.post2/src/dso/templates/stage/quarto/src/{{ stage_name }}.qmd +14 -0
- dso_core-0.8.2.post2/src/dso/watermark.py +192 -0
- dso_core-0.8.2.post2/tests/__init__.py +0 -0
- dso_core-0.8.2.post2/tests/conftest.py +147 -0
- dso_core-0.8.2.post2/tests/data/git_logo.png +0 -0
- dso_core-0.8.2.post2/tests/data/git_logo.svg +7 -0
- dso_core-0.8.2.post2/tests/test_cli.py +9 -0
- dso_core-0.8.2.post2/tests/test_compile_config.py +176 -0
- dso_core-0.8.2.post2/tests/test_create.py +57 -0
- dso_core-0.8.2.post2/tests/test_exec.py +61 -0
- dso_core-0.8.2.post2/tests/test_get_config.py +166 -0
- dso_core-0.8.2.post2/tests/test_init.py +40 -0
- dso_core-0.8.2.post2/tests/test_lint.py +181 -0
- dso_core-0.8.2.post2/tests/test_pandocfilter.py +60 -0
- dso_core-0.8.2.post2/tests/test_util.py +64 -0
- 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,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.
|