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
68 changes: 68 additions & 0 deletions .github/workflows/tests.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,68 @@
name: Tests

on:
push:
branches: [main, 001-modular-refactor]
pull_request:
branches: [main]

jobs:
test:
runs-on: ubuntu-latest
strategy:
matrix:
python-version: ['3.9', '3.10', '3.11', '3.12']

steps:
- uses: actions/checkout@v4

- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}

- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install -r requirements-dev.txt
pip install -r requirements.txt

- name: Run linter
run: |
ruff check src/github_analyzer/

- name: Run tests
run: |
pytest tests/ -v --tb=short

- name: Run tests with coverage
run: |
pytest tests/ --cov=src/github_analyzer --cov-report=xml --cov-report=term-missing

- name: Upload coverage to Codecov
uses: codecov/codecov-action@v4
if: matrix.python-version == '3.11'
with:
files: ./coverage.xml
fail_ci_if_error: false

test-stdlib-only:
name: Test without requests (stdlib only)
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v4

- name: Set up Python 3.11
uses: actions/setup-python@v5
with:
python-version: '3.11'

- name: Install test dependencies only
run: |
python -m pip install --upgrade pip
pip install pytest pytest-cov

- name: Run tests without requests
run: |
pytest tests/ -v --tb=short
55 changes: 55 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1 +1,56 @@
# OS files
.DS_Store
Thumbs.db

# Python
__pycache__/
*.py[cod]
*$py.class
*.so
.Python
build/
develop-eggs/
dist/
downloads/
eggs/
.eggs/
lib/
lib64/
parts/
sdist/
var/
wheels/
*.egg-info/
.installed.cfg
*.egg

# Virtual environments
.venv/
venv/
ENV/
env/

# Testing
.pytest_cache/
.coverage
htmlcov/
.tox/
.nox/
coverage.xml
*.cover
*.py,cover

# IDE
.idea/
.vscode/
*.swp
*.swo
*~

# Environment
.env
.env.local
*.env

# Project specific
github_export/*.csv
17 changes: 7 additions & 10 deletions .specify/memory/constitution.md
Original file line number Diff line number Diff line change
@@ -1,14 +1,11 @@
<!--
SYNC IMPACT REPORT
==================
Version change: N/A → 1.0.0 (initial ratification)
Modified principles: N/A (initial creation)
Added sections:
- Core Principles (5 principles)
- Technical Standards
- Development Workflow
- Governance
Removed sections: N/A
Version change: 1.0.0 → 1.0.1 (patch: clarification)
Modified principles:
- I. Modular Architecture: Added `core/` to required modules list
Added sections: None
Removed sections: None
Templates requiring updates:
- .specify/templates/plan-template.md ✅ (no changes needed - compatible)
- .specify/templates/spec-template.md ✅ (no changes needed - compatible)
Expand All @@ -24,7 +21,7 @@ Follow-up TODOs: None

Every feature MUST be implemented as a separate, independently testable module.

- The codebase MUST be organized into distinct modules: `api/`, `analyzers/`, `exporters/`, `cli/`, `config/`
- The codebase MUST be organized into distinct modules: `api/`, `analyzers/`, `exporters/`, `cli/`, `config/`, `core/`
- Each module MUST have a single responsibility and clear boundaries
- Inter-module communication MUST use well-defined interfaces (abstract base classes or protocols)
- No module may directly access another module's internal state
Expand Down Expand Up @@ -162,4 +159,4 @@ This constitution defines non-negotiable standards for the GitHub Analyzer proje
- Technical debt from violations MUST have remediation timeline
- Constitution takes precedence over convenience

**Version**: 1.0.0 | **Ratified**: 2025-11-28 | **Last Amended**: 2025-11-28
**Version**: 1.0.1 | **Ratified**: 2025-11-28 | **Last Amended**: 2025-11-28
41 changes: 41 additions & 0 deletions CLAUDE.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
# github_analyzer Development Guidelines

Auto-generated from all feature plans. Last updated: 2025-11-28

## Active Technologies

- Python 3.9+ (as per constitution, leveraging type hints) + Standard library only (urllib, json, csv, os, re); optional: requests (001-modular-refactor)

## Project Structure

```text
src/
tests/
```

## Commands

```bash
# Run tests
pytest tests/ -v

# Run tests with coverage
pytest --cov=src/github_analyzer --cov-report=term-missing

# Run linter
ruff check src/github_analyzer/

# Run the analyzer
python github_analyzer.py --days 7
```

## Code Style

Python 3.9+ (as per constitution, leveraging type hints): Follow standard conventions

## Recent Changes

- 001-modular-refactor: Added Python 3.9+ (as per constitution, leveraging type hints) + Standard library only (urllib, json, csv, os, re); optional: requests

<!-- MANUAL ADDITIONS START -->
<!-- MANUAL ADDITIONS END -->
Loading