Thank you for considering contributing to CVIP! We welcome contributions from everyone.
- Fork the repository and clone it to your local machine.
- Create a new branch for your contribution:
git checkout -b feature/new-feature
. - Make your changes and ensure they adhere to the project's coding standards (check
Coding standarts
section below) - Test your changes locally to ensure they work as expected.
- Commit your changes:
git commit -m "Add new feature"
- Push to your forked repository:
git push origin feature/new-feature
- Open a pull request on the production repository's
dev
branch.
If you encounter a bug or issue with the project, please follow these steps to report it:
- Check if the issue has already been reported by searching the issues tab.
- If it hasn't been reported, open a new issue and provide a detailed description of the problem.
- Include any error messages or relevant information to help diagnose the issue.
- If possible, provide steps to reproduce the issue.
If you have an idea for a new feature or enhancement, we'd love to hear it! Follow these steps to submit a feature request:
- Check if the feature has already been requested by searching the issues tab.
- If it hasn't been requested, open a new issue and describe the feature you'd like to see.
- Provide any additional context or use cases that may be helpful in implementing the feature.
To maintain consistency and readability across the project, please adhere to the following coding standards:
To integrate a new filter into the project, follow these steps:
-
Create Filter Class:
- Create a new Python class for your filter under
src/filters
. - Ensure the class inherits from the base
Filter
class.
- Create a new Python class for your filter under
-
Video Processing Support:
- If your filter can process videos:
- Navigate to
src/filters/VideoEditor.py
. - Add your filter to the list of filters that accept video processing.
- Navigate to
- If your filter can process videos:
-
Update Processor Mapping:
- Navigate to
src/Processor.py
. - Add your filter to the
class_map
dictionary to enable its usage in processing pipelines.
- Navigate to
-
Update Argument Verification:
- Navigate to
src/VerifyArgs.py
. - Add a case for your filter to handle argument verification.
- Navigate to
-
Update Query Verification (Optional):
- If necessary, navigate to
src/VerifyQuery.py
. - Add support for your filter in query verification.
- If necessary, navigate to
By following these steps, your new filter will be integrated into the project and ready for use. Don't forget to test your changes locally before opening a pull request.
- Follow PEP 8 guidelines for Python code.
- Use meaningful variable and function names.
- Write clear and concise docstrings for classes, methods, and functions.
- Use four spaces for indentation.
- Try to limit lines to 79 characters.
- Use snake_case for variable and function names.
- Use descriptive comments to explain complex logic or algorithms.
- Use type annotations for function arguments and return values.
- Follow PEP 484 and PEP 526 guidelines for type annotations.
- Document all public classes, methods, and functions using docstrings.
- Provide examples of usage in the docstrings when applicable.
- Update documentation to reflect changes in code functionality.
- Use meaningful commit messages that describe the purpose of the changes.
- Reference relevant issues or pull requests in commit messages where applicable.
- Keep commits small and focused on a single task or feature.
- Squash commits before opening a pull request if necessary.
- Specify project dependencies in a
requirements.txt
file. - Pin dependencies to specific versions to ensure consistency across environments.
By following these coding standards, we can maintain a clean and efficient codebase that is easy to understand and contribute to.
If you have any questions about the project or contributing, feel free to reach out to maintainers: Valeria Yakovleva Maksim Kotenkov Kirill Makanin
We appreciate your contributions to CVIP!