Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .devcontainer/devcontainer.json
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,7 @@
"minherz.copyright-inserter",
"redhat.vscode-yaml",
"rodolphebarbanneau.python-docstring-highlighter",
"saoudrizwan.claude-dev",
"skellock.just",
"streetsidesoftware.code-spell-checker",
"tamasfe.even-better-toml",
Expand Down
49 changes: 49 additions & 0 deletions .github/ISSUE_TEMPLATE/bug_report.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
name: 🐛 Bug Report
description: Report bugs and errors
labels: ['bug', 'needs-triage']
body:
- type: input
id: version
attributes:
label: Package version
description: Run `python -c "import zero_spinner; print(zero_spinner.__version__)"`
placeholder: 'e.g. 0.1.0'
validations:
required: true
- type: input
id: environment
attributes:
label: Environment
placeholder: 'OS: macOS 15, Python: 3.12.2, uv: 0.4.0'
validations:
required: true
- type: textarea
id: steps
attributes:
label: Steps to reproduce
description: How do we trigger this bug?
placeholder: |
1. First step...
2. Second step...
3. ...
validations:
required: true
- type: textarea
id: expected
attributes:
label: Expected behavior
description: What should happen?
validations:
required: true
- type: textarea
id: actual
attributes:
label: Actual behavior
description: What actually happens?
validations:
required: true
- type: textarea
id: logs
attributes:
label: Error logs / traceback
render: shell
16 changes: 16 additions & 0 deletions .github/ISSUE_TEMPLATE/config.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
blank_issues_enabled: false
contact_links:
- name: Questions ❓
url: https://github.com/matteozambon89/python-zero-spinner/discussions
about: Ask questions or share ideas in Discussions
issue_templates:
- name: 🐛 Bug Report
description: File a bug or unexpected behavior
title: 🐛 [BUG]
labels: ['bug', 'needs-triage']
body: ./ISSUE_TEMPLATE/bug_report.yml
- name: 🚀 Feature Request
description: Suggest a new feature or enhancement
title: 🚀 [FEATURE]
labels: ['enhancement', 'needs-triage']
body: ./ISSUE_TEMPLATE/feature_request.yml
37 changes: 37 additions & 0 deletions .github/ISSUE_TEMPLATE/feature_request.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
name: 🚀 Feature Request
description: Suggest an idea for this project
labels: ['enhancement', 'needs-triage']
body:
- type: input
id: version
attributes:
label: Package version
description: Run `python -c "import zero_spinner; print(zero_spinner.__version__)"`
placeholder: 'e.g. 0.1.0'
validations:
required: true
- type: textarea
id: problem
attributes:
label: Is your feature request related to a problem?
description: Please describe the problem motivating this feature.
placeholder: "I'd like to do X, but currently I have to Y..."
validations:
required: true
- type: textarea
id: solution
attributes:
label: Describe the solution
description: What would you like to happen? Any design docs or specifications?
placeholder: 'Add a --spinner-type CLI flag that...'
- type: textarea
id: alternatives
attributes:
label: Alternatives considered
description: What alternatives have you considered?
placeholder: 'Could use spinner package, but want zero deps'
- type: textarea
id: context
attributes:
label: Additional context
description: Use case, benchmarks, screenshots, etc.
21 changes: 21 additions & 0 deletions .github/pull_request_template.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
## Changes

- Describe what this PR does (fix #X, add Y)

## Related Issue

Closes #X (if applicable)

## Testing

- [ ] Added/changed tests pass locally
- [ ] `uv run pytest`
- [ ] Linting: `uv run ruff check .`

## Checklist

- [ ] Code follows PEP 8 (ruff enforces)
- [ ] Docs updated if needed
- [ ] Version bumped in pyproject.toml if breaking

**Before merging**: Rebase onto main if needed.
5 changes: 4 additions & 1 deletion .github/workflows/tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,13 +5,16 @@ on:
pull_request:
branches:
- main
push:
branches:
- main

jobs:
tests:
runs-on: ubuntu-latest
strategy:
matrix:
python-version: [3.12, 3.13, 3.14]
python-version: [3.11, 3.12, 3.13, 3.14]

steps:
- name: Checkout code
Expand Down
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,9 @@ wheels/
# Pytest
.pytest_cache

# Ruff
.ruff_cache

# Coverage.py
.coverage
htmlcov
19 changes: 19 additions & 0 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
# Contributing to python-zero-spinner

Thanks for interest! This project uses uv for packaging and follows modern Python standards.

## Quick Start

1. Fork and clone
2. `uv sync --all-groups` for dev env
3. Use issue templates for bugs/features
4. Submit PRs from feature branches

## Development

- Tests: `uv run pytest`
- Lint: `uv run ruff check . --fix`
- Type Checking: `uv run ty check`
- Build: `uv build`

See pyproject.toml for classifiers, version, and license details.
2 changes: 2 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@

A minimal, dependency-free spinner for Python CLI applications with rich customization options.

[![Tests](https://github.com/matteozambon89/python-zero-spinner/actions/workflows/tests.yml/badge.svg)](https://github.com/matteozambon89/python-zero-spinner/actions/workflows/tests.yml)
[![PyPI Downloads](https://img.shields.io/pypi/dm/zero-spinner.svg)](https://pypi.org/project/zero-spinner/)
[![PyPI version](https://badge.fury.io/py/zero-spinner.svg)](https://badge.fury.io/py/zero-spinner)
[![Python Version](https://img.shields.io/pypi/pyversions/zero-spinner)](https://pypi.org/project/zero-spinner/)
[![License](https://img.shields.io/pypi/l/zero-spinner)](LICENSE)
Expand Down
23 changes: 17 additions & 6 deletions pyproject.toml
Original file line number Diff line number Diff line change
@@ -1,9 +1,20 @@
[project]
name = "zero-spinner"
version = "0.1.0"
version = "0.1.1"
description = "A zero dependency spinner"
readme = "README.md"
requires-python = ">=3.12, <4"
requires-python = ">=3.11, <4"
license-files = ["LICENSE"]
classifiers = [
"Programming Language :: Python",
"Programming Language :: Python :: 3",
"Programming Language :: Python :: 3.11",
"Programming Language :: Python :: 3.12",
"Programming Language :: Python :: 3.13",
"Programming Language :: Python :: 3.14",
"Development Status :: 4 - Beta",
"Intended Audience :: Developers",
]
dependencies = []

[dependency-groups]
Expand All @@ -30,10 +41,10 @@ include = ["yeeti*"]
exclude = ["yeeti.examples*"]

[project.urls]
Homepage = "https://github.com/matteozambon89/zero-spinner"
Changelog = "https://github.com/matteozambon89/zero-spinner/releases"
Issues = "https://github.com/matteozambon89/zero-spinner/issues"
CI = "https://github.com/matteozambon89/zero-spinner/actions"
Homepage = "https://github.com/matteozambon89/python-zero-spinner"
Changelog = "https://github.com/matteozambon89/python-zero-spinner/releases"
Issues = "https://github.com/matteozambon89/python-zero-spinner/issues"
CI = "https://github.com/matteozambon89/python-zero-spinner/actions"

[tool.ruff]
line-length = 120
Expand Down
10 changes: 10 additions & 0 deletions src/yeeti/zero_spinner/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,3 +2,13 @@
from .main import Spinner, spinner

__all__ = ['Spinner', 'spinner']

__version__ = '0.0.0' # Placeholder

try:
from importlib.metadata import version

__version__ = version(__name__)
except ImportError:
# Fallback for direct imports during dev
pass
Loading