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.
Files changed (115) hide show
  1. deep_learning_core-0.0.1/.github/workflows/ci.yml +60 -0
  2. deep_learning_core-0.0.1/.github/workflows/publish-testpypi.yml +92 -0
  3. deep_learning_core-0.0.1/.github/workflows/publish.yml +91 -0
  4. deep_learning_core-0.0.1/.gitignore +35 -0
  5. deep_learning_core-0.0.1/AGENTS.md +109 -0
  6. deep_learning_core-0.0.1/LICENSE +21 -0
  7. deep_learning_core-0.0.1/PKG-INFO +267 -0
  8. deep_learning_core-0.0.1/README.md +203 -0
  9. deep_learning_core-0.0.1/plan.md +324 -0
  10. deep_learning_core-0.0.1/pyproject.toml +95 -0
  11. deep_learning_core-0.0.1/readme/README.md +75 -0
  12. deep_learning_core-0.0.1/readme/guide/1_getting_started.md +60 -0
  13. deep_learning_core-0.0.1/readme/guide/2_creating_an_experiment_repository.md +75 -0
  14. deep_learning_core-0.0.1/readme/guide/3_local_components_and_sweeps.md +90 -0
  15. deep_learning_core-0.0.1/readme/technical/1_configuration.md +122 -0
  16. deep_learning_core-0.0.1/readme/technical/2_entry_points.md +104 -0
  17. deep_learning_core-0.0.1/readme/technical/3_sweep_system.md +94 -0
  18. deep_learning_core-0.0.1/readme/technical/4_local_component_loading.md +43 -0
  19. deep_learning_core-0.0.1/readme/technical/5_testing.md +34 -0
  20. deep_learning_core-0.0.1/readme/tldr/1_install_and_verify.md +33 -0
  21. deep_learning_core-0.0.1/readme/tldr/2_create_and_run_an_experiment.md +54 -0
  22. deep_learning_core-0.0.1/requirements-ci.txt +11 -0
  23. deep_learning_core-0.0.1/src/dl_core/__init__.py +86 -0
  24. deep_learning_core-0.0.1/src/dl_core/accelerators/__init__.py +20 -0
  25. deep_learning_core-0.0.1/src/dl_core/accelerators/cpu.py +98 -0
  26. deep_learning_core-0.0.1/src/dl_core/accelerators/multi_gpu.py +347 -0
  27. deep_learning_core-0.0.1/src/dl_core/accelerators/single_gpu.py +140 -0
  28. deep_learning_core-0.0.1/src/dl_core/analysis/__init__.py +5 -0
  29. deep_learning_core-0.0.1/src/dl_core/analysis/sweep_analyzer.py +280 -0
  30. deep_learning_core-0.0.1/src/dl_core/augmentations/__init__.py +11 -0
  31. deep_learning_core-0.0.1/src/dl_core/augmentations/minimal.py +40 -0
  32. deep_learning_core-0.0.1/src/dl_core/augmentations/standard.py +61 -0
  33. deep_learning_core-0.0.1/src/dl_core/callbacks/__init__.py +11 -0
  34. deep_learning_core-0.0.1/src/dl_core/callbacks/checkpoint.py +94 -0
  35. deep_learning_core-0.0.1/src/dl_core/callbacks/early_stopping.py +265 -0
  36. deep_learning_core-0.0.1/src/dl_core/callbacks/metric_logger.py +71 -0
  37. deep_learning_core-0.0.1/src/dl_core/cli.py +78 -0
  38. deep_learning_core-0.0.1/src/dl_core/component_scaffold.py +704 -0
  39. deep_learning_core-0.0.1/src/dl_core/core/__init__.py +105 -0
  40. deep_learning_core-0.0.1/src/dl_core/core/base_accelerator.py +367 -0
  41. deep_learning_core-0.0.1/src/dl_core/core/base_biometric_model.py +24 -0
  42. deep_learning_core-0.0.1/src/dl_core/core/base_callback.py +698 -0
  43. deep_learning_core-0.0.1/src/dl_core/core/base_criterion.py +149 -0
  44. deep_learning_core-0.0.1/src/dl_core/core/base_dataset.py +1447 -0
  45. deep_learning_core-0.0.1/src/dl_core/core/base_detector.py +148 -0
  46. deep_learning_core-0.0.1/src/dl_core/core/base_executor.py +654 -0
  47. deep_learning_core-0.0.1/src/dl_core/core/base_metric.py +140 -0
  48. deep_learning_core-0.0.1/src/dl_core/core/base_metric_manager.py +541 -0
  49. deep_learning_core-0.0.1/src/dl_core/core/base_model.py +320 -0
  50. deep_learning_core-0.0.1/src/dl_core/core/base_sampler.py +74 -0
  51. deep_learning_core-0.0.1/src/dl_core/core/base_trainer.py +2732 -0
  52. deep_learning_core-0.0.1/src/dl_core/core/base_transform.py +100 -0
  53. deep_learning_core-0.0.1/src/dl_core/core/registry.py +345 -0
  54. deep_learning_core-0.0.1/src/dl_core/criterions/__init__.py +9 -0
  55. deep_learning_core-0.0.1/src/dl_core/criterions/bce_with_logits.py +56 -0
  56. deep_learning_core-0.0.1/src/dl_core/criterions/crossentropy.py +67 -0
  57. deep_learning_core-0.0.1/src/dl_core/datasets/__init__.py +7 -0
  58. deep_learning_core-0.0.1/src/dl_core/datasets/standard.py +150 -0
  59. deep_learning_core-0.0.1/src/dl_core/executors/__init__.py +9 -0
  60. deep_learning_core-0.0.1/src/dl_core/executors/local.py +154 -0
  61. deep_learning_core-0.0.1/src/dl_core/init_experiment.py +568 -0
  62. deep_learning_core-0.0.1/src/dl_core/init_extensions.py +163 -0
  63. deep_learning_core-0.0.1/src/dl_core/metric_managers/__init__.py +18 -0
  64. deep_learning_core-0.0.1/src/dl_core/metric_managers/standard_manager.py +298 -0
  65. deep_learning_core-0.0.1/src/dl_core/metrics/__init__.py +20 -0
  66. deep_learning_core-0.0.1/src/dl_core/metrics/accuracy.py +80 -0
  67. deep_learning_core-0.0.1/src/dl_core/metrics/auc.py +88 -0
  68. deep_learning_core-0.0.1/src/dl_core/metrics/f1.py +89 -0
  69. deep_learning_core-0.0.1/src/dl_core/metrics/halt_steps.py +39 -0
  70. deep_learning_core-0.0.1/src/dl_core/models/__init__.py +7 -0
  71. deep_learning_core-0.0.1/src/dl_core/models/resnet.py +205 -0
  72. deep_learning_core-0.0.1/src/dl_core/optimizers/__init__.py +16 -0
  73. deep_learning_core-0.0.1/src/dl_core/project.py +48 -0
  74. deep_learning_core-0.0.1/src/dl_core/schedulers/__init__.py +21 -0
  75. deep_learning_core-0.0.1/src/dl_core/schedulers/cosinewithwarmup.py +62 -0
  76. deep_learning_core-0.0.1/src/dl_core/single_run.py +200 -0
  77. deep_learning_core-0.0.1/src/dl_core/sweep/__init__.py +5 -0
  78. deep_learning_core-0.0.1/src/dl_core/sweep/config/__init__.py +43 -0
  79. deep_learning_core-0.0.1/src/dl_core/sweep/config/config_builder.py +502 -0
  80. deep_learning_core-0.0.1/src/dl_core/sweep/config/config_utils.py +438 -0
  81. deep_learning_core-0.0.1/src/dl_core/sweep/runner.py +271 -0
  82. deep_learning_core-0.0.1/src/dl_core/sweep/template/__init__.py +46 -0
  83. deep_learning_core-0.0.1/src/dl_core/sweep/template/template_loader.py +251 -0
  84. deep_learning_core-0.0.1/src/dl_core/sweep/template/template_merger.py +291 -0
  85. deep_learning_core-0.0.1/src/dl_core/sweep/template/template_validator.py +39 -0
  86. deep_learning_core-0.0.1/src/dl_core/sweep/template/tracking_utils.py +105 -0
  87. deep_learning_core-0.0.1/src/dl_core/templates/README.md +12 -0
  88. deep_learning_core-0.0.1/src/dl_core/templates/base/base.yaml +79 -0
  89. deep_learning_core-0.0.1/src/dl_core/templates/base/base_sweep.yaml +31 -0
  90. deep_learning_core-0.0.1/src/dl_core/templates/presets.yaml +78 -0
  91. deep_learning_core-0.0.1/src/dl_core/templates/sweeps/example_sweep.yaml +10 -0
  92. deep_learning_core-0.0.1/src/dl_core/trainers/__init__.py +8 -0
  93. deep_learning_core-0.0.1/src/dl_core/trainers/standard_trainer.py +284 -0
  94. deep_learning_core-0.0.1/src/dl_core/utils/__init__.py +37 -0
  95. deep_learning_core-0.0.1/src/dl_core/utils/artifact_manager.py +400 -0
  96. deep_learning_core-0.0.1/src/dl_core/utils/checkpoint_utils.py +107 -0
  97. deep_learning_core-0.0.1/src/dl_core/utils/common.py +394 -0
  98. deep_learning_core-0.0.1/src/dl_core/utils/config.py +122 -0
  99. deep_learning_core-0.0.1/src/dl_core/utils/config_validator.py +348 -0
  100. deep_learning_core-0.0.1/src/dl_core/utils/distributed_utils.py +364 -0
  101. deep_learning_core-0.0.1/src/dl_core/utils/ema.py +179 -0
  102. deep_learning_core-0.0.1/src/dl_core/utils/logging/__init__.py +3 -0
  103. deep_learning_core-0.0.1/src/dl_core/utils/logging/logger.py +255 -0
  104. deep_learning_core-0.0.1/src/dl_core/utils/runtime_utils.py +94 -0
  105. deep_learning_core-0.0.1/src/dl_core/utils/sweep_tracker.py +325 -0
  106. deep_learning_core-0.0.1/src/dl_core/worker.py +114 -0
  107. deep_learning_core-0.0.1/tests/conftest.py +31 -0
  108. deep_learning_core-0.0.1/tests/test_checkpoint_behavior.py +163 -0
  109. deep_learning_core-0.0.1/tests/test_checkpoint_utils.py +31 -0
  110. deep_learning_core-0.0.1/tests/test_component_scaffold.py +178 -0
  111. deep_learning_core-0.0.1/tests/test_init_experiment.py +155 -0
  112. deep_learning_core-0.0.1/tests/test_init_extensions.py +114 -0
  113. deep_learning_core-0.0.1/tests/test_local_components.py +35 -0
  114. deep_learning_core-0.0.1/tests/test_scaffold_smoke.py +236 -0
  115. 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
+ ```