Skip to content

Conversation

@vilsonrodrigues
Copy link
Contributor

Summary

This PR brings msgspec-ext to the same CI/CD maturity level as msgtrace-sdk, with:

  • ✅ Complete GitHub Actions workflows (CI, release validation, merge bot, etc)
  • ✅ Issue and PR templates for better contributor experience
  • ✅ Automated release process with security validation
  • ✅ Comprehensive documentation (CONTRIBUTING, AUTOMATION, ROADMAP)
  • ✅ Real performance benchmarks vs pydantic-settings
  • ✅ Updated API documentation (fixed from Settings to BaseSettings)

Major Changes

CI/CD Infrastructure

  • Add comprehensive GitHub Actions workflows:
    • ci.yml - Lint, format check, and tests on Python 3.10-3.13
    • validate-release.yml - Security validation for releases
    • merge-bot.yml - /merge and /update commands for PRs
    • stale.yml - Automatic stale issue/PR management
    • release-drafter.yml - Auto-generate release notes
  • Add CODEOWNERS for automatic review assignment
  • Add Dependabot for automated dependency updates
  • Add issue templates (bug report, feature request)
  • Add pull request template

Python Support

  • Remove Python 3.9 support (deprecated)
  • Support Python 3.10-3.13 only
  • Update Ruff target version to py310

Documentation

  • Fixed README API usage - Corrected from Settings to BaseSettings
  • Add real benchmark comparing msgspec-ext vs pydantic-settings:
    • Performance: msgspec-ext is 2.9x faster (0.933ms vs 2.694ms)
    • Package size: msgspec-ext is 4x smaller (0.49 MB vs 1.95 MB)
  • Add benchmark.py script for reproducible performance testing
  • Add CONTRIBUTING.md with:
    • Development workflow and best practices
    • Release process using automated scripts
    • Security features and validations
  • Add AUTOMATION.md documenting all automation workflows
  • Add ROADMAP.md for future feature planning

Scripts

  • release.sh - Automated release script with security validation
  • setup-branch-protection.sh - Configure GitHub branch protection
  • setup-labels.sh - Configure repository labels (✅ already executed)

Testing

  • Add basic test structure with tests/__init__.py
  • Add tests/test_settings.py with example test
  • Tests will run automatically in CI on all PRs

Benchmark Results

Real performance comparison (1000 iterations, Python 3.13):

Library Time per load Package Size
msgspec-ext 0.933ms 0.49 MB
pydantic-settings 2.694ms 1.95 MB

Key takeaways:

  • 2.9x faster performance
  • 4x smaller package size
  • Same level of type safety and validation

Testing

Repository labels have been created successfully ✅
CI workflows will run automatically on this PR

Checklist

  • Tests added/updated
  • Documentation updated (README, CONTRIBUTING, etc)
  • Code follows project style (Ruff)
  • Python 3.9 support removed
  • Real benchmarks added with reproducible script
  • Repository labels configured

🤖 Generated with Claude Code

## Major Changes

### CI/CD Infrastructure
- Add comprehensive GitHub Actions workflows (ci, validate-release, merge-bot, stale, release-drafter)
- Add issue templates (bug report, feature request)
- Add pull request template
- Add CODEOWNERS for automatic review assignment
- Add Dependabot for automated dependency updates
- Add release automation script with security validation
- Add branch protection setup script
- Configure repository labels (type, status, size)

### Python Support
- Remove Python 3.9 support (deprecated)
- Update to support Python 3.10-3.13 only
- Update Ruff target version to py310

### Documentation
- Update README with correct API usage (BaseSettings instead of Settings)
- Add real benchmark comparing msgspec-ext vs pydantic-settings (~3x faster)
- Add benchmark.py script for reproducible performance testing
- Add CONTRIBUTING.md with development workflow and release process
- Add AUTOMATION.md documenting all automation workflows
- Add ROADMAP.md for future feature planning

### Testing
- Add basic test structure with test_settings.py
- Add pytest configuration in pyproject.toml

### Benchmark Results
- msgspec-ext: 0.933ms per load
- pydantic-settings: 2.694ms per load (2.9x slower)
- Benchmark includes .env parsing and full type validation

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
@vilsonrodrigues vilsonrodrigues added feat New feature ci CI/CD changes labels Nov 26, 2025
- Add complete dev dependencies: packaging, pytest-benchmark, pytest-cov, ruff, twine
- Format all files with ruff (benchmark.py, src/, tests/)
- Fixes CI failures in PR msgflux#4

Dev dependencies now match msgtrace-sdk structure (except pytest-asyncio which is not needed)
- Add comprehensive ruff ignore rules for existing code patterns
- Add per-file ignores for benchmark.py (script-specific rules)
- Remove unused imports (Dict, Optional, Type, pytest)
- Fix test to use BaseSettings instead of Settings
- Format all code with ruff

All ruff checks now pass successfully.
@vilsonrodrigues
Copy link
Contributor Author

/merge

@vilsonrodrigues vilsonrodrigues merged commit 9f1fc63 into msgflux:main Nov 26, 2025
6 of 7 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

ci CI/CD changes feat New feature

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant