Metadata-Version: 2.4
Name: dvc-custom-wrapper
Version: 0.1.0
Summary: Enhanced DVC with advanced MLOps commands and features.
Author-email: blueeye-040 <chandrumurugesan6@gmail.com>
License:                                  Apache License
                                   Version 2.0, January 2004
                                http://www.apache.org/licenses/
        
        Copyright 2017-2021 Iterative, Inc.
        Copyright 2025 blueeye-040 (modifications)
        
        Licensed under the Apache License, Version 2.0 (the "License");
        you may not use this file except in compliance with the License.
        You may obtain a copy of the License at
        
            http://www.apache.org/licenses/LICENSE-2.0
        
        Unless required by applicable law or agreed to in writing, software
        distributed under the License is distributed on an "AS IS" BASIS,
        WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
        See the License for the specific language governing permissions and
        limitations under the License.
        
        ---
        
        This project is a derivative work based on DVC (https://dvc.org/),
        originally developed by Iterative, Inc. It includes significant modifications and enhancements by blueeye-040.
        
        All modified files contain prominent notices of changes.
        
Project-URL: Homepage, https://github.com/blueeye-040/dvc-enhanced-lib
Project-URL: Repository, https://github.com/blueeye-040/dvc-enhanced-lib
Requires-Python: >=3.7
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: aiohappyeyeballs==2.6.1
Requires-Dist: aiohttp==3.12.15
Requires-Dist: aiohttp-retry==2.9.1
Requires-Dist: aiosignal==1.4.0
Requires-Dist: amqp==5.3.1
Requires-Dist: annotated-types==0.7.0
Requires-Dist: antlr4-python3-runtime==4.9.3
Requires-Dist: appdirs==1.4.4
Requires-Dist: async-timeout==5.0.1
Requires-Dist: asyncssh==2.21.0
Requires-Dist: atpublic==6.0.1
Requires-Dist: attrs==25.3.0
Requires-Dist: billiard==4.2.1
Requires-Dist: celery==5.5.3
Requires-Dist: certifi==2025.8.3
Requires-Dist: cffi==2.0.0
Requires-Dist: charset-normalizer==3.4.3
Requires-Dist: click==8.1.8
Requires-Dist: click-didyoumean==0.3.1
Requires-Dist: click-plugins==1.1.1.2
Requires-Dist: click-repl==0.3.0
Requires-Dist: colorama==0.4.6
Requires-Dist: configobj==5.0.9
Requires-Dist: cryptography==45.0.7
Requires-Dist: dictdiffer==0.9.0
Requires-Dist: diskcache==5.6.3
Requires-Dist: distro==1.9.0
Requires-Dist: dpath==2.2.0
Requires-Dist: dulwich==0.24.1
Requires-Dist: dvc-data==3.16.12
Requires-Dist: dvc-http==2.32.0
Requires-Dist: dvc-objects==5.1.1
Requires-Dist: dvc-render==1.0.2
Requires-Dist: dvc-studio-client==0.22.0
Requires-Dist: dvc-task==0.40.2
Requires-Dist: entrypoints==0.4
Requires-Dist: filelock==3.19.1
Requires-Dist: flatten-dict==0.4.2
Requires-Dist: flufl.lock==8.2.0
Requires-Dist: frozenlist==1.7.0
Requires-Dist: fsspec==2025.9.0
Requires-Dist: funcy==2.0
Requires-Dist: gitdb==4.0.12
Requires-Dist: GitPython==3.1.45
Requires-Dist: grandalf==0.8
Requires-Dist: gto==1.8.0
Requires-Dist: hydra-core==1.3.2
Requires-Dist: idna==3.10
Requires-Dist: iterative-telemetry==0.0.10
Requires-Dist: kombu==5.5.4
Requires-Dist: markdown-it-py==3.0.0
Requires-Dist: mdurl==0.1.2
Requires-Dist: multidict==6.6.4
Requires-Dist: networkx==3.2.1
Requires-Dist: omegaconf==2.3.0
Requires-Dist: orjson==3.11.3
Requires-Dist: packaging==25.0
Requires-Dist: pathspec==0.12.1
Requires-Dist: platformdirs==4.4.0
Requires-Dist: prompt_toolkit==3.0.52
Requires-Dist: propcache==0.3.2
Requires-Dist: psutil==7.0.0
Requires-Dist: pycparser==2.23
Requires-Dist: pydantic==2.11.9
Requires-Dist: pydantic_core==2.33.2
Requires-Dist: pydot==4.0.1
Requires-Dist: pygit2==1.15.1
Requires-Dist: Pygments==2.19.2
Requires-Dist: pygtrie==2.5.0
Requires-Dist: pyparsing==3.2.4
Requires-Dist: python-dateutil==2.9.0.post0
Requires-Dist: PyYAML==6.0.2
Requires-Dist: requests==2.32.5
Requires-Dist: rich==14.1.0
Requires-Dist: ruamel.yaml==0.18.15
Requires-Dist: ruamel.yaml.clib==0.2.12
Requires-Dist: scmrepo==3.5.2
Requires-Dist: semver==3.0.4
Requires-Dist: shellingham==1.5.4
Requires-Dist: shortuuid==1.0.13
Requires-Dist: shtab==1.7.2
Requires-Dist: six==1.17.0
Requires-Dist: smmap==5.0.2
Requires-Dist: sqltrie==0.11.2
Requires-Dist: tabulate==0.9.0
Requires-Dist: tomlkit==0.13.3
Requires-Dist: tqdm==4.67.1
Requires-Dist: typer==0.17.4
Requires-Dist: typing-inspection==0.4.1
Requires-Dist: typing_extensions==4.15.0
Requires-Dist: tzdata==2025.2
Requires-Dist: urllib3==2.5.0
Requires-Dist: vine==5.1.0
Requires-Dist: voluptuous==0.15.2
Requires-Dist: wcwidth==0.2.13
Requires-Dist: yarl==1.20.1
Requires-Dist: zc.lockfile==3.0.post1
Dynamic: license-file

# DVC MLOps Enhanced Commands Documentation

This project extends DVC with wrapper functions for experiment tracking, dataset management, metrics comparison, and tagging, making DVC more like Git for ML workflows.

---

## Key Enhancements Overview

- **Dual push history system:**
	- Internal log: `.dvc/push_history.json` (versioned, changes with checkout)
	- External/global log: configurable (default: `dvc_push_history_global.json` in project root), append-only, never changes with checkout
	- Logs are strictly separated: no syncing, deduplication, or cross-reading between them

- **Configurable global log path:**
	- The global log is now in the project directory (`dvc_push_history_global.json`) for better portability.

- **Universal `--internal` flag:**
	- All major commands (`logs`, `exp-list`, `dataset-list`, `metrics-diff`) accept `--internal` to switch between global and internal logs

- **Tag filtering and visibility:**
	- Use `--tag TAG [TAG ...]` with `dvc logs` to filter by one or more tags
	- When `--tag` is used, outputs only commit hashes and matching tag names (one per line), suppressing the table
	- Tags are always shown in log summaries


- **Strict log separation:**
	- Internal and external logs are never merged, deduplicated, or cross-read
	- Each log is updated independently on push

---

### 1. `dvc logs`
Show the history of DVC pushes, including commit info, artifacts, experiment name, metrics, and tags.

**Usage:**
```sh
dvc logs [-n N] [--dataset DATASET] [--show-all] [--internal] [--tag TAG [TAG ...]]
```
- `-n N`, `--number N`: Show the last N pushes (default: all)
- `--dataset DATASET`: Filter logs by dataset name
- `--show-all`: Show all available information (wider table)
- `--internal`: Show only the internal (repo) push history for the current commit/branch
- `--tag TAG [TAG ...]`: Filter logs by one or more tag names; outputs only commit hashes and tags (e.g., `commit_hash tag_name`)


> **Tip:** To filter experiments by tag, use `dvc logs --tag TAGNAME` to get commit hashes for that tag.

---

### 2. `dvc exp-list`
List all experiments and their metrics from push history.

**Usage:**
```sh
dvc exp-list [--internal]
```
- Lists experiments with metrics from the push history.
- Use `--internal` to show only the internal (repo) log.


---

### 3. `dvc tag`
Tag a specific commit in the push history.

**Usage:**
```sh
dvc tag <tag-name> <commit-hash>
```
- Example: `dvc tag v1.0 1234abc`
- Tags can be viewed in all `dvc logs` output and filtered with `--tag`.

---

### 4. `dvc metrics-diff`
Show the difference in metrics between two commits.

**Usage:**
```sh
dvc metrics-diff <commit1> <commit2> [--internal]
```
- Example: `dvc metrics-diff 1234abc 5678def`
- Shows the value of each metric in both commits.
- Use `--internal` to show only the internal (repo) log.
> **Tip:** To compare metrics for a specific tag, first run `dvc logs --tag TAGNAME` to get the commit hash, then use that hash in `dvc metrics-diff`.

---

### 5. `dvc dataset-list`
List all datasets tracked in the push history.

**Usage:**
```sh
dvc dataset-list [--internal]
```
- Lists all unique dataset names/paths found in the push history.
- Use `--internal` to show only the internal (repo) log.

---

## Example Workflow

```sh
# Add and track a dataset
dvc add data/sample.txt

# Commit and push as usual (your custom push logic will record extra info)
git add data/sample.txt.dvc .gitignore
git commit -m "Add sample dataset"
dvc push

# Tag a commit
dvc tag v1.0 <commit-hash>

# List experiments
dvc exp-list

# List datasets
dvc dataset-list

# Show metrics difference between two commits
dvc metrics-diff <commit1> <commit2>

# Show push logs with all details
dvc logs --show-all


# Filter logs by multiple tags
dvc logs --tag v1.0 v2.0
```

---

## Dependencies
- `rich`: For table display (optional, falls back to plain text)

Install with:
```sh
pip install rich
```

---

## Manual Global Log Path Configuration

The global log is now stored in the project directory as `dvc_push_history_global.json` for better portability. If you need to change it, edit the code in `dvc/repo/logs.py`.

---

## Notes
- Pushes are now recorded in two places:
	- `.dvc/push_history.json` (internal, versioned, changes with checkout)
	- `dvc_push_history_global.json` (global, in project root, append-only)
- By default, all commands use the global file for a complete history, but you can use `--internal` to see only the current repo state.
- All commands work on the push history and are designed for MLOps workflows.
- Internal and external logs are strictly separated and never merged or deduplicated.
- Ignored files (per `.dvcignore`) are filtered out from push history to avoid unwanted entries.

---

For help or issues, visit [https://dvc.org/support](https://dvc.org/support)
