Skip to content

Commit de669b0

Browse files
Initial commit: Pyreload v1.0.0 with 99% test coverage
- Add core file monitoring with polling support for Docker/Vagrant - Implement CLI with watch patterns, ignore patterns, and config file support - Add comprehensive test suite with 57 tests and 99% coverage - Include WARP.md for AI development assistance - Add documentation site with MkDocs - Add technology badges to README
0 parents  commit de669b0

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

54 files changed

+11728
-0
lines changed

.github/workflows/docs.yml

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
name: Deploy Documentation
2+
3+
on:
4+
push:
5+
branches: [ main ]
6+
paths:
7+
- 'docs/**'
8+
- '.github/workflows/docs.yml'
9+
workflow_dispatch:
10+
11+
permissions:
12+
contents: write
13+
14+
jobs:
15+
deploy:
16+
runs-on: ubuntu-latest
17+
steps:
18+
- uses: actions/checkout@v4
19+
with:
20+
fetch-depth: 0
21+
22+
- name: Set up Python
23+
uses: actions/setup-python@v5
24+
with:
25+
python-version: '3.11'
26+
27+
- name: Install dependencies
28+
run: |
29+
python -m pip install --upgrade pip
30+
pip install mkdocs-material
31+
32+
- name: Configure Git
33+
run: |
34+
git config user.name "GitHub Actions"
35+
git config user.email "actions@github.com"
36+
37+
- name: Deploy to GitHub Pages
38+
run: |
39+
cd docs
40+
mkdocs gh-deploy --force --config-file mkdocs.yml

.github/workflows/publish.yml

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
name: Publish to PyPI
2+
3+
on:
4+
release:
5+
types: [published]
6+
workflow_dispatch:
7+
inputs:
8+
test_pypi:
9+
description: 'Publish to Test PyPI instead of PyPI'
10+
required: false
11+
default: false
12+
type: boolean
13+
14+
jobs:
15+
build:
16+
runs-on: ubuntu-latest
17+
steps:
18+
- uses: actions/checkout@v4
19+
20+
- name: Set up Python
21+
uses: actions/setup-python@v5
22+
with:
23+
python-version: '3.11'
24+
25+
- name: Install build dependencies
26+
run: |
27+
python -m pip install --upgrade pip
28+
pip install build twine
29+
30+
- name: Build package
31+
run: python -m build
32+
33+
- name: Check package
34+
run: twine check dist/*
35+
36+
- name: Publish to Test PyPI
37+
if: github.event.inputs.test_pypi == 'true'
38+
env:
39+
TWINE_USERNAME: __token__
40+
TWINE_PASSWORD: ${{ secrets.TEST_PYPI_API_TOKEN }}
41+
run: |
42+
twine upload --repository testpypi dist/*
43+
44+
- name: Publish to PyPI
45+
if: github.event_name == 'release'
46+
env:
47+
TWINE_USERNAME: __token__
48+
TWINE_PASSWORD: ${{ secrets.PYPI_API_TOKEN }}
49+
run: |
50+
twine upload dist/*

.github/workflows/tests.yml

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
name: Tests
2+
3+
on:
4+
push:
5+
branches: [ main, develop ]
6+
pull_request:
7+
branches: [ main, develop ]
8+
9+
jobs:
10+
test:
11+
runs-on: ${{ matrix.os }}
12+
strategy:
13+
fail-fast: false
14+
matrix:
15+
os: [ubuntu-latest, macos-latest, windows-latest]
16+
python-version: ['3.8', '3.9', '3.10', '3.11', '3.12']
17+
18+
steps:
19+
- uses: actions/checkout@v4
20+
21+
- name: Set up Python ${{ matrix.python-version }}
22+
uses: actions/setup-python@v5
23+
with:
24+
python-version: ${{ matrix.python-version }}
25+
26+
- name: Install dependencies
27+
run: |
28+
python -m pip install --upgrade pip
29+
pip install -e ".[dev]"
30+
31+
- name: Lint with ruff
32+
run: |
33+
ruff check pyreload tests
34+
35+
- name: Format check with black
36+
run: |
37+
black --check pyreload tests
38+
39+
- name: Run tests with pytest
40+
run: |
41+
pytest --cov=pyreload --cov-report=xml --cov-report=term-missing
42+
43+
- name: Upload coverage to Codecov
44+
uses: codecov/codecov-action@v4
45+
if: matrix.os == 'ubuntu-latest' && matrix.python-version == '3.11'
46+
with:
47+
file: ./coverage.xml
48+
fail_ci_if_error: false

.gitignore

Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
# Python
2+
__pycache__/
3+
*.py[cod]
4+
*$py.class
5+
*.so
6+
.Python
7+
build/
8+
develop-eggs/
9+
dist/
10+
downloads/
11+
eggs/
12+
.eggs/
13+
lib/
14+
lib64/
15+
parts/
16+
sdist/
17+
var/
18+
wheels/
19+
pip-wheel-metadata/
20+
share/python-wheels/
21+
*.egg-info/
22+
.installed.cfg
23+
*.egg
24+
MANIFEST
25+
26+
# Virtual environments
27+
venv/
28+
ENV/
29+
env/
30+
.venv/
31+
32+
# Testing
33+
.pytest_cache/
34+
.coverage
35+
htmlcov/
36+
.tox/
37+
.nox/
38+
39+
# IDEs
40+
.vscode/
41+
.idea/
42+
*.swp
43+
*.swo
44+
*~
45+
.DS_Store
46+
47+
# Pyreload config (user-specific)
48+
.pyreloadrc
49+
pyreload.json
50+
51+
# Documentation build
52+
docs/site/
53+
docs/.venv/
54+
55+
# Website
56+
website/node_modules/
57+
website/.next/
58+
website/out/
59+
website/build/
60+
website/.vercel/
61+
website/dist/

.pyreloadrc.example

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
{
2+
"watch": ["*.py", "config/*.yaml"],
3+
"ignore": ["*__pycache__*", "*.log", ".git/*", "*.pyc"],
4+
"debug": false,
5+
"clean": false,
6+
"exec": false,
7+
"polling": false
8+
}

CHANGELOG.md

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
# Changelog
2+
3+
All notable changes to this project will be documented in this file.
4+
5+
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
6+
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7+
8+
## [1.0.0] - 2026-01-10
9+
10+
### Added
11+
- Initial release of Pyreload
12+
- Automatic file watching and process restarting
13+
- Polling mode support for mounted filesystems (Docker, Vagrant, CIFS/NFS)
14+
- Flexible watch and ignore patterns with glob support
15+
- Configuration file support (`.pyreloadrc` and `pyreload.json`)
16+
- Clean mode for quiet operation
17+
- Exec mode for running shell commands
18+
- Debug mode for verbose file change logging
19+
- Interactive commands (`rs` for manual restart, `stop` to exit)
20+
- Comprehensive test suite with pytest
21+
- Full documentation with MkDocs
22+
- Marketing website with Next.js
23+
24+
### Features
25+
- `--polling` / `-p` flag for polling-based file watching
26+
- `--watch` / `-w` flag for specifying watch patterns
27+
- `--ignore` / `-i` flag for specifying ignore patterns
28+
- `--debug` / `-d` flag for debug logging
29+
- `--clean` / `-c` flag for clean mode
30+
- `--exec` / `-x` flag for executing shell commands
31+
- Config file support with CLI precedence
32+
- Cross-platform support (Linux, macOS, Windows)
33+
- Python 3.8+ support
34+
35+
### Documentation
36+
- Complete user guide
37+
- Docker and Vagrant usage examples
38+
- Kubernetes operator development workflow
39+
- API reference
40+
- Troubleshooting guide
41+
42+
[1.0.0]: https://github.com/dotbrains/pyreload/releases/tag/v1.0.0

0 commit comments

Comments
 (0)