deep-learning-core 0.0.1__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.
- deep_learning_core-0.0.1/.github/workflows/ci.yml +60 -0
- deep_learning_core-0.0.1/.github/workflows/publish-testpypi.yml +92 -0
- deep_learning_core-0.0.1/.github/workflows/publish.yml +91 -0
- deep_learning_core-0.0.1/.gitignore +35 -0
- deep_learning_core-0.0.1/AGENTS.md +109 -0
- deep_learning_core-0.0.1/LICENSE +21 -0
- deep_learning_core-0.0.1/PKG-INFO +267 -0
- deep_learning_core-0.0.1/README.md +203 -0
- deep_learning_core-0.0.1/plan.md +324 -0
- deep_learning_core-0.0.1/pyproject.toml +95 -0
- deep_learning_core-0.0.1/readme/README.md +75 -0
- deep_learning_core-0.0.1/readme/guide/1_getting_started.md +60 -0
- deep_learning_core-0.0.1/readme/guide/2_creating_an_experiment_repository.md +75 -0
- deep_learning_core-0.0.1/readme/guide/3_local_components_and_sweeps.md +90 -0
- deep_learning_core-0.0.1/readme/technical/1_configuration.md +122 -0
- deep_learning_core-0.0.1/readme/technical/2_entry_points.md +104 -0
- deep_learning_core-0.0.1/readme/technical/3_sweep_system.md +94 -0
- deep_learning_core-0.0.1/readme/technical/4_local_component_loading.md +43 -0
- deep_learning_core-0.0.1/readme/technical/5_testing.md +34 -0
- deep_learning_core-0.0.1/readme/tldr/1_install_and_verify.md +33 -0
- deep_learning_core-0.0.1/readme/tldr/2_create_and_run_an_experiment.md +54 -0
- deep_learning_core-0.0.1/requirements-ci.txt +11 -0
- deep_learning_core-0.0.1/src/dl_core/__init__.py +86 -0
- deep_learning_core-0.0.1/src/dl_core/accelerators/__init__.py +20 -0
- deep_learning_core-0.0.1/src/dl_core/accelerators/cpu.py +98 -0
- deep_learning_core-0.0.1/src/dl_core/accelerators/multi_gpu.py +347 -0
- deep_learning_core-0.0.1/src/dl_core/accelerators/single_gpu.py +140 -0
- deep_learning_core-0.0.1/src/dl_core/analysis/__init__.py +5 -0
- deep_learning_core-0.0.1/src/dl_core/analysis/sweep_analyzer.py +280 -0
- deep_learning_core-0.0.1/src/dl_core/augmentations/__init__.py +11 -0
- deep_learning_core-0.0.1/src/dl_core/augmentations/minimal.py +40 -0
- deep_learning_core-0.0.1/src/dl_core/augmentations/standard.py +61 -0
- deep_learning_core-0.0.1/src/dl_core/callbacks/__init__.py +11 -0
- deep_learning_core-0.0.1/src/dl_core/callbacks/checkpoint.py +94 -0
- deep_learning_core-0.0.1/src/dl_core/callbacks/early_stopping.py +265 -0
- deep_learning_core-0.0.1/src/dl_core/callbacks/metric_logger.py +71 -0
- deep_learning_core-0.0.1/src/dl_core/cli.py +78 -0
- deep_learning_core-0.0.1/src/dl_core/component_scaffold.py +704 -0
- deep_learning_core-0.0.1/src/dl_core/core/__init__.py +105 -0
- deep_learning_core-0.0.1/src/dl_core/core/base_accelerator.py +367 -0
- deep_learning_core-0.0.1/src/dl_core/core/base_biometric_model.py +24 -0
- deep_learning_core-0.0.1/src/dl_core/core/base_callback.py +698 -0
- deep_learning_core-0.0.1/src/dl_core/core/base_criterion.py +149 -0
- deep_learning_core-0.0.1/src/dl_core/core/base_dataset.py +1447 -0
- deep_learning_core-0.0.1/src/dl_core/core/base_detector.py +148 -0
- deep_learning_core-0.0.1/src/dl_core/core/base_executor.py +654 -0
- deep_learning_core-0.0.1/src/dl_core/core/base_metric.py +140 -0
- deep_learning_core-0.0.1/src/dl_core/core/base_metric_manager.py +541 -0
- deep_learning_core-0.0.1/src/dl_core/core/base_model.py +320 -0
- deep_learning_core-0.0.1/src/dl_core/core/base_sampler.py +74 -0
- deep_learning_core-0.0.1/src/dl_core/core/base_trainer.py +2732 -0
- deep_learning_core-0.0.1/src/dl_core/core/base_transform.py +100 -0
- deep_learning_core-0.0.1/src/dl_core/core/registry.py +345 -0
- deep_learning_core-0.0.1/src/dl_core/criterions/__init__.py +9 -0
- deep_learning_core-0.0.1/src/dl_core/criterions/bce_with_logits.py +56 -0
- deep_learning_core-0.0.1/src/dl_core/criterions/crossentropy.py +67 -0
- deep_learning_core-0.0.1/src/dl_core/datasets/__init__.py +7 -0
- deep_learning_core-0.0.1/src/dl_core/datasets/standard.py +150 -0
- deep_learning_core-0.0.1/src/dl_core/executors/__init__.py +9 -0
- deep_learning_core-0.0.1/src/dl_core/executors/local.py +154 -0
- deep_learning_core-0.0.1/src/dl_core/init_experiment.py +568 -0
- deep_learning_core-0.0.1/src/dl_core/init_extensions.py +163 -0
- deep_learning_core-0.0.1/src/dl_core/metric_managers/__init__.py +18 -0
- deep_learning_core-0.0.1/src/dl_core/metric_managers/standard_manager.py +298 -0
- deep_learning_core-0.0.1/src/dl_core/metrics/__init__.py +20 -0
- deep_learning_core-0.0.1/src/dl_core/metrics/accuracy.py +80 -0
- deep_learning_core-0.0.1/src/dl_core/metrics/auc.py +88 -0
- deep_learning_core-0.0.1/src/dl_core/metrics/f1.py +89 -0
- deep_learning_core-0.0.1/src/dl_core/metrics/halt_steps.py +39 -0
- deep_learning_core-0.0.1/src/dl_core/models/__init__.py +7 -0
- deep_learning_core-0.0.1/src/dl_core/models/resnet.py +205 -0
- deep_learning_core-0.0.1/src/dl_core/optimizers/__init__.py +16 -0
- deep_learning_core-0.0.1/src/dl_core/project.py +48 -0
- deep_learning_core-0.0.1/src/dl_core/schedulers/__init__.py +21 -0
- deep_learning_core-0.0.1/src/dl_core/schedulers/cosinewithwarmup.py +62 -0
- deep_learning_core-0.0.1/src/dl_core/single_run.py +200 -0
- deep_learning_core-0.0.1/src/dl_core/sweep/__init__.py +5 -0
- deep_learning_core-0.0.1/src/dl_core/sweep/config/__init__.py +43 -0
- deep_learning_core-0.0.1/src/dl_core/sweep/config/config_builder.py +502 -0
- deep_learning_core-0.0.1/src/dl_core/sweep/config/config_utils.py +438 -0
- deep_learning_core-0.0.1/src/dl_core/sweep/runner.py +271 -0
- deep_learning_core-0.0.1/src/dl_core/sweep/template/__init__.py +46 -0
- deep_learning_core-0.0.1/src/dl_core/sweep/template/template_loader.py +251 -0
- deep_learning_core-0.0.1/src/dl_core/sweep/template/template_merger.py +291 -0
- deep_learning_core-0.0.1/src/dl_core/sweep/template/template_validator.py +39 -0
- deep_learning_core-0.0.1/src/dl_core/sweep/template/tracking_utils.py +105 -0
- deep_learning_core-0.0.1/src/dl_core/templates/README.md +12 -0
- deep_learning_core-0.0.1/src/dl_core/templates/base/base.yaml +79 -0
- deep_learning_core-0.0.1/src/dl_core/templates/base/base_sweep.yaml +31 -0
- deep_learning_core-0.0.1/src/dl_core/templates/presets.yaml +78 -0
- deep_learning_core-0.0.1/src/dl_core/templates/sweeps/example_sweep.yaml +10 -0
- deep_learning_core-0.0.1/src/dl_core/trainers/__init__.py +8 -0
- deep_learning_core-0.0.1/src/dl_core/trainers/standard_trainer.py +284 -0
- deep_learning_core-0.0.1/src/dl_core/utils/__init__.py +37 -0
- deep_learning_core-0.0.1/src/dl_core/utils/artifact_manager.py +400 -0
- deep_learning_core-0.0.1/src/dl_core/utils/checkpoint_utils.py +107 -0
- deep_learning_core-0.0.1/src/dl_core/utils/common.py +394 -0
- deep_learning_core-0.0.1/src/dl_core/utils/config.py +122 -0
- deep_learning_core-0.0.1/src/dl_core/utils/config_validator.py +348 -0
- deep_learning_core-0.0.1/src/dl_core/utils/distributed_utils.py +364 -0
- deep_learning_core-0.0.1/src/dl_core/utils/ema.py +179 -0
- deep_learning_core-0.0.1/src/dl_core/utils/logging/__init__.py +3 -0
- deep_learning_core-0.0.1/src/dl_core/utils/logging/logger.py +255 -0
- deep_learning_core-0.0.1/src/dl_core/utils/runtime_utils.py +94 -0
- deep_learning_core-0.0.1/src/dl_core/utils/sweep_tracker.py +325 -0
- deep_learning_core-0.0.1/src/dl_core/worker.py +114 -0
- deep_learning_core-0.0.1/tests/conftest.py +31 -0
- deep_learning_core-0.0.1/tests/test_checkpoint_behavior.py +163 -0
- deep_learning_core-0.0.1/tests/test_checkpoint_utils.py +31 -0
- deep_learning_core-0.0.1/tests/test_component_scaffold.py +178 -0
- deep_learning_core-0.0.1/tests/test_init_experiment.py +155 -0
- deep_learning_core-0.0.1/tests/test_init_extensions.py +114 -0
- deep_learning_core-0.0.1/tests/test_local_components.py +35 -0
- deep_learning_core-0.0.1/tests/test_scaffold_smoke.py +236 -0
- deep_learning_core-0.0.1/uv.lock +4552 -0
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
name: CI
|
|
2
|
+
|
|
3
|
+
env:
|
|
4
|
+
FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: "true"
|
|
5
|
+
|
|
6
|
+
on:
|
|
7
|
+
push:
|
|
8
|
+
branches:
|
|
9
|
+
- master
|
|
10
|
+
pull_request:
|
|
11
|
+
workflow_dispatch:
|
|
12
|
+
|
|
13
|
+
jobs:
|
|
14
|
+
validate:
|
|
15
|
+
name: Validate Package
|
|
16
|
+
runs-on: ubuntu-latest
|
|
17
|
+
permissions:
|
|
18
|
+
contents: read
|
|
19
|
+
|
|
20
|
+
steps:
|
|
21
|
+
- name: Check out repository
|
|
22
|
+
uses: actions/checkout@v5
|
|
23
|
+
|
|
24
|
+
- name: Set up uv
|
|
25
|
+
uses: astral-sh/setup-uv@v7
|
|
26
|
+
|
|
27
|
+
- name: Set up Python
|
|
28
|
+
run: uv python install 3.11
|
|
29
|
+
|
|
30
|
+
- name: Create virtual environment
|
|
31
|
+
run: uv venv
|
|
32
|
+
|
|
33
|
+
- name: Install test dependencies
|
|
34
|
+
run: |
|
|
35
|
+
python3 - <<'PY'
|
|
36
|
+
from pathlib import Path
|
|
37
|
+
import tomllib
|
|
38
|
+
|
|
39
|
+
pyproject = tomllib.loads(Path("pyproject.toml").read_text())
|
|
40
|
+
dependencies = pyproject["project"]["dependencies"]
|
|
41
|
+
dev_dependencies = pyproject["project"]["optional-dependencies"]["dev"]
|
|
42
|
+
Path("requirements-ci.txt").write_text(
|
|
43
|
+
"\n".join([*dependencies, *dev_dependencies, "twine"]) + "\n",
|
|
44
|
+
encoding="utf-8",
|
|
45
|
+
)
|
|
46
|
+
PY
|
|
47
|
+
uv pip install --python .venv/bin/python -r requirements-ci.txt
|
|
48
|
+
uv pip install --python .venv/bin/python --no-deps --editable .
|
|
49
|
+
|
|
50
|
+
- name: Run tests
|
|
51
|
+
run: VIRTUAL_ENV="$PWD/.venv" PATH="$PWD/.venv/bin:$PATH" .venv/bin/python -m pytest
|
|
52
|
+
|
|
53
|
+
- name: Compile package
|
|
54
|
+
run: .venv/bin/python -m compileall src/dl_core
|
|
55
|
+
|
|
56
|
+
- name: Build distribution artifacts
|
|
57
|
+
run: uv build --no-sources
|
|
58
|
+
|
|
59
|
+
- name: Check distribution metadata
|
|
60
|
+
run: .venv/bin/python -m twine check dist/*
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
name: Publish TestPyPI
|
|
2
|
+
# TestPyPI setup required before first use:
|
|
3
|
+
# 1. Create the `deep-learning-core` project on TestPyPI.
|
|
4
|
+
# 2. Add a Trusted Publisher for:
|
|
5
|
+
# - owner: Blazkowiz47
|
|
6
|
+
# - repository: dl-core
|
|
7
|
+
# - workflow: publish-testpypi.yml
|
|
8
|
+
# - environment: dl-core
|
|
9
|
+
# 3. Create the `dl-core` GitHub environment if you want approval gates.
|
|
10
|
+
|
|
11
|
+
env:
|
|
12
|
+
FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: "true"
|
|
13
|
+
|
|
14
|
+
on:
|
|
15
|
+
workflow_dispatch:
|
|
16
|
+
|
|
17
|
+
jobs:
|
|
18
|
+
build:
|
|
19
|
+
name: Build Distribution
|
|
20
|
+
runs-on: ubuntu-latest
|
|
21
|
+
permissions:
|
|
22
|
+
contents: read
|
|
23
|
+
|
|
24
|
+
steps:
|
|
25
|
+
- name: Check out repository
|
|
26
|
+
uses: actions/checkout@v5
|
|
27
|
+
|
|
28
|
+
- name: Set up uv
|
|
29
|
+
uses: astral-sh/setup-uv@v7
|
|
30
|
+
|
|
31
|
+
- name: Set up Python
|
|
32
|
+
run: uv python install 3.11
|
|
33
|
+
|
|
34
|
+
- name: Create virtual environment
|
|
35
|
+
run: uv venv
|
|
36
|
+
|
|
37
|
+
- name: Install test dependencies
|
|
38
|
+
run: |
|
|
39
|
+
python3 - <<'PY'
|
|
40
|
+
from pathlib import Path
|
|
41
|
+
import tomllib
|
|
42
|
+
|
|
43
|
+
pyproject = tomllib.loads(Path("pyproject.toml").read_text())
|
|
44
|
+
dependencies = pyproject["project"]["dependencies"]
|
|
45
|
+
dev_dependencies = pyproject["project"]["optional-dependencies"]["dev"]
|
|
46
|
+
Path("requirements-ci.txt").write_text(
|
|
47
|
+
"\n".join([*dependencies, *dev_dependencies, "twine"]) + "\n",
|
|
48
|
+
encoding="utf-8",
|
|
49
|
+
)
|
|
50
|
+
PY
|
|
51
|
+
uv pip install --python .venv/bin/python -r requirements-ci.txt
|
|
52
|
+
uv pip install --python .venv/bin/python --no-deps --editable .
|
|
53
|
+
|
|
54
|
+
- name: Run tests
|
|
55
|
+
run: VIRTUAL_ENV="$PWD/.venv" PATH="$PWD/.venv/bin:$PATH" .venv/bin/python -m pytest
|
|
56
|
+
|
|
57
|
+
- name: Build distribution artifacts
|
|
58
|
+
run: uv build --no-sources
|
|
59
|
+
|
|
60
|
+
- name: Check distribution metadata
|
|
61
|
+
run: .venv/bin/python -m twine check dist/*
|
|
62
|
+
|
|
63
|
+
- name: Upload distribution artifacts
|
|
64
|
+
uses: actions/upload-artifact@v6
|
|
65
|
+
with:
|
|
66
|
+
name: python-package-distributions-testpypi
|
|
67
|
+
path: dist/
|
|
68
|
+
|
|
69
|
+
publish:
|
|
70
|
+
name: Publish To TestPyPI
|
|
71
|
+
runs-on: ubuntu-latest
|
|
72
|
+
needs:
|
|
73
|
+
- build
|
|
74
|
+
permissions:
|
|
75
|
+
id-token: write
|
|
76
|
+
|
|
77
|
+
environment:
|
|
78
|
+
name: dl-core
|
|
79
|
+
url: https://test.pypi.org/p/deep-learning-core
|
|
80
|
+
|
|
81
|
+
steps:
|
|
82
|
+
- name: Download distribution artifacts
|
|
83
|
+
uses: actions/download-artifact@v6
|
|
84
|
+
with:
|
|
85
|
+
name: python-package-distributions-testpypi
|
|
86
|
+
path: dist/
|
|
87
|
+
|
|
88
|
+
- name: Publish distribution to TestPyPI
|
|
89
|
+
uses: pypa/gh-action-pypi-publish@release/v1
|
|
90
|
+
with:
|
|
91
|
+
repository-url: https://test.pypi.org/legacy/
|
|
92
|
+
verbose: true
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
name: Publish
|
|
2
|
+
# PyPI setup required before first use:
|
|
3
|
+
# 1. Create the `deep-learning-core` project on PyPI.
|
|
4
|
+
# 2. Add a Trusted Publisher for:
|
|
5
|
+
# - owner: Blazkowiz47
|
|
6
|
+
# - repository: dl-core
|
|
7
|
+
# - workflow: publish.yml
|
|
8
|
+
# - environment: dl-core
|
|
9
|
+
# 3. Create the `dl-core` GitHub environment if you want approval gates.
|
|
10
|
+
|
|
11
|
+
env:
|
|
12
|
+
FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: "true"
|
|
13
|
+
|
|
14
|
+
on:
|
|
15
|
+
workflow_dispatch:
|
|
16
|
+
|
|
17
|
+
jobs:
|
|
18
|
+
build:
|
|
19
|
+
name: Build Distribution
|
|
20
|
+
runs-on: ubuntu-latest
|
|
21
|
+
permissions:
|
|
22
|
+
contents: read
|
|
23
|
+
|
|
24
|
+
steps:
|
|
25
|
+
- name: Check out repository
|
|
26
|
+
uses: actions/checkout@v5
|
|
27
|
+
|
|
28
|
+
- name: Set up uv
|
|
29
|
+
uses: astral-sh/setup-uv@v7
|
|
30
|
+
|
|
31
|
+
- name: Set up Python
|
|
32
|
+
run: uv python install 3.11
|
|
33
|
+
|
|
34
|
+
- name: Create virtual environment
|
|
35
|
+
run: uv venv
|
|
36
|
+
|
|
37
|
+
- name: Install test dependencies
|
|
38
|
+
run: |
|
|
39
|
+
python3 - <<'PY'
|
|
40
|
+
from pathlib import Path
|
|
41
|
+
import tomllib
|
|
42
|
+
|
|
43
|
+
pyproject = tomllib.loads(Path("pyproject.toml").read_text())
|
|
44
|
+
dependencies = pyproject["project"]["dependencies"]
|
|
45
|
+
dev_dependencies = pyproject["project"]["optional-dependencies"]["dev"]
|
|
46
|
+
Path("requirements-ci.txt").write_text(
|
|
47
|
+
"\n".join([*dependencies, *dev_dependencies, "twine"]) + "\n",
|
|
48
|
+
encoding="utf-8",
|
|
49
|
+
)
|
|
50
|
+
PY
|
|
51
|
+
uv pip install --python .venv/bin/python -r requirements-ci.txt
|
|
52
|
+
uv pip install --python .venv/bin/python --no-deps --editable .
|
|
53
|
+
|
|
54
|
+
- name: Run tests
|
|
55
|
+
run: VIRTUAL_ENV="$PWD/.venv" PATH="$PWD/.venv/bin:$PATH" .venv/bin/python -m pytest
|
|
56
|
+
|
|
57
|
+
- name: Build distribution artifacts
|
|
58
|
+
run: uv build --no-sources
|
|
59
|
+
|
|
60
|
+
- name: Check distribution metadata
|
|
61
|
+
run: .venv/bin/python -m twine check dist/*
|
|
62
|
+
|
|
63
|
+
- name: Upload distribution artifacts
|
|
64
|
+
uses: actions/upload-artifact@v6
|
|
65
|
+
with:
|
|
66
|
+
name: python-package-distributions
|
|
67
|
+
path: dist/
|
|
68
|
+
|
|
69
|
+
publish:
|
|
70
|
+
name: Publish To PyPI
|
|
71
|
+
runs-on: ubuntu-latest
|
|
72
|
+
needs:
|
|
73
|
+
- build
|
|
74
|
+
permissions:
|
|
75
|
+
id-token: write
|
|
76
|
+
|
|
77
|
+
environment:
|
|
78
|
+
name: dl-core
|
|
79
|
+
url: https://pypi.org/p/deep-learning-core
|
|
80
|
+
|
|
81
|
+
steps:
|
|
82
|
+
- name: Download distribution artifacts
|
|
83
|
+
uses: actions/download-artifact@v6
|
|
84
|
+
with:
|
|
85
|
+
name: python-package-distributions
|
|
86
|
+
path: dist/
|
|
87
|
+
|
|
88
|
+
- name: Publish distribution to PyPI
|
|
89
|
+
uses: pypa/gh-action-pypi-publish@release/v1
|
|
90
|
+
with:
|
|
91
|
+
verbose: true
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
# Python bytecode and caches
|
|
2
|
+
__pycache__/
|
|
3
|
+
*.py[cod]
|
|
4
|
+
*$py.class
|
|
5
|
+
|
|
6
|
+
# Virtual environments
|
|
7
|
+
.venv/
|
|
8
|
+
venv/
|
|
9
|
+
.tmp-ci-venv/
|
|
10
|
+
|
|
11
|
+
# Test and coverage artifacts
|
|
12
|
+
.pytest_cache/
|
|
13
|
+
.coverage
|
|
14
|
+
.coverage.*
|
|
15
|
+
coverage.xml
|
|
16
|
+
htmlcov/
|
|
17
|
+
|
|
18
|
+
# Type checker and linter caches
|
|
19
|
+
.mypy_cache/
|
|
20
|
+
.ruff_cache/
|
|
21
|
+
|
|
22
|
+
# Build artifacts
|
|
23
|
+
build/
|
|
24
|
+
dist/
|
|
25
|
+
*.egg-info/
|
|
26
|
+
pip-wheel-metadata/
|
|
27
|
+
|
|
28
|
+
# Local experiment outputs
|
|
29
|
+
artifacts/
|
|
30
|
+
|
|
31
|
+
# Notebook and editor metadata
|
|
32
|
+
.ipynb_checkpoints/
|
|
33
|
+
.DS_Store
|
|
34
|
+
.idea/
|
|
35
|
+
.vscode/
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
<agent_spec>
|
|
2
|
+
<title>dl-core Repository Guidelines</title>
|
|
3
|
+
|
|
4
|
+
<project_structure>
|
|
5
|
+
<rule>Repository root includes <code>.github/</code>, <code>src/</code>, <code>tests/</code>, <code>readme/</code>, <code>README.md</code>, <code>pyproject.toml</code>, and <code>uv.lock</code>.</rule>
|
|
6
|
+
<rule><code>src/dl_core/</code> stores the reusable framework package.</rule>
|
|
7
|
+
<rule><code>src/dl_core/core/</code> stores base abstractions and registries.</rule>
|
|
8
|
+
<rule><code>src/dl_core/templates/</code> stores bundled scaffold files copied into generated experiment repositories.</rule>
|
|
9
|
+
<rule><code>tests/</code> stores repository-level <code>pytest</code> coverage for scaffolding, CLI behavior, and local components.</rule>
|
|
10
|
+
<rule><code>readme/</code> stores extended user and technical documentation.</rule>
|
|
11
|
+
<rule><code>.github/workflows/</code> stores CI and publishing workflows.</rule>
|
|
12
|
+
<rule><code>dist/</code> contains generated build artifacts; treat it as output, not source.</rule>
|
|
13
|
+
</project_structure>
|
|
14
|
+
|
|
15
|
+
<command_policy>
|
|
16
|
+
<rule>Run commands from the repository root unless a narrower directory is clearly better for the task.</rule>
|
|
17
|
+
<rule>Prefer fast search commands: <code>rg</code>, <code>rg --files</code>.</rule>
|
|
18
|
+
<rule>Use non-destructive commands by default.</rule>
|
|
19
|
+
<rule>Prefer repository-standard <code>uv</code> commands for Python execution, validation, and build steps.</rule>
|
|
20
|
+
<rule>Standard validation commands are <code>uv run --extra dev pytest</code>, <code>uv run python -m compileall src/dl_core</code>, and <code>uv build --no-sources</code>.</rule>
|
|
21
|
+
<rule>Do not invent alternate environment-management flows when <code>uv</code> already covers the task.</rule>
|
|
22
|
+
</command_policy>
|
|
23
|
+
|
|
24
|
+
<development_rules>
|
|
25
|
+
<rule>Type hints are required for Python code.</rule>
|
|
26
|
+
<rule>Public modules, public APIs, and CLI entry points should include concise docstrings.</rule>
|
|
27
|
+
<rule>Match the existing style: 4-space indentation, <code>snake_case</code> functions and modules, <code>PascalCase</code> classes, and short module docstrings.</rule>
|
|
28
|
+
<rule>Use f-strings for string formatting.</rule>
|
|
29
|
+
<rule>Keep functions focused and avoid unnecessary nesting.</rule>
|
|
30
|
+
<rule>No formatter or linter configuration is defined in <code>pyproject.toml</code>; mirror nearby files instead of re-styling code arbitrarily.</rule>
|
|
31
|
+
</development_rules>
|
|
32
|
+
|
|
33
|
+
<architecture_rules>
|
|
34
|
+
<rule>Keep <code>dl-core</code> reusable and vendor-neutral; company-specific integrations belong outside the core package.</rule>
|
|
35
|
+
<rule>Preserve the registry-driven extension model in <code>src/dl_core/core/registry.py</code> and related package exports.</rule>
|
|
36
|
+
<rule>Keep scaffold logic in <code>src/dl_core/init_experiment.py</code> aligned with the bundled files in <code>src/dl_core/templates/</code>.</rule>
|
|
37
|
+
<rule>Keep generated config conventions consistent: top-level <code>accelerator</code>, <code>dataset</code>, singular <code>trainer</code>, and plural component sections such as <code>models</code>, <code>optimizers</code>, <code>criterions</code>, <code>metric_managers</code>, and <code>callbacks</code>.</rule>
|
|
38
|
+
<rule>Use <code>dataset.classes</code> for class ordering, and keep sweep dotted paths aligned with the generated config structure.</rule>
|
|
39
|
+
<rule>Do not introduce experiment-specific assumptions into the library when the behavior belongs in a generated consumer repository.</rule>
|
|
40
|
+
</architecture_rules>
|
|
41
|
+
|
|
42
|
+
<execution_policy>
|
|
43
|
+
<rule>Never run training jobs, sweeps, worker processes, or publish workflows unless explicitly requested.</rule>
|
|
44
|
+
<rule>Prefer targeted validation for the files you changed; full test runs are appropriate for code, packaging, or release work.</rule>
|
|
45
|
+
<rule>If validation was not run, state it explicitly in the final response.</rule>
|
|
46
|
+
<rule>Do not push commits or trigger manual GitHub Actions unless the user asked for that outcome.</rule>
|
|
47
|
+
</execution_policy>
|
|
48
|
+
|
|
49
|
+
<editing_policy>
|
|
50
|
+
<rule>Keep edits minimal and task-scoped.</rule>
|
|
51
|
+
<rule>Do not refactor unrelated code.</rule>
|
|
52
|
+
<rule>Prefer <code>apply_patch</code> for focused, reviewable edits.</rule>
|
|
53
|
+
<rule>Do not overwrite user changes or revert unrelated work in a dirty tree.</rule>
|
|
54
|
+
<rule>When changing scaffolded files or config conventions, update both the generator and the bundled templates together.</rule>
|
|
55
|
+
</editing_policy>
|
|
56
|
+
|
|
57
|
+
<parallel_agent_policy>
|
|
58
|
+
<rule>Assume multiple agents may edit in parallel.</rule>
|
|
59
|
+
<rule>If a file changes while being edited, re-read the latest content and integrate safely.</rule>
|
|
60
|
+
<rule>Only stage or commit the specific changes created for the current task.</rule>
|
|
61
|
+
<rule>Before any commit, verify that staged changes match the intended scope.</rule>
|
|
62
|
+
</parallel_agent_policy>
|
|
63
|
+
|
|
64
|
+
<versioning_policy>
|
|
65
|
+
<rule>When bumping the package version, update <code>pyproject.toml</code>, <code>src/dl_core/__init__.py</code>, and the scaffold dependency floor in <code>src/dl_core/init_experiment.py</code>.</rule>
|
|
66
|
+
<rule>If the version bump affects package metadata or the local project entry in <code>uv.lock</code>, refresh the lockfile rather than editing it by hand.</rule>
|
|
67
|
+
<rule>Before any publish action, make sure version references are internally consistent and validation has passed.</rule>
|
|
68
|
+
<rule>Use concise release commits such as <code>release: bump dl-core to 0.1.8</code>.</rule>
|
|
69
|
+
</versioning_policy>
|
|
70
|
+
|
|
71
|
+
<github_actions_policy>
|
|
72
|
+
<rule>Use <code>gh</code> to inspect workflows and runs when GitHub Actions work is requested.</rule>
|
|
73
|
+
<rule>The repository workflows are <code>CI</code>, <code>Publish TestPyPI</code>, and <code>Publish</code>.</rule>
|
|
74
|
+
<rule>Prefer checking existing runs with <code>gh run list</code>, <code>gh run view</code>, and <code>gh run watch</code> before dispatching anything new.</rule>
|
|
75
|
+
<rule>When the user says <code>publish</code>, push the current commits and trigger <code>Publish TestPyPI</code> by default.</rule>
|
|
76
|
+
<rule>Only trigger the <code>Publish</code> workflow when the user explicitly says <code>publish on pypi</code> or clearly requests a PyPI release.</rule>
|
|
77
|
+
<rule>After dispatching a workflow with <code>gh workflow run</code>, monitor it and report the final status and run identifier or URL.</rule>
|
|
78
|
+
<rule>Do not cancel, rerun, or approve workflows unless the user explicitly asks for that action.</rule>
|
|
79
|
+
</github_actions_policy>
|
|
80
|
+
|
|
81
|
+
<jira_policy>
|
|
82
|
+
<rule>Use <code>acli</code> for Jira issue lookup, creation, and status tracking when Jira work is requested.</rule>
|
|
83
|
+
<rule>Before starting substantial new implementation work, first create appropriately nested Jira work items that match the repository task hierarchy.</rule>
|
|
84
|
+
<rule>When work spans multiple steps or components, create parent and child Jira tasks instead of tracking everything in a single flat issue.</rule>
|
|
85
|
+
<rule>Do not create Jira tasks for very small edits, narrow documentation changes, or other low-overhead work unless the user explicitly asks for Jira tracking.</rule>
|
|
86
|
+
<rule>When creating a Jira task, include a concise summary, repository context, affected paths, and clear acceptance criteria.</rule>
|
|
87
|
+
<rule>When tracking work against Jira, report the issue key and the exact status change or comment that was added.</rule>
|
|
88
|
+
<rule>After completing a task, transition the corresponding Jira issue to <code>Done</code>.</rule>
|
|
89
|
+
<rule>If the Jira project, issue type, assignee, or workflow step is unclear, inspect existing issues first instead of guessing.</rule>
|
|
90
|
+
</jira_policy>
|
|
91
|
+
|
|
92
|
+
<git_policy>
|
|
93
|
+
<rule>After every completed repository change, stage the task-scoped files and create a concise local git commit.</rule>
|
|
94
|
+
<rule>Do not push commits by default; pushing is reserved for an explicit <code>publish</code> request.</rule>
|
|
95
|
+
<rule>Use clear, imperative, prefix-based commit messages such as <code>docs: update contributor guide</code>, <code>test: add scaffold smoke coverage</code>, or <code>release: bump dl-core to 0.1.8</code>.</rule>
|
|
96
|
+
<rule>Keep pull requests focused and include scope summary, validation evidence, and any config or release implications.</rule>
|
|
97
|
+
<rule>When CLI behavior, scaffold output, or release flow changes, include sample commands or output in the PR description.</rule>
|
|
98
|
+
<rule>Never mention tool-generated authorship metadata such as <code>co-authored-by</code> unless the user explicitly asks for it.</rule>
|
|
99
|
+
</git_policy>
|
|
100
|
+
|
|
101
|
+
<agent_behavior>
|
|
102
|
+
<rule>Before substantial tool use, restate the goal and provide a short plan.</rule>
|
|
103
|
+
<rule>For multi-step tasks, provide concise progress updates.</rule>
|
|
104
|
+
<rule>Complete end-to-end resolution in one turn when feasible.</rule>
|
|
105
|
+
<rule>If uncertain, gather evidence with tools rather than guessing.</rule>
|
|
106
|
+
<rule>When a task involves release, packaging, GitHub Actions, or Jira, summarize the intended commands before executing them.</rule>
|
|
107
|
+
<rule>When helping with release work, prefer validating locally first, then using <code>gh</code> for workflow dispatch or inspection only if the user asked for it.</rule>
|
|
108
|
+
</agent_behavior>
|
|
109
|
+
</agent_spec>
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Sushrut Patwardhan
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
|
@@ -0,0 +1,267 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: deep-learning-core
|
|
3
|
+
Version: 0.0.1
|
|
4
|
+
Summary: Reusable deep learning framework core.
|
|
5
|
+
Project-URL: Homepage, https://github.com/Blazkowiz47/dl-core
|
|
6
|
+
Project-URL: Documentation, https://github.com/Blazkowiz47/dl-core/tree/main/readme
|
|
7
|
+
Project-URL: Repository, https://github.com/Blazkowiz47/dl-core
|
|
8
|
+
Project-URL: Issues, https://github.com/Blazkowiz47/dl-core/issues
|
|
9
|
+
Author-email: blazkowiz47 <sushrutpatwardhan@gmail.com>
|
|
10
|
+
Maintainer-email: blazkowiz47 <sushrutpatwardhan@gmail.com>
|
|
11
|
+
License: MIT License
|
|
12
|
+
|
|
13
|
+
Copyright (c) 2026 Sushrut Patwardhan
|
|
14
|
+
|
|
15
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
16
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
17
|
+
in the Software without restriction, including without limitation the rights
|
|
18
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
19
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
20
|
+
furnished to do so, subject to the following conditions:
|
|
21
|
+
|
|
22
|
+
The above copyright notice and this permission notice shall be included in all
|
|
23
|
+
copies or substantial portions of the Software.
|
|
24
|
+
|
|
25
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
26
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
27
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
28
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
29
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
30
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
31
|
+
SOFTWARE.
|
|
32
|
+
License-File: LICENSE
|
|
33
|
+
Keywords: deep-learning,machine-learning,pytorch,sweeps,training
|
|
34
|
+
Classifier: Development Status :: 4 - Beta
|
|
35
|
+
Classifier: Intended Audience :: Developers
|
|
36
|
+
Classifier: Intended Audience :: Science/Research
|
|
37
|
+
Classifier: License :: OSI Approved :: MIT License
|
|
38
|
+
Classifier: Operating System :: OS Independent
|
|
39
|
+
Classifier: Programming Language :: Python :: 3
|
|
40
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
41
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
42
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
43
|
+
Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
|
|
44
|
+
Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
|
45
|
+
Requires-Python: >=3.10
|
|
46
|
+
Requires-Dist: albumentations
|
|
47
|
+
Requires-Dist: numpy
|
|
48
|
+
Requires-Dist: opencv-python
|
|
49
|
+
Requires-Dist: psutil
|
|
50
|
+
Requires-Dist: pyyaml
|
|
51
|
+
Requires-Dist: scikit-learn
|
|
52
|
+
Requires-Dist: torch
|
|
53
|
+
Requires-Dist: torchvision
|
|
54
|
+
Requires-Dist: tqdm
|
|
55
|
+
Provides-Extra: azure
|
|
56
|
+
Requires-Dist: deep-learning-azure; extra == 'azure'
|
|
57
|
+
Provides-Extra: dev
|
|
58
|
+
Requires-Dist: pytest; extra == 'dev'
|
|
59
|
+
Provides-Extra: mlflow
|
|
60
|
+
Requires-Dist: deep-learning-mlflow; extra == 'mlflow'
|
|
61
|
+
Provides-Extra: wandb
|
|
62
|
+
Requires-Dist: deep-learning-wandb; extra == 'wandb'
|
|
63
|
+
Description-Content-Type: text/markdown
|
|
64
|
+
|
|
65
|
+
# dl-core
|
|
66
|
+
|
|
67
|
+
Reusable deep learning framework core.
|
|
68
|
+
|
|
69
|
+
`dl-core` contains the vendor-neutral training framework that can be reused
|
|
70
|
+
across many experiment repositories. It is intended to be the public base
|
|
71
|
+
package, while optional integrations such as Azure are layered on through
|
|
72
|
+
extras and companion extension packages.
|
|
73
|
+
|
|
74
|
+
## Install
|
|
75
|
+
|
|
76
|
+
Current public validation releases are published on TestPyPI. Once the package
|
|
77
|
+
is promoted to PyPI, the plain `pip install dl-core` forms below will be the
|
|
78
|
+
normal install path.
|
|
79
|
+
|
|
80
|
+
PyPI install target:
|
|
81
|
+
|
|
82
|
+
```bash
|
|
83
|
+
pip install dl-core
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
Install with Azure support:
|
|
87
|
+
|
|
88
|
+
```bash
|
|
89
|
+
pip install "dl-core[azure]"
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
Install with local MLflow support:
|
|
93
|
+
|
|
94
|
+
```bash
|
|
95
|
+
pip install "dl-core[mlflow]"
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
Install with W&B support:
|
|
99
|
+
|
|
100
|
+
```bash
|
|
101
|
+
pip install "dl-core[wandb]"
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
Install with multiple variants:
|
|
105
|
+
|
|
106
|
+
```bash
|
|
107
|
+
pip install "dl-core[azure,wandb]"
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
Install today from TestPyPI with `pip`:
|
|
111
|
+
|
|
112
|
+
```bash
|
|
113
|
+
pip install \
|
|
114
|
+
--index-url https://test.pypi.org/simple/ \
|
|
115
|
+
--extra-index-url https://pypi.org/simple/ \
|
|
116
|
+
dl-core
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
Install today from TestPyPI in a `uv` project:
|
|
120
|
+
|
|
121
|
+
```toml
|
|
122
|
+
[tool.uv.sources]
|
|
123
|
+
dl-core = { index = "testpypi" }
|
|
124
|
+
|
|
125
|
+
[[tool.uv.index]]
|
|
126
|
+
name = "testpypi"
|
|
127
|
+
url = "https://test.pypi.org/simple/"
|
|
128
|
+
explicit = true
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
Then run:
|
|
132
|
+
|
|
133
|
+
```bash
|
|
134
|
+
uv add dl-core
|
|
135
|
+
```
|
|
136
|
+
|
|
137
|
+
Do not use `uv add --index https://test.pypi.org/simple/ dl-core` for this
|
|
138
|
+
package. With `uv`'s default `first-index` strategy, that can pull unrelated
|
|
139
|
+
dependency names from TestPyPI instead of PyPI.
|
|
140
|
+
|
|
141
|
+
`dl-core` intentionally ships with the full public runtime dependencies,
|
|
142
|
+
including `torch`, `torchvision`, and `opencv-python`. The Azure extra pulls in
|
|
143
|
+
`dl-azure`, which pins the Azure package versions used by the validated Azure
|
|
144
|
+
packaging stack. The MLflow extra pulls in `dl-mlflow` for local MLflow
|
|
145
|
+
tracking. The W&B extra pulls in `dl-wandb` and leaves the `wandb` package
|
|
146
|
+
itself unpinned.
|
|
147
|
+
|
|
148
|
+
## Package Variants
|
|
149
|
+
|
|
150
|
+
- `dl-core`: local training, local sweeps, local sweep analysis, and the
|
|
151
|
+
experiment scaffold
|
|
152
|
+
- `dl-core[azure]`: adds the public
|
|
153
|
+
[`dl-azure`](https://github.com/Blazkowiz47/dl-azure)
|
|
154
|
+
package for Azure execution and Azure dataset foundations
|
|
155
|
+
- `dl-core[mlflow]`: adds the public
|
|
156
|
+
[`dl-mlflow`](https://github.com/Blazkowiz47/dl-mlflow)
|
|
157
|
+
package for local MLflow integration
|
|
158
|
+
- `dl-core[wandb]`: adds the public
|
|
159
|
+
[`dl-wandb`](https://github.com/Blazkowiz47/dl-wandb)
|
|
160
|
+
package for Weights & Biases integration
|
|
161
|
+
|
|
162
|
+
The extension packages stay separate so the base package remains reusable and
|
|
163
|
+
vendor-neutral.
|
|
164
|
+
|
|
165
|
+
## Scope
|
|
166
|
+
|
|
167
|
+
- Base abstractions and registries
|
|
168
|
+
- Built-in accelerators, callbacks, criterions, metrics, and schedulers
|
|
169
|
+
- The standard trainer and standard dataset flow
|
|
170
|
+
- Built-in augmentations
|
|
171
|
+
- Local execution and sweep orchestration
|
|
172
|
+
- Local sweep analysis from saved artifact summaries
|
|
173
|
+
- Experiment repository scaffolding via `dl-init-experiment`
|
|
174
|
+
|
|
175
|
+
## Out Of Scope
|
|
176
|
+
|
|
177
|
+
- Azure ML wiring unless the Azure extra is installed
|
|
178
|
+
- Workspace or datastore conventions
|
|
179
|
+
- Experiment-specific datasets, models, and trainers
|
|
180
|
+
- User-owned configs and private data
|
|
181
|
+
|
|
182
|
+
## Quick Start
|
|
183
|
+
|
|
184
|
+
```bash
|
|
185
|
+
dl-run --show-registry
|
|
186
|
+
dl-init-experiment --name my-exp --root-dir .
|
|
187
|
+
```
|
|
188
|
+
|
|
189
|
+
To initialize the current directory in place, omit `--name`:
|
|
190
|
+
|
|
191
|
+
```bash
|
|
192
|
+
dl-init-experiment --root-dir .
|
|
193
|
+
```
|
|
194
|
+
|
|
195
|
+
The generated experiment repository is the normal consumer entry point. Install
|
|
196
|
+
that repository in editable mode, then run:
|
|
197
|
+
|
|
198
|
+
```bash
|
|
199
|
+
uv run dl-run --config configs/base.yaml
|
|
200
|
+
uv run dl-sweep --sweep experiments/lr_sweep.yaml
|
|
201
|
+
uv run dl-analyze-sweep --sweep experiments/lr_sweep.yaml
|
|
202
|
+
```
|
|
203
|
+
|
|
204
|
+
If Azure support is installed, `dl-init-experiment --with-azure` will also
|
|
205
|
+
scaffold Azure-ready config placeholders and `azure-config.json`.
|
|
206
|
+
|
|
207
|
+
If local MLflow support is installed, `dl-init-experiment --with-mlflow` will
|
|
208
|
+
also scaffold an `mlflow` callback block and local tracking defaults.
|
|
209
|
+
|
|
210
|
+
If W&B support is installed, `dl-init-experiment --with-wandb` will also
|
|
211
|
+
scaffold a `wandb` callback block, W&B tracking defaults, and `.env.example`.
|
|
212
|
+
|
|
213
|
+
## Companion Packages
|
|
214
|
+
|
|
215
|
+
- [`dl-azure`](https://github.com/Blazkowiz47/dl-azure)
|
|
216
|
+
- [`dl-mlflow`](https://github.com/Blazkowiz47/dl-mlflow)
|
|
217
|
+
- [`dl-wandb`](https://github.com/Blazkowiz47/dl-wandb)
|
|
218
|
+
|
|
219
|
+
To add a new local component scaffold inside the experiment repo:
|
|
220
|
+
|
|
221
|
+
```bash
|
|
222
|
+
uv run dl-core add augmentation Custom1
|
|
223
|
+
```
|
|
224
|
+
|
|
225
|
+
Dataset scaffolds can now target a specific wrapper base:
|
|
226
|
+
|
|
227
|
+
```bash
|
|
228
|
+
uv run dl-core add dataset MyDataset
|
|
229
|
+
uv run dl-core add dataset FrameSet --base frame
|
|
230
|
+
```
|
|
231
|
+
|
|
232
|
+
When `dl-azure` is importable, the dataset scaffold also exposes Azure bases:
|
|
233
|
+
|
|
234
|
+
```bash
|
|
235
|
+
uv run dl-core add dataset AzureFrames --base azure_compute_frame
|
|
236
|
+
uv run dl-core add dataset AzureSeq --base azure_compute_multiframe
|
|
237
|
+
```
|
|
238
|
+
|
|
239
|
+
Plain `dl-core` currently exposes dataset bases for `BaseWrapper` and
|
|
240
|
+
`FrameWrapper`. Multiframe dataset bases are provided through `dl-azure`.
|
|
241
|
+
|
|
242
|
+
## Releases
|
|
243
|
+
|
|
244
|
+
- `Publish TestPyPI` is the manual validation workflow for TestPyPI.
|
|
245
|
+
- `Publish` is the production workflow for PyPI.
|
|
246
|
+
- Trusted publishing is configured through GitHub Actions environments rather
|
|
247
|
+
than long-lived API tokens.
|
|
248
|
+
- The publish action may upload digital attestations alongside the package.
|
|
249
|
+
That is expected behavior from `pypa/gh-action-pypi-publish`.
|
|
250
|
+
- Package metadata keeps runtime dependencies unpinned, so the consuming
|
|
251
|
+
environment resolves the latest compatible public releases.
|
|
252
|
+
|
|
253
|
+
## Documentation
|
|
254
|
+
|
|
255
|
+
- [Documentation Index](https://github.com/Blazkowiz47/dl-core/tree/main/readme)
|
|
256
|
+
- [GitHub Repository](https://github.com/Blazkowiz47/dl-core)
|
|
257
|
+
|
|
258
|
+
## License
|
|
259
|
+
|
|
260
|
+
MIT. See [LICENSE](LICENSE).
|
|
261
|
+
|
|
262
|
+
## Development Validation
|
|
263
|
+
|
|
264
|
+
```bash
|
|
265
|
+
uv run --extra dev pytest
|
|
266
|
+
uv run python -m compileall src/dl_core
|
|
267
|
+
```
|