# Contributing to Code Chunker Thank you for your interest in contributing to Code Chunker! This document provides guidelines and information for contributing to this project. ## Table of Contents - [Code of Conduct](#code-of-conduct) - [Getting Started](#getting-started) - [How to Contribute](#how-to-contribute) - [Development Setup](#development-setup) - [Pull Request Process](#pull-request-process) - [Testing Guidelines](#testing-guidelines) - [Style Guidelines](#style-guidelines) ## Code of Conduct By participating in this project, you agree to maintain a respectful and inclusive environment. We expect all contributors to: - Use welcoming and inclusive language - Be respectful of differing viewpoints and experiences - Gracefully accept constructive criticism - Focus on what is best for the community ## Getting Started 1. Fork the repository 2. Clone your fork locally 3. Create a new branch for your feature or bugfix 4. Make your changes following our guidelines 5. Push to your fork 6. Submit a Pull Request ## How to Contribute There are several ways to contribute to Code Chunker: 1. **Bug Reports**: Submit detailed bug reports using the GitHub issue tracker 2. **Feature Requests**: Propose new features through GitHub issues 3. **Code Contributions**: Submit Pull Requests with improvements or new features 4. **Documentation**: Help improve or translate documentation 5. **Testing**: Add or improve test coverage ## Pull Request Process 1. Update the README.md with details of changes if applicable 2. Add appropriate unit tests for any new functionality 3. Ensure all tests pass by running: ```bash python -m unittest discover ``` 4. Update documentation as needed 5. Ensure your code follows our style guidelines 6. Create a Pull Request with a clear title and description ## Testing Guidelines - Write unit tests for all new functionality - Maintain or improve code coverage - Follow the existing test structure in `test_code_chunker.py` - Test multiple file types and edge cases - Include both positive and negative test cases ### Test Examples - Test basic functionality with simple code files - Test edge cases (empty files, large files) - Test different programming languages (Python, JavaScript, CSS, etc.) - Test with various token limits - Test error handling scenarios ## Style Guidelines ### Python Code Style - Follow PEP 8 guidelines - Use type hints for function parameters and return values - Keep functions focused and single-purpose - Write clear docstrings for classes and functions - Use meaningful variable and function names ### Code Organization - Keep related functionality together - Maintain clear separation of concerns - Follow the existing project structure - Use appropriate design patterns ## Language Support When adding support for new programming languages: 1. Update the `language_extension_map` in `CodeParser.py` 2. Add appropriate node types in `_get_node_types_of_interest` 3. Include test files for the new language 4. Update documentation accordingly ## Documentation - Keep README.md up to date - Document all new features - Include docstrings for new functions and classes - Add comments for complex logic - Update API documentation if applicable ## Questions or Need Help? Feel free to: - Open an issue for general questions - Join our discussions in GitHub Discussions - Reach out to maintainers for guidance ## License By contributing to Code Chunker, you agree that your contributions will be licensed under the same license as the main project. Thank you for contributing to Code Chunker!