Metadata-Version: 2.4
Name: sparkles
Version: 0.2.1
Summary: Just utilities made by Jim Vogel
Project-URL: Homepage, https://github.com/voglster/sparkles
Project-URL: Repository, https://github.com/voglster/sparkles
Author-email: James Vogel <jim.m.vogel@gmail.com>
License: MIT
License-File: LICENSE
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Requires-Python: >=3.10
Requires-Dist: google-auth-oauthlib>=1.2.1
Requires-Dist: google-auth>=2.34.0
Requires-Dist: gspread>=6.1.4
Requires-Dist: loguru>=0.7.2
Requires-Dist: notifiers>=1.3.3
Requires-Dist: openpyxl>=3.1.5
Requires-Dist: python-dotenv>=1.0.1
Requires-Dist: pytz>=2024.1
Requires-Dist: requests>=2.32.3
Requires-Dist: starlette>=0.41.3
Requires-Dist: uvicorn>=0.32.1
Provides-Extra: dev
Requires-Dist: pytest-cov>=6.0.0; extra == 'dev'
Requires-Dist: pytest-watch>=4.2.0; extra == 'dev'
Requires-Dist: pytest>=8.3.4; extra == 'dev'
Requires-Dist: ruff>=0.8.4; extra == 'dev'
Provides-Extra: test
Requires-Dist: pytest-cov>=6.0.0; extra == 'test'
Requires-Dist: pytest>=8.3.4; extra == 'test'
Description-Content-Type: text/markdown

# Sparkles ✨

Just utilities made by Jim Vogel - commonly used Python functions to avoid rewriting.

## Installation

```bash
pip install sparkles
```

## Development

This project uses [uv](https://docs.astral.sh/uv/) for dependency management.

```bash
# Install dependencies
uv sync --all-extras

# Run tests
uv run pytest -v

# Run linter
uv run ruff check sparkles/

# Format code
uv run ruff format sparkles/
```

## CI/CD Setup

### Setting up PyPI Publishing (One-time setup)

1. **Create a PyPI API token:**
   - Go to https://pypi.org/manage/account/token/
   - Create a new project-scoped token for "sparkles"
   - Copy the token (starts with `pypi-`)

2. **Add token to GitHub Secrets:**
   - Go to your GitHub repository → Settings → Secrets and variables → Actions
   - Click "New repository secret"
   - Name: `PYPI_API_TOKEN`
   - Value: Paste your PyPI token
   - Click "Add secret"

### How to Release a New Version (Git-Ops Style)

Just push a tag with the bump type you want:

```bash
# For a patch release (0.2.0 → 0.2.1)
git tag release-patch
git push origin release-patch

# For a minor release (0.2.0 → 0.3.0)
git tag release-minor
git push origin release-minor

# For a major release (0.2.0 → 1.0.0)
git tag release-major
git push origin release-major
```

**What happens automatically:**
1. GitHub Actions detects the `release-*` tag
2. Bumps the version in code and commits it
3. Creates a proper version tag (e.g., `v0.2.1`)
4. Builds the package
5. Creates a GitHub Release with release notes
6. Publishes to PyPI

That's it! No manual builds, version edits, or uploads needed.

## Features

- Date/time utilities with timezone support
- Data parsing and transformation helpers
- Google Sheets integration
- MongoDB tools
- Slack notification helpers
- General Python utility functions

## License

MIT
