Skip to content

Latest commit

 

History

History
176 lines (125 loc) · 4.71 KB

File metadata and controls

176 lines (125 loc) · 4.71 KB

Contributing to AutoCSV Profiler Suite

This project accepts contributions from the community.

Contribution Types

Accepted contributions include:

  • Bug Reports: Report issues
  • Feature Requests: Suggest improvements
  • Code Contributions: Fix bugs, add features, improve performance
  • Documentation: Update guides, API docs, examples
  • Testing: Add tests, improve coverage

Setup for Contributors

1. Environment Setup

Required steps to run the project:

  1. Fork this repository on GitHub
  2. Clone the fork: git clone https://github.com/YOUR_USERNAME/autocsv-profiler-suite.git
  3. Set up conda environments: python bin/setup_environments.py create --parallel
  4. Install development tools:
    pip install -r requirements-dev.txt
    pre-commit install

2. Architecture Understanding

Required reading:

Code Quality Standards

Code quality tools:

  • Black for code formatting (88 character limit)
  • isort for import organization
  • MyPy for type checking
  • pytest for testing (minimum 50% coverage)

Run quality checks: pre-commit run --all-files

Development Workflow

1. Planning Work

For Bug Fixes:

  1. Check existing issues for the bug
  2. Create new issue if not tracked
  3. Identify root cause and plan solution
  4. Consider impact on all environments (main, profiling, dataprep)

For New Features:

  1. Review existing feature requests and roadmap
  2. Create feature request issue to discuss approach
  3. Get community feedback before implementation
  4. Assess impact on all profiling engines

2. Making Changes

Create branch:

git checkout main
git pull upstream main
git checkout -b feature/feature-name

Development process:

  1. Make changes in appropriate environment
  2. Write tests (unit tests required, integration tests when needed)
  3. Update documentation if changing APIs or adding features
  4. Run quality checks: pre-commit run --all-files
  5. Test changes: python bin/run_analysis.py test.csv --debug

3. Commit Work

Use conventional commit format: <type>(<scope>): <description>

Examples:

  • feat(analyzer): add statistical summary export
  • fix(dataprep): handle missing data properly
  • docs(readme): update installation instructions

Common types: feat, fix, docs, test, refactor, perf

Testing Changes

Test commands:

pytest                    # Run all tests
pytest -m "not slow"      # Skip slow tests
pytest -m unit            # Unit tests only
pytest -m integration     # Integration tests only

Test categories: Unit, Integration, Functional, Performance

Submitting Changes

1. Pull Request Process

  1. Push branch:

    git push origin feature/feature-name
  2. Open pull request on GitHub:

    • Write title using conventional commit format
    • Describe changes and reasoning
    • Link related issues ("fixes #123" or "closes #456")
  3. Review process:

    • Automated tests run first
    • Maintainers review code
    • Address feedback

2. Pre-submission Checklist

Required before submission:

  • Code follows project style
  • Tests added for changes
  • Documentation updated (if needed)
  • All tests pass locally
  • Pre-commit hooks pass
  • No conflicts with main branch
  • Commit messages follow format
  • PR description explains changes

3. Review Process

Steps after submission:

  1. Automated checks run (tests, linting, security scans)
  2. Code review by maintainers examining:
    • Code quality and style
    • Test coverage
    • Documentation
    • Architecture compatibility
    • Security implications
  3. Discussion if changes needed
  4. Merge when approved

Reporting Issues

Use GitHub issue templates:

Getting Help

Documentation Resources

Communication Channels

  • GitHub Issues: Bug reports and feature requests
  • GitHub Discussions: General questions and discussion
  • Pull Request Reviews: Code feedback and learning

Project Maintainer

Maintained by @dhaneshbb.


Questions can be submitted through GitHub Discussions or by contacting maintainers directly.