First off, thanks for taking the time to contribute! ❤️
All types of contributions are encouraged and valued. See the Table of Contents for different ways to help and details about how this project handles them. Please make sure to read the relevant section before making your contribution. It will make it a lot easier for us maintainers and smooth out the experience for all involved. The community looks forward to your contributions! 🎉
- Code of Conduct
- I Have a Question
- I Want To Contribute
- Development Setup
- Coding Guidelines
- Commit Messages
- Pull Request Process
This project and everyone participating in it is governed by our commitment to creating a welcoming and inclusive environment. By participating, you are expected to uphold this standard.
Before asking a question, it's best to search for existing Issues that might help you. If you have found a suitable issue and still need clarification, you can write your question in this issue.
If you then still feel the need to ask a question and need clarification, we recommend the following:
- Open an Issue
- Provide as much context as you can about what you're running into
- Provide project and platform versions (Python, OS, etc.)
A good bug report shouldn't leave others needing to chase you up for more information. Therefore, we ask you to investigate carefully, collect information and describe the issue in detail in your report. Please complete the following steps in advance to help us fix any potential bug as fast as possible:
- Make sure you are using the latest version
- Determine if your bug is really a bug and not an error on your side
- Check if other users have experienced the same issue
- Collect information about the bug
We use GitHub issues to track bugs and errors. If you run into an issue with the project:
- Open an Issue
- Use our bug report template
- Explain the behavior you would expect and the actual behavior
- Please provide as much context as possible
This section guides you through submitting an enhancement suggestion for DeepRecon, including completely new features and minor improvements to existing functionality.
Enhancement suggestions are tracked as GitHub issues.
- Use our feature request template
- Use a clear and descriptive title
- Provide a step-by-step description of the suggested enhancement
- Describe the current behavior and explain the behavior you expected
- Explain why this enhancement would be useful
- Python 3.8 or higher
- Git
-
Fork the repository
Click the "Fork" button at the top right of the repository page.
-
Clone your fork
git clone https://github.com/YOUR-USERNAME/DeepRecon.git cd DeepRecon -
Create a virtual environment
python -m venv venv source venv/bin/activate # On Windows: venv\Scripts\activate
-
Install dependencies
pip install -r requirements.txt pip install -e . -
Install development dependencies
pip install pytest pytest-cov flake8 black isort
-
Create a branch for your work
git checkout -b feature/amazing-feature
- Follow PEP 8 style guide
- Use Black for code formatting
- Use isort for import sorting
- Maximum line length: 88 characters (Black default)
- Write clear, readable code with meaningful variable names
- Add docstrings to all public functions and classes
- Include type hints where appropriate
- Handle errors gracefully
- No hardcoded values - use configuration
- Write tests for all new functionality
- Maintain or improve test coverage
- Use descriptive test names
- Follow the AAA pattern (Arrange, Act, Assert)
def test_get_ip_valid_domain():
# Arrange
domain = "example.com"
# Act
result = get_ip(domain)
# Assert
assert result is not None
assert isinstance(result, str)- Update docstrings for any changed functions
- Update README.md if adding new features
- Add examples for new functionality
- Keep documentation clear and concise
Follow the Conventional Commits specification:
type(scope): description
[optional body]
[optional footer]
feat: New featurefix: Bug fixdocs: Documentation changesstyle: Code style changes (formatting, etc.)refactor: Code refactoringtest: Adding or updating testschore: Maintenance tasks
feat(dns): add support for AAAA records
fix(ssl): handle timeout errors gracefully
docs(readme): add installation instructions
test(resolve): add tests for invalid domains
-
Create a Pull Request
- Use a clear and descriptive title
- Fill out the PR template completely
- Link any related issues
-
Code Review
- Address all review comments
- Make sure CI passes
- Keep the PR focused on a single feature/fix
-
Before Merging
- Ensure all tests pass
- Code coverage doesn't decrease
- Documentation is updated
- CHANGELOG.md is updated
When creating a PR, include:
- What: Brief description of changes
- Why: Motivation and context
- How: Technical details if complex
- Testing: How you tested the changes
- Checklist: Use our PR checklist
Don't hesitate to ask questions if anything is unclear. You can:
- Open an issue for discussion
- Email the maintainer: mrasolesfandiari@gmail.com
Thank you for contributing to DeepRecon! 🚀