Metadata-Version: 2.4
Name: cc-costtrack
Version: 0.0.2
Summary: Cost tracking hook for ClaudeCode, to run at end of each session
Author: j
License-Expression: MIT
Project-URL: Homepage, https://github.com/jalansari/cc-costtrack
Project-URL: Issues, https://github.com/jalansari/cc-costtrack/issues
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.12
Classifier: Environment :: Console
Classifier: Operating System :: OS Independent
Requires-Python: >=3.12
Description-Content-Type: text/markdown
License-File: LICENSE
Provides-Extra: test
Requires-Dist: pytest==9.0.3; extra == "test"
Requires-Dist: pytest-cov==7.1.0; extra == "test"
Requires-Dist: black==26.3.1; extra == "test"
Requires-Dist: flake8==7.3.0; extra == "test"
Requires-Dist: isort==8.0.1; extra == "test"
Provides-Extra: package
Requires-Dist: build==1.4.3; extra == "package"
Provides-Extra: publish
Requires-Dist: twine==6.2.0; extra == "publish"
Dynamic: license-file

# Claude Code Session End Hook for Cost Tracking

- [Claude Code Session End Hook for Cost Tracking](#claude-code-session-end-hook-for-cost-tracking)
  - [Introduction](#introduction)
  - [Installation](#installation)
    - [Configuration](#configuration)
    - [Upgrade](#upgrade)
  - [Development](#development)
    - [Testing](#testing)
    - [Build and publish](#build-and-publish)
      - [Configure Publishing to Pypi](#configure-publishing-to-pypi)
      - [Publishing to Test Pypi](#publishing-to-test-pypi)
      - [Publishing to Pypi](#publishing-to-pypi)

## Introduction

Claude Code hook that should run at the end of sessions.  The hook will log cost
and usage in a CSV file, in `~/.claude` folder.

## Installation

```bash
pip install cc-costtrack
```

On newer Linux systems, install with:

```bash
pip3 install --break-system-packages cc-costtrack
```


### Configuration

Add to `~/.claude/settings.json`:

```json
{
  "hooks": {
    "SessionEnd": [
      {
        "matcher": "",
        "hooks": [
          {
            "type": "command",
            "command": "cc-costtrack"
          }
        ]
      }
    ]
  }
}
```

### Upgrade

Upgrade with pip regularly:

```bash
pip install cc-costtrack -U
```

On newer Linux systems, install with:

```bash
pip3 install --break-system-packages cc-costtrack -U
```

## Development

Set up a virtual environment:

```bash
python3 -m venv .venv
```

Activate the virtual environment before running any of the steps below:

```bash
source .venv/bin/activate
```

### Testing

```bash
pip install -e ".[test]"
pytest
```

### Build and publish

Build the distribution:

```bash
pip install -e ".[package]"
python -m build
```

This creates `dist/` with `.tar.gz` and `.whl` files.

#### Configure Publishing to Pypi

Configure PyPI credentials in `~/.pypirc`:

```ini
[distutils]
index-servers =
    pypi
    testpypi

[pypi]
username = __token__
password = pypi-<your-api-token>

[testpypi]
repository = https://test.pypi.org/legacy/
username = __token__
password = pypi-<your-test-api-token>
```

API tokens can be created at:

- PyPI: https://pypi.org/manage/account/token/
- TestPyPI: https://test.pypi.org/manage/account/token/

Alternatively, set credentials via environment variables instead of `~/.pypirc`:

```bash
export TWINE_USERNAME=__token__
export TWINE_PASSWORD=pypi-<your-api-token>
```

To target TestPyPI, override the repository URL:

```bash
export TWINE_REPOSITORY_URL=https://test.pypi.org/legacy/
```

#### Publishing to Test Pypi

To publish to TestPyPI first:

```bash
pip install -e ".[package,publish]"

# Using ini file:
twine upload --repository testpypi dist/*

# Or, with environment variables:
export TWINE_REPOSITORY_URL=https://test.pypi.org/legacy/
twine upload dist/*
```

#### Publishing to Pypi

Publish to PyPI:

```bash
pip install -e ".[publish]"
twine upload dist/*
```
