Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
71 changes: 71 additions & 0 deletions .github/ISSUE_TEMPLATE/bug_report.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,71 @@
name: Bug Report
description: Report a bug in Duplicate Finding Tool
labels: ["bug"]
title: "[Bug] "
body:
- type: markdown
attributes:
value: |
Thanks for taking the time to report a bug! Please provide as much detail as possible.

- type: textarea
id: description
attributes:
label: Description
description: Clear description of the bug
placeholder: "Describe what's happening..."
validations:
required: true

- type: textarea
id: steps
attributes:
label: Steps to Reproduce
description: Exact steps to reproduce the issue
placeholder: |
1. Run this command...
2. Pass this file...
3. See the error...
validations:
required: true

- type: textarea
id: expected
attributes:
label: Expected Behavior
description: What should happen
placeholder: "The program should..."
validations:
required: true

- type: textarea
id: actual
attributes:
label: Actual Behavior
description: What actually happens
placeholder: "Instead, the program..."
validations:
required: true

- type: textarea
id: environment
attributes:
label: Environment
description: Your system details
placeholder: |
- OS: [e.g., macOS 12, Ubuntu 22.04, Windows 11]
- Python version: [e.g., 3.9, 3.10, 3.11]
- Package version: [e.g., 0.1.0]
value: |
- OS:
- Python version:
- Package version:

- type: textarea
id: context
attributes:
label: Additional Context
description: Any other relevant information (optional)
placeholder: "Error output, logs, screenshots, etc..."
validations:
required: false
5 changes: 5 additions & 0 deletions .github/ISSUE_TEMPLATE/config.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
blank_issues_enabled: false
contact_links:
- name: GitHub Discussions
url: https://github.com/tim-dickey/duplicate-finding-tool/discussions
about: Ask questions and discuss features here
57 changes: 57 additions & 0 deletions .github/ISSUE_TEMPLATE/feature_request.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
name: Feature Request
description: Propose a new feature
labels: ["enhancement"]
title: "[Feature] "
body:
- type: markdown
attributes:
value: |
Thanks for suggesting an enhancement! Please provide clear details about your idea.

- type: textarea
id: summary
attributes:
label: Summary
description: Brief description of the feature
placeholder: "I would like to..."
validations:
required: true

- type: textarea
id: motivation
attributes:
label: Motivation / Use Case
description: Why do you need this feature?
placeholder: "This would help because..."
validations:
required: true

- type: textarea
id: solution
attributes:
label: Proposed Solution
description: How should this feature work?
placeholder: |
The feature should:
1. ...
2. ...
validations:
required: true

- type: textarea
id: alternatives
attributes:
label: Alternatives Considered
description: Other approaches you've considered (optional)
placeholder: "I considered..."
validations:
required: false

- type: textarea
id: context
attributes:
label: Additional Context
description: Any other details (optional)
placeholder: "Related issues, similar tools, etc..."
validations:
required: false
32 changes: 32 additions & 0 deletions .github/PULL_REQUEST_TEMPLATE.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
## Description
<!-- What does this PR do? -->

## Related Issue
<!-- Fixes #123 or References #456 -->

## Type of Change
<!-- Mark the relevant option with an "x" -->

- [ ] Bug fix (non-breaking change that fixes an issue)
- [ ] New feature (non-breaking change that adds functionality)
- [ ] Breaking change (fix or feature that would cause existing functionality to change)
- [ ] Documentation update

## How Has This Been Tested?
<!-- Describe the tests you ran -->

- [ ] Unit tests
- [ ] Integration tests
- [ ] Manual testing
- [ ] All tests pass

## Checklist
<!-- Ensure all items are complete -->

- [ ] My code follows the style guidelines (`ruff check`, `ruff format`)
- [ ] I have performed a self-review of my own code
- [ ] I have commented my code, particularly in hard-to-understand areas
- [ ] I have made corresponding changes to the documentation
- [ ] My changes generate no new warnings
- [ ] I have added tests that prove my fix is effective or that my feature works
- [ ] New and existing tests pass locally
33 changes: 33 additions & 0 deletions CODE_OF_CONDUCT.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
# Contributor Covenant Code of Conduct

## Our Commitment

We are committed to providing a welcoming and inspiring community for all. We pledge to create an environment in which every individual feels valued and respected, regardless of background, identity, or experience.

## Our Standards

Examples of behavior that contributes to creating a positive environment include:

- Using welcoming and inclusive language
- Being respectful of differing viewpoints and experiences
- Gracefully accepting constructive criticism
- Focusing on what is best for the community
- Showing empathy towards other community members

Examples of unacceptable behavior include:

- The use of sexualized language or imagery and unwelcome sexual attention or advances
- Trolling, insulting/derogatory comments, and personal or political attacks
- Public or private harassment
- Publishing others' private information, such as a physical or email address, without explicit permission
- Other conduct which could reasonably be considered inappropriate in a professional setting

## Enforcement

Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting the project team. The project team will review and investigate all complaints, and will respond in a way that it deems appropriate to the circumstances. The project team is obligated to maintain confidentiality with regard to the reporter of an incident.

Project maintainers who do not follow or enforce the Code of Conduct in good faith may face temporary or permanent repercussions as determined by other members of the project's leadership.

## Attribution

This Code of Conduct is adapted from the Contributor Covenant, version 2.1, available at https://www.contributor-covenant.org/version/2/1/code_of_conduct.html
107 changes: 107 additions & 0 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,107 @@
# Contributing to Duplicate Finding Tool

Thank you for considering contributing to the Duplicate Finding Tool! We welcome all kinds of contributions, including bug reports, feature requests, documentation improvements, and code contributions.

## Reporting Bugs

### Before Submitting a Bug Report

- Check the issue tracker to ensure the bug hasn't already been reported
- Check the documentation and README
- Collect relevant information about your environment

### How to Submit a Bug Report

Please use GitHub Issues with the Bug Report template. Include:
- A clear, descriptive title
- Exact steps to reproduce the issue
- Expected behavior vs. actual behavior
- Your environment (OS, Python version, package version)
- Any relevant logs or error messages

## Suggesting Enhancements

Use GitHub Issues with the Feature Request template. Include:
- A clear, descriptive summary of the feature
- The motivation and use case
- Proposed implementation details
- Alternative solutions you've considered
- Any additional context

## Development Setup

1. Clone the repository
2. Create a virtual environment: `python -m venv venv`
3. Activate it: `source venv/bin/activate` (or `venv\Scripts\activate` on Windows)
4. Install in development mode: `pip install -e .[dev]`

## Coding Standards

This project follows strict code quality standards:

- **Linting**: Run `ruff check .` to check for style issues
- **Type Checking**: Run `mypy src` for type safety
- **Formatting**: Run `ruff format .` to auto-format code
- **Testing**: Run `pytest` to ensure all tests pass

Before submitting a PR, ensure:
- All code passes `ruff check` and `ruff format`
- All code passes `mypy` type checking
- All tests pass with `pytest`
- New code includes appropriate unit tests

## Testing

Tests are located in the `tests/` directory and use pytest. To run tests:

```bash
pytest # Run all tests
pytest -v # Verbose output
pytest tests/test_file.py # Run specific test file
pytest -k test_name # Run specific test
```

Aim for good test coverage of new code.

## Pull Request Process

1. Fork the repository and create a feature branch: `git checkout -b feature/your-feature-name`
2. Make your changes, following the coding standards above
3. Add or update tests as needed
4. Commit your changes with clear, descriptive messages
5. Push to your fork and submit a Pull Request
6. Ensure all CI checks pass
7. Wait for review and address any feedback

### Pull Request Checklist

- [ ] My code follows the style guidelines (ruff, mypy)
- [ ] I have performed a self-review of my code
- [ ] All tests pass locally
- [ ] I have added/updated documentation if needed
- [ ] I have added/updated tests for new functionality
- [ ] My commit messages are clear and descriptive

## Commit Message Guidelines

Write clear commit messages that:
- Start with a short summary (50 characters or less)
- Use imperative mood ("Add feature" not "Added feature")
- Reference related issues (e.g., "Fixes #123")
- Provide more details in the body if needed, separated by a blank line

Example:
```
Add MinHash clustering for duplicate detection

This implements LSH-based clustering for efficient duplicate
detection. Improves performance by 10x for large datasets.

Fixes #456
```

## Questions?

Feel free to open a discussion in GitHub Discussions for questions or open an issue for bugs/features!

Thank you for contributing! 🎉
47 changes: 47 additions & 0 deletions SECURITY.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
# Security Policy

## Supported Versions

Security updates are provided for the latest release on the main branch. We recommend always using the latest version for the best security and stability.

| Version | Supported |
|---------|-----------|
| Latest (main) | ✅ |
| Previous releases | Case-by-case |

## Reporting a Vulnerability

**Please do not open a public issue for security vulnerabilities.**

To report a security vulnerability, please use GitHub's "Report a vulnerability" button on the Security tab, or email the maintainers directly if you have an existing contact.

### What to Include in a Report

Please provide:
- A clear description of the vulnerability
- Steps to reproduce (or proof of concept)
- Potential impact assessment
- Suggested fix (if available)
- Your contact information

## Response Timeline

We aim to follow this timeline for security issues:

- **~48 hours**: Acknowledge receipt of the report
- **~7 days**: Provide status update and expected timeline
- **~90 days**: Release a security patch for confirmed vulnerabilities

Critical vulnerabilities may be expedited.

## Security Best Practices

When using the Duplicate Finding Tool:
- Keep the package updated to the latest version
- Be cautious with untrusted input files
- Review file integrity before processing large datasets
- Report any suspicious behavior

## Acknowledgments

We appreciate responsible disclosure and will acknowledge security researchers who help improve our project's security.
Loading