Add issue templates for feature requests, performance issues, platform-specific issues, questions, and security vulnerabilities

- Created detailed YAML templates for various issue types to streamline user submissions and improve issue tracking.
- Added a comprehensive pull request template to guide contributors in providing necessary information.
- Developed a contributing guide to outline project setup, contribution types, testing procedures, and code style guidelines.
This commit is contained in:
xixu-me committed 2025-06-02 00:25:49 +08:00
1 parent 0216fcc128
commit ed4ac6c9fb
14 files changed
+2011 -69

No files matched your search

-38
View File
@@ -1,38 +0,0 @@
---
name: Bug report
about: Create a report to help us improve
title: ''
labels: ''
assignees: ''
---
**Describe the bug**
A clear and concise description of what the bug is.
**To Reproduce**
Steps to reproduce the behavior:
1. Go to '...'
2. Click on '....'
3. Scroll down to '....'
4. See error
**Expected behavior**
A clear and concise description of what you expected to happen.
**Screenshots**
If applicable, add screenshots to help explain your problem.
**Desktop (please complete the following information):**
- OS: [e.g. iOS]
- Browser [e.g. chrome, safari]
- Version [e.g. 22]
**Smartphone (please complete the following information):**
- Device: [e.g. iPhone6]
- OS: [e.g. iOS8.1]
- Browser [e.g. stock browser, safari]
- Version [e.g. 22]
**Additional context**
Add any other context about the problem here.
+180
View File
@@ -0,0 +1,180 @@
name: Bug Report
description: Report a bug or unexpected behavior in tzst
title: "[BUG] "
labels: ["bug", "needs-triage"]
assignees: []
body:
- type: markdown
attributes:
value: |
Thank you for taking the time to report a bug! Please provide as much detail as possible to help us reproduce and fix the issue.
- type: checkboxes
id: search
attributes:
label: Search for existing issues
description: Please search existing issues before creating a new one.
options:
- label: I have searched for existing issues and didn't find a duplicate
required: true
- type: input
id: version
attributes:
label: tzst Version
description: What version of tzst are you using?
placeholder: "e.g., 1.0.0"
validations:
required: true
- type: input
id: python-version
attributes:
label: Python Version
description: What version of Python are you using?
placeholder: "e.g., 3.12.0"
validations:
required: true
- type: dropdown
id: platform
attributes:
label: Operating System
description: What operating system are you using?
options:
- Windows
- macOS
- Linux (Ubuntu)
- Linux (CentOS/RHEL)
- Linux (Arch)
- Linux (Other)
- Other
validations:
required: true
- type: dropdown
id: usage-type
attributes:
label: Usage Type
description: How are you using tzst?
options:
- Command Line Interface (CLI)
- Python API
- Both CLI and Python API
validations:
required: true
- type: textarea
id: description
attributes:
label: Bug Description
description: A clear and concise description of what the bug is.
placeholder: Describe what happened and what you expected to happen.
validations:
required: true
- type: textarea
id: reproduce
attributes:
label: Steps to Reproduce
description: Detailed steps to reproduce the bug.
placeholder: |
1. Create a file/directory structure...
2. Run the command `tzst a archive.tzst ...`
3. Observe the error...
validations:
required: true
- type: textarea
id: expected
attributes:
label: Expected Behavior
description: What did you expect to happen?
placeholder: Describe the expected behavior.
validations:
required: true
- type: textarea
id: actual
attributes:
label: Actual Behavior
description: What actually happened? Include any error messages or stack traces.
placeholder: |
Include full error messages, stack traces, or unexpected output here.
Use code blocks (```) for formatting.
validations:
required: true
- type: textarea
id: archive-details
attributes:
label: Archive Details (if applicable)
description: Information about the archive or files involved.
placeholder: |
- Archive size:
- Number of files:
- File types:
- Compression level used:
- Special file types (symlinks, executables, etc.):
validations:
required: false
- type: textarea
id: environment
attributes:
label: Environment Details
description: Additional environment information that might be relevant.
placeholder: |
- Available disk space:
- Memory (RAM):
- File system type:
- Any special permissions or restrictions:
- Antivirus software (if relevant):
validations:
required: false
- type: dropdown
id: workaround
attributes:
label: Workaround Available
description: Have you found any workaround for this issue?
options:
- "No workaround found"
- "Partial workaround available"
- "Full workaround available"
validations:
required: false
- type: textarea
id: workaround-details
attributes:
label: Workaround Details
description: If you found a workaround, please describe it here.
placeholder: Describe any workaround you've found.
validations:
required: false
- type: checkboxes
id: additional-info
attributes:
label: Additional Information
description: Please check any that apply to your situation.
options:
- label: This is a regression (worked in a previous version)
- label: This affects large files (>100MB)
- label: This affects archives with many files (>1000)
- label: This involves Unicode/international characters
- label: This involves symbolic links or special files
- label: This affects atomic file operations
- label: This affects streaming mode
- label: This involves compression level edge cases
- label: This is platform-specific behavior
- type: textarea
id: additional-context
attributes:
label: Additional Context
description: Any other context, screenshots, or information that might help.
placeholder: Add any other context about the problem here.
validations:
required: false
+14
View File
@@ -0,0 +1,14 @@
blank_issues_enabled: false
contact_links:
- name: 📖 Documentation
url: https://github.com/xixu-me/tzst#readme
about: Check the README for usage instructions and examples
- name: 🔒 Security Vulnerabilities (Private)
url: mailto:security@xi-xu.me
about: For critical security vulnerabilities, please report privately via email
- name: 💬 Discussions
url: https://github.com/xixu-me/tzst/discussions
about: Ask questions and discuss ideas with the community
- name: 📊 PyPI Package
url: https://pypi.org/project/tzst/
about: Download and install tzst from PyPI
-10
View File
@@ -1,10 +0,0 @@
---
name: Custom issue template
about: Describe this issue template's purpose here.
title: ''
labels: ''
assignees: ''
---
+233
View File
@@ -0,0 +1,233 @@
name: Documentation Issue
description: Report issues with documentation, examples, or request documentation improvements
title: "[DOCS] "
labels: ["documentation", "needs-triage"]
assignees: []
body:
- type: markdown
attributes:
value: |
Thank you for helping improve tzst documentation! Clear documentation is essential for user experience.
- type: checkboxes
id: search
attributes:
label: Search for existing issues
description: Please search existing issues before creating a new one.
options:
- label: I have searched for existing documentation issues and didn't find a duplicate
required: true
- type: dropdown
id: doc-type
attributes:
label: Documentation Type
description: What type of documentation issue is this?
options:
- README.md
- CONTRIBUTING.md
- API documentation (docstrings)
- CLI help text
- Code examples
- Installation instructions
- Error messages
- Security documentation
- Performance guidelines
- Platform-specific notes
- Other
validations:
required: true
- type: dropdown
id: issue-category
attributes:
label: Issue Category
description: What type of documentation issue are you reporting?
options:
- Missing documentation
- Incorrect/outdated information
- Unclear or confusing explanation
- Missing examples
- Broken links or references
- Formatting issues
- Typos or grammar errors
- Translation issues
- Accessibility improvements
- New documentation request
validations:
required: true
- type: textarea
id: description
attributes:
label: Issue Description
description: Describe the documentation issue in detail.
placeholder: |
Clearly describe the documentation problem:
- What information is missing, incorrect, or unclear?
- Where did you encounter this issue?
- What were you trying to accomplish?
validations:
required: true
- type: textarea
id: location
attributes:
label: Documentation Location
description: Where is this documentation located?
placeholder: |
Specify the location:
- File name: README.md, CONTRIBUTING.md, etc.
- Section: "Installation", "API Reference", etc.
- Line numbers (if applicable):
- URL (if online documentation):
validations:
required: true
- type: textarea
id: current-content
attributes:
label: Current Content
description: What does the current documentation say? (copy the relevant text)
placeholder: |
Copy the current text that is problematic:
```
[Paste current documentation text here]
```
validations:
required: false
- type: textarea
id: expected-content
attributes:
label: Suggested Improvement
description: What should the documentation say instead?
placeholder: |
Provide your suggested improvement:
- Corrected information
- Clearer explanation
- Additional examples
- Better formatting
validations:
required: true
- type: textarea
id: examples-needed
attributes:
label: Examples Needed
description: What examples would help illustrate this documentation?
placeholder: |
Suggest specific examples:
- Code examples showing usage
- Command-line examples
- Common use cases
- Error handling examples
validations:
required: false
- type: dropdown
id: user-level
attributes:
label: Target User Level
description: What level of user would benefit from this documentation improvement?
options:
- Beginner (first-time users)
- Intermediate (some experience)
- Advanced (power users)
- Developer (contributing to tzst)
- All users
validations:
required: false
- type: checkboxes
id: documentation-areas
attributes:
label: Related Documentation Areas
description: Which areas of documentation are related to this issue?
options:
- label: Installation and setup
- label: Basic usage and getting started
- label: CLI commands and options
- label: Python API reference
- label: Performance and optimization
- label: Security considerations
- label: Platform-specific information
- label: Troubleshooting and error handling
- label: Advanced usage patterns
- label: Integration with other tools
- label: Contributing guidelines
- label: Development setup
- type: dropdown
id: discovery-context
attributes:
label: How did you discover this issue?
description: What were you doing when you found this documentation problem?
options:
- Reading documentation to learn tzst
- Following installation instructions
- Looking for specific API information
- Trying to solve a problem
- Reviewing code examples
- Contributing to the project
- Teaching/helping others
- Other
validations:
required: false
- type: textarea
id: user-journey
attributes:
label: User Journey Context
description: Describe what you were trying to accomplish when you encountered this issue.
placeholder: |
Help us understand the context:
- What task were you trying to complete?
- What information were you looking for?
- What confusion or frustration did you experience?
- How did this impact your ability to use tzst?
validations:
required: false
- type: checkboxes
id: improvement-type
attributes:
label: Improvement Type
description: What type of improvement would help most?
options:
- label: More detailed explanations
- label: Step-by-step tutorials
- label: More code examples
- label: Better organization/structure
- label: Visual aids (diagrams, screenshots)
- label: Cross-references to related topics
- label: Troubleshooting guides
- label: FAQ section
- label: Video or interactive content
- label: Beginner-friendly explanations
- label: Advanced technical details
- type: textarea
id: additional-context
attributes:
label: Additional Context
description: Any other context that would help improve the documentation.
placeholder: |
Additional information:
- Your experience level with similar tools
- Documentation from other projects that you found helpful
- Specific use cases that need better coverage
- Any other relevant details
validations:
required: false
- type: checkboxes
id: contribution-interest
attributes:
label: Contribution Interest
description: Would you be interested in helping improve this documentation?
options:
- label: I would be interested in writing/improving this documentation
- label: I would be interested in reviewing documentation changes
- label: I can provide feedback on documentation drafts
- label: I can help with testing documentation examples
-20
View File
@@ -1,20 +0,0 @@
---
name: Feature request
about: Suggest an idea for this project
title: ''
labels: ''
assignees: ''
---
**Is your feature request related to a problem? Please describe.**
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
**Describe the solution you'd like**
A clear and concise description of what you want to happen.
**Describe alternatives you've considered**
A clear and concise description of any alternative solutions or features you've considered.
**Additional context**
Add any other context or screenshots about the feature request here.
+147
View File
@@ -0,0 +1,147 @@
name: Feature Request
description: Suggest a new feature or enhancement for tzst
title: "[FEATURE] "
labels: ["enhancement", "needs-triage"]
assignees: []
body:
- type: markdown
attributes:
value: |
Thank you for suggesting a new feature! Please provide as much detail as possible about your request.
- type: checkboxes
id: search
attributes:
label: Search for existing requests
description: Please search existing issues and discussions before creating a new feature request.
options:
- label: I have searched for existing feature requests and didn't find a duplicate
required: true
- type: dropdown
id: feature-type
attributes:
label: Feature Type
description: What type of feature are you requesting?
options:
- New CLI command or option
- New Python API functionality
- Performance improvement
- New compression options
- Enhanced error handling
- Security enhancement
- Cross-platform compatibility
- Integration with other tools
- Documentation improvement
- Other
validations:
required: true
- type: textarea
id: problem
attributes:
label: Problem Description
description: What problem would this feature solve? What use case would it enable?
placeholder: |
Describe the problem or limitation you're experiencing.
What use case would this feature enable?
validations:
required: true
- type: textarea
id: solution
attributes:
label: Proposed Solution
description: Describe the solution you'd like to see implemented.
placeholder: |
Describe your proposed solution in detail.
How would users interact with this feature?
validations:
required: true
- type: textarea
id: examples
attributes:
label: Usage Examples
description: Provide examples of how this feature would be used.
placeholder: |
# CLI example:
tzst new-command archive.tzst --new-option
# Python API example:
from tzst import TzstArchive
with TzstArchive("archive.tzst") as archive:
archive.new_method()
validations:
required: false
- type: textarea
id: alternatives
attributes:
label: Alternatives Considered
description: What alternatives have you considered? Why isn't the current functionality sufficient?
placeholder: |
Describe any alternative solutions you've considered.
Why don't existing features meet your needs?
validations:
required: false
- type: dropdown
id: priority
attributes:
label: Priority Level
description: How important is this feature to you?
options:
- Critical (blocks important workflows)
- High (would significantly improve workflow)
- Medium (nice to have)
- Low (minor convenience)
validations:
required: false
- type: checkboxes
id: compatibility
attributes:
label: Compatibility Considerations
description: Please check any that apply to your feature request.
options:
- label: This feature should maintain backward compatibility
- label: This feature may require breaking changes
- label: This feature should work on all supported platforms
- label: This feature is platform-specific
- label: This feature affects file format compatibility
- label: This feature affects performance significantly
- label: This feature requires new dependencies
- type: textarea
id: implementation
attributes:
label: Implementation Ideas
description: Do you have any ideas about how this could be implemented?
placeholder: |
If you have technical knowledge about how this could be implemented,
please share your ideas here. This is optional but helpful.
validations:
required: false
- type: checkboxes
id: contribution
attributes:
label: Contribution Interest
description: Would you be interested in contributing to this feature?
options:
- label: I would be interested in implementing this feature
- label: I would be interested in testing this feature
- label: I would be interested in writing documentation for this feature
- label: I can provide ongoing feedback during development
- type: textarea
id: additional-context
attributes:
label: Additional Context
description: Any other context, links, or information that would help understand this request.
placeholder: |
Add any other context about the feature request here.
Links to similar features in other tools, academic papers, etc.
validations:
required: false
@@ -0,0 +1,219 @@
name: Performance Issue
description: Report performance problems, memory usage, or speed issues
title: "[PERFORMANCE] "
labels: ["performance", "needs-triage"]
assignees: []
body:
- type: markdown
attributes:
value: |
Thank you for reporting a performance issue! Performance problems can be tricky to diagnose, so please provide as much detail as possible.
- type: checkboxes
id: search
attributes:
label: Search for existing issues
description: Please search existing issues before creating a new one.
options:
- label: I have searched for existing performance issues and didn't find a duplicate
required: true
- type: input
id: version
attributes:
label: tzst Version
description: What version of tzst are you using?
placeholder: "e.g., 1.0.0"
validations:
required: true
- type: input
id: python-version
attributes:
label: Python Version
description: What version of Python are you using?
placeholder: "e.g., 3.12.0"
validations:
required: true
- type: dropdown
id: platform
attributes:
label: Operating System
description: What operating system are you using?
options:
- Windows
- macOS
- Linux (Ubuntu)
- Linux (CentOS/RHEL)
- Linux (Arch)
- Linux (Other)
- Other
validations:
required: true
- type: dropdown
id: performance-type
attributes:
label: Performance Issue Type
description: What type of performance problem are you experiencing?
options:
- Slow compression speed
- Slow decompression speed
- High memory usage
- High CPU usage
- Slow file I/O
- Poor scaling with large files
- Poor scaling with many files
- Streaming mode performance
- CLI responsiveness
- Other
validations:
required: true
- type: textarea
id: description
attributes:
label: Performance Issue Description
description: Describe the performance problem you're experiencing.
placeholder: |
Describe what performance issue you're seeing.
Be specific about what operations are slow or using too much memory.
validations:
required: true
- type: textarea
id: benchmark-data
attributes:
label: Benchmark Data
description: Provide timing, memory usage, or other measurable data.
placeholder: |
Operation: Creating 1GB archive
Time taken: 45 seconds
Memory usage: 2GB RAM
CPU usage: 100% for entire duration
Expected: ~15 seconds, <500MB RAM
validations:
required: true
- type: textarea
id: data-characteristics
attributes:
label: Data Characteristics
description: Describe the files/data you're working with.
placeholder: |
- Total size:
- Number of files:
- File types:
- Average file size:
- Directory structure depth:
- Compression level used:
- Archive format (.tzst or .tar.zst):
validations:
required: true
- type: textarea
id: system-specs
attributes:
label: System Specifications
description: Provide details about your system hardware.
placeholder: |
- CPU:
- RAM:
- Storage type (SSD/HDD):
- Available disk space:
- Network storage (if applicable):
validations:
required: true
- type: dropdown
id: usage-pattern
attributes:
label: Usage Pattern
description: How are you using tzst?
options:
- Command Line Interface (CLI)
- Python API with small archives
- Python API with large archives
- Python API with many small files
- Streaming mode
- Batch processing multiple archives
- Interactive usage
validations:
required: true
- type: textarea
id: reproduce
attributes:
label: Steps to Reproduce
description: Detailed steps to reproduce the performance issue.
placeholder: |
1. Create test data of size X...
2. Run command `tzst a archive.tzst ...`
3. Monitor performance with [tool]...
4. Observe slow performance...
validations:
required: true
- type: textarea
id: comparison
attributes:
label: Performance Comparison
description: How does tzst performance compare to other tools or previous versions?
placeholder: |
Comparison with other tools (tar, gzip, etc.):
- Tool A: X seconds, Y MB memory
- Tool B: X seconds, Y MB memory
- tzst: X seconds, Y MB memory
Comparison with previous tzst versions (if applicable):
- Version X.X.X: timing/memory
- Current version: timing/memory
validations:
required: false
- type: checkboxes
id: performance-factors
attributes:
label: Performance Factors
description: Please check any that apply to your situation.
options:
- label: Issue occurs with atomic file operations enabled
- label: Issue occurs with streaming mode enabled
- label: Issue occurs with high compression levels (15+)
- label: Issue occurs with low compression levels (1-5)
- label: Issue occurs with Unicode filenames
- label: Issue occurs with symbolic links
- label: Issue occurs with many small files
- label: Issue occurs with few large files
- label: Issue occurs on network storage
- label: Issue occurs during extraction
- label: Issue occurs during compression
- label: Issue is reproducible consistently
- type: textarea
id: profiling-data
attributes:
label: Profiling Data
description: If you've done any profiling, please include the results.
placeholder: |
Include any profiling data you've collected:
- Python profiler output
- Memory profiler results
- System monitoring data
- etc.
validations:
required: false
- type: textarea
id: additional-context
attributes:
label: Additional Context
description: Any other context that might help diagnose the performance issue.
placeholder: |
- Are you running other resource-intensive programs?
- Any specific system configurations?
- Any other relevant details?
validations:
required: false
@@ -0,0 +1,239 @@
name: Platform-Specific Issue
description: Report issues specific to Windows, macOS, Linux, or other platforms
title: "[PLATFORM] "
labels: ["platform-specific", "needs-triage"]
assignees: []
body:
- type: markdown
attributes:
value: |
Thank you for reporting a platform-specific issue! These issues help us ensure tzst works correctly across all supported platforms.
- type: checkboxes
id: search
attributes:
label: Search for existing issues
description: Please search existing issues before creating a new one.
options:
- label: I have searched for existing platform-specific issues and didn't find a duplicate
required: true
- type: input
id: version
attributes:
label: tzst Version
description: What version of tzst are you using?
placeholder: "e.g., 1.0.0"
validations:
required: true
- type: input
id: python-version
attributes:
label: Python Version
description: What version of Python are you using?
placeholder: "e.g., 3.12.0"
validations:
required: true
- type: dropdown
id: platform
attributes:
label: Primary Platform (where issue occurs)
description: What operating system are you experiencing the issue on?
options:
- Windows 11
- Windows 10
- Windows (other version)
- macOS (latest)
- macOS (older version)
- Ubuntu (latest LTS)
- Ubuntu (other version)
- CentOS/RHEL
- Arch Linux
- Alpine Linux
- Debian
- Other Linux distribution
- FreeBSD
- Other Unix-like OS
validations:
required: true
- type: input
id: platform-details
attributes:
label: Platform Details
description: Specific version, architecture, or other platform details.
placeholder: "e.g., Windows 10 Pro 22H2, x64 / Ubuntu 22.04.3 LTS, arm64 / macOS 13.5, x86_64"
validations:
required: true
- type: dropdown
id: cross-platform-test
attributes:
label: Cross-Platform Testing
description: Have you tested this on other platforms?
options:
- "No, only tested on the affected platform"
- "Yes, works correctly on other platforms"
- "Yes, same issue occurs on other platforms"
- "Partially tested on other platforms"
validations:
required: true
- type: textarea
id: other-platforms
attributes:
label: Other Platform Results
description: If you tested on other platforms, what were the results?
placeholder: |
Platform 1: Working correctly / Same issue / Different issue / Not tested
Platform 2: Working correctly / Same issue / Different issue / Not tested
Platform 3: Working correctly / Same issue / Different issue / Not tested
validations:
required: false
- type: dropdown
id: issue-category
attributes:
label: Issue Category
description: What type of platform-specific issue is this?
options:
- File path handling (Windows path limits, Unix paths)
- File permissions and attributes
- Symbolic links and special files
- Character encoding and Unicode
- File system limitations
- Archive compatibility across platforms
- CLI behavior differences
- Installation or packaging issues
- Performance differences
- Security or permissions model
- Other
validations:
required: true
- type: textarea
id: description
attributes:
label: Issue Description
description: Describe the platform-specific issue you're experiencing.
placeholder: |
Describe the issue in detail.
Be specific about what behavior you're seeing that differs from expected or from other platforms.
validations:
required: true
- type: textarea
id: reproduce
attributes:
label: Steps to Reproduce
description: Steps to reproduce the issue on the affected platform.
placeholder: |
1. Create files with [specific characteristics]...
2. Run `tzst a archive.tzst ...`
3. Observe platform-specific behavior...
validations:
required: true
- type: textarea
id: expected-behavior
attributes:
label: Expected Behavior
description: What behavior did you expect? How does it work on other platforms?
placeholder: |
Expected behavior (or behavior on other platforms):
- Should create archive successfully
- Should preserve file attributes
- etc.
validations:
required: true
- type: textarea
id: actual-behavior
attributes:
label: Actual Behavior
description: What actually happens on this platform?
placeholder: |
Actual behavior on [platform]:
- Error message:
- Unexpected results:
- Different file handling:
validations:
required: true
- type: checkboxes
id: platform-features
attributes:
label: Platform-Specific Features Involved
description: Check any platform-specific features that are involved in this issue.
options:
- label: Windows long paths (>260 characters)
- label: Windows reserved filenames (CON, PRN, AUX, etc.)
- label: Windows file attributes (hidden, system, etc.)
- label: Windows case-insensitive filesystem
- label: Unix/Linux file permissions (chmod)
- label: Unix/Linux symbolic links
- label: Unix/Linux hard links
- label: Unix/Linux special files (devices, pipes, etc.)
- label: macOS resource forks or extended attributes
- label: macOS case-insensitive but case-preserving filesystem
- label: Unicode normalization differences
- label: Path separator differences (/ vs \)
- label: Network filesystem behaviors
- label: Container or virtualized environment
- type: textarea
id: file-examples
attributes:
label: Problematic File Examples
description: Provide examples of files or paths that cause issues.
placeholder: |
Examples of files that cause problems:
- "CON.txt" (Windows reserved name)
- "file with very long path/..." (path length issues)
- "файл.txt" (Unicode characters)
- Symbolic link: link -> target
validations:
required: false
- type: textarea
id: environment-details
attributes:
label: Environment Details
description: Additional environment information specific to your platform.
placeholder: |
- Filesystem type: NTFS/ext4/APFS/etc.
- Case sensitivity: case-sensitive/case-insensitive
- Python installation method: system/conda/pyenv/etc.
- Admin/root privileges: yes/no
- Antivirus software (if Windows):
- Container environment: Docker/WSL/etc.
validations:
required: false
- type: textarea
id: workaround
attributes:
label: Workaround
description: Have you found any platform-specific workarounds?
placeholder: |
Any workarounds you've discovered for this platform:
- Using different file names
- Different command options
- Platform-specific configuration
validations:
required: false
- type: textarea
id: additional-context
attributes:
label: Additional Context
description: Any other platform-specific context that might be relevant.
placeholder: |
- Related to company/enterprise policies?
- Specific hardware configurations?
- Network or security restrictions?
- Other relevant platform details?
validations:
required: false
+206
View File
@@ -0,0 +1,206 @@
name: Question or Support
description: Ask a question about using tzst or get help with a specific use case
title: "[QUESTION] "
labels: ["question", "support"]
assignees: []
body:
- type: markdown
attributes:
value: |
Welcome! We're happy to help you with tzst. Please provide as much detail as possible so we can give you the best assistance.
**Note:** For general questions, you might also consider:
- Checking the [README.md](../README.md) for common usage patterns
- Looking at existing issues for similar questions
- Reviewing the Python API documentation in the code
- type: checkboxes
id: search
attributes:
label: Search for existing answers
description: Please search existing issues and documentation before asking.
options:
- label: I have searched existing issues and documentation for an answer
required: true
- type: dropdown
id: question-type
attributes:
label: Question Type
description: What type of question do you have?
options:
- How to use a specific feature
- Best practices recommendation
- Performance optimization help
- Platform-specific usage
- Integration with other tools
- Troubleshooting help
- Feature availability/roadmap
- Contributing guidance
- Other
validations:
required: true
- type: textarea
id: question
attributes:
label: Your Question
description: What would you like to know about tzst?
placeholder: |
Ask your question clearly and specifically:
- What are you trying to accomplish?
- What specific help do you need?
- What have you already tried?
validations:
required: true
- type: textarea
id: context
attributes:
label: Context and Use Case
description: Provide context about your situation and what you're trying to accomplish.
placeholder: |
Help us understand your situation:
- What are you building or working on?
- What constraints or requirements do you have?
- Why are you using tzst for this task?
- What's your experience level with similar tools?
validations:
required: true
- type: textarea
id: attempted-solutions
attributes:
label: What You've Tried
description: What have you already attempted? Include code, commands, or approaches you've tried.
placeholder: |
Describe what you've already tried:
```bash
# Command you tried
tzst a archive.tzst files/
```
```python
# Python code you tried
from tzst import create_archive
create_archive("test.tzst", ["files/"])
```
- Approach 1: [what happened]
- Approach 2: [what happened]
validations:
required: false
- type: input
id: tzst-version
attributes:
label: tzst Version
description: What version of tzst are you using?
placeholder: "e.g., 1.0.0"
validations:
required: false
- type: dropdown
id: platform
attributes:
label: Platform
description: What platform are you using?
options:
- Windows
- macOS
- Linux
- Not platform-specific
- Multiple platforms
validations:
required: false
- type: dropdown
id: usage-context
attributes:
label: Usage Context
description: How are you planning to use tzst?
options:
- Command line tool for personal use
- Command line tool in scripts/automation
- Python library in application
- Python library for data processing
- Integration with existing workflow
- Learning/educational purposes
- Contributing to tzst development
- Other
validations:
required: false
- type: textarea
id: data-characteristics
attributes:
label: Data Characteristics (if relevant)
description: If your question involves specific types of data, describe it.
placeholder: |
If relevant to your question:
- Types of files you're working with:
- Approximate data size:
- Number of files:
- Special requirements (performance, security, etc.):
validations:
required: false
- type: textarea
id: expected-outcome
attributes:
label: Desired Outcome
description: What would be the ideal solution or outcome for your question?
placeholder: |
Describe what you're hoping to achieve:
- Specific functionality you want
- Performance characteristics needed
- Integration requirements
- etc.
validations:
required: false
- type: checkboxes
id: help-areas
attributes:
label: Areas Where You Need Help
description: Check the areas where you need assistance.
options:
- label: Understanding basic tzst concepts
- label: Choosing the right commands/API methods
- label: Optimizing performance
- label: Handling large files or archives
- label: Platform-specific considerations
- label: Error handling and troubleshooting
- label: Security considerations
- label: Integration with other tools/workflows
- label: Python API usage
- label: CLI usage and scripting
- label: Compression settings and trade-offs
- label: File format compatibility
- type: dropdown
id: urgency
attributes:
label: Urgency Level
description: How urgent is this question for you?
options:
- Not urgent (general learning)
- Somewhat urgent (current project)
- Urgent (blocking my work)
- Very urgent (production issue)
validations:
required: false
- type: textarea
id: additional-info
attributes:
label: Additional Information
description: Any other information that might help us answer your question.
placeholder: |
Anything else that might be relevant:
- Links to similar questions or resources you've found
- Specific error messages (if applicable)
- Related tools or technologies you're using
- Any constraints or limitations you're working with
validations:
required: false
@@ -0,0 +1,217 @@
name: Security Vulnerability
description: Report a security vulnerability in tzst (please follow responsible disclosure)
title: "[SECURITY] "
labels: ["security", "needs-triage"]
assignees: []
body:
- type: markdown
attributes:
value: |
# Security Vulnerability Report
**⚠️ IMPORTANT: For serious security vulnerabilities, please consider using private reporting instead of a public issue.**
If this is a critical security vulnerability that could be exploited, please:
1. Email the maintainers privately first
2. Allow time for a security patch before public disclosure
3. Follow responsible disclosure practices
For less critical security issues or general security improvements, this public issue form is appropriate.
- type: checkboxes
id: disclosure
attributes:
label: Responsible Disclosure
description: Please confirm your approach to reporting this security issue.
options:
- label: I understand the importance of responsible disclosure for security vulnerabilities
required: true
- label: This is not a critical vulnerability that requires private reporting
required: true
- label: I have considered the potential impact of public disclosure
required: true
- type: dropdown
id: severity
attributes:
label: Severity Level
description: How severe do you consider this security issue?
options:
- Critical (immediate action required)
- High (significant security risk)
- Medium (moderate security concern)
- Low (minor security improvement)
- Informational (security-related best practice)
validations:
required: true
- type: dropdown
id: vulnerability-type
attributes:
label: Vulnerability Type
description: What type of security issue is this?
options:
- Path traversal / Directory traversal
- Archive bomb / Zip bomb
- Arbitrary file overwrite
- Symlink attack
- Information disclosure
- Denial of Service (DoS)
- Memory corruption
- Injection vulnerability
- Privilege escalation
- Cryptographic weakness
- Input validation bypass
- Other
validations:
required: true
- type: textarea
id: description
attributes:
label: Vulnerability Description
description: Describe the security vulnerability in detail.
placeholder: |
Provide a clear description of the security issue:
- What component is affected?
- What is the vulnerability?
- What are the potential consequences?
validations:
required: true
- type: textarea
id: attack-scenario
attributes:
label: Attack Scenario
description: Describe how this vulnerability could be exploited.
placeholder: |
Describe a realistic attack scenario:
1. Attacker creates malicious archive with...
2. Victim extracts archive using tzst...
3. Result: files written outside extraction directory / code execution / etc.
validations:
required: true
- type: textarea
id: impact
attributes:
label: Impact Assessment
description: What is the potential impact of this vulnerability?
placeholder: |
Describe the potential impact:
- Confidentiality: Can sensitive data be exposed?
- Integrity: Can files be modified unexpectedly?
- Availability: Can the system be made unavailable?
- Scope: Who would be affected?
validations:
required: true
- type: textarea
id: affected-versions
attributes:
label: Affected Versions
description: Which versions of tzst are affected by this vulnerability?
placeholder: |
- tzst version tested:
- Likely affected versions:
- Known safe versions (if any):
validations:
required: true
- type: textarea
id: reproduce
attributes:
label: Proof of Concept
description: Provide steps to reproduce or demonstrate the vulnerability.
placeholder: |
**WARNING: Please ensure your PoC is safe and doesn't cause actual harm**
Steps to reproduce:
1. Create test archive with specific structure...
2. Run tzst command...
3. Observe security issue...
Or provide code that demonstrates the issue safely.
validations:
required: true
- type: textarea
id: mitigation
attributes:
label: Suggested Mitigation
description: Do you have suggestions for how to fix this vulnerability?
placeholder: |
Suggested fixes or mitigations:
- Input validation improvements
- Security filter enhancements
- API changes needed
- Configuration options
validations:
required: false
- type: checkboxes
id: security-features
attributes:
label: Related Security Features
description: Which tzst security features are involved?
options:
- label: Extraction filters (data, tar, etc.)
- label: Path validation
- label: Symlink handling
- label: Archive format validation
- label: Memory limits
- label: File size limits
- label: Atomic operations
- label: Temporary file handling
- label: Error handling and cleanup
- type: textarea
id: references
attributes:
label: References
description: Any relevant CVEs, security advisories, or research papers.
placeholder: |
Related security research:
- CVE numbers:
- Security advisories:
- Research papers:
- Similar vulnerabilities in other tools:
validations:
required: false
- type: textarea
id: environment
attributes:
label: Environment Details
description: Platform and environment details relevant to this vulnerability.
placeholder: |
- Operating System:
- Python version:
- tzst version:
- Specific environment factors:
validations:
required: false
- type: checkboxes
id: disclosure-timeline
attributes:
label: Disclosure Timeline
description: What is your intended disclosure timeline?
options:
- label: I plan to disclose this publicly immediately
- label: I can wait for a security fix before public disclosure
- label: I am requesting coordinated disclosure
- label: This has already been disclosed elsewhere
- type: textarea
id: additional-info
attributes:
label: Additional Information
description: Any other relevant security information.
placeholder: |
Additional context:
- How did you discover this vulnerability?
- Are you aware of any exploitation in the wild?
- Any other relevant details?
validations:
required: false
+181
View File
@@ -0,0 +1,181 @@
---
name: Pull Request
about: Submit a pull request to improve tzst
title: ''
labels: ''
assignees: ''
---
## Summary
<!-- Provide a brief summary of your changes -->
## Type of Change
<!-- Mark with an "x" all that apply -->
- [ ] 🐛 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 (changes to documentation only)
- [ ] 🧪 Test improvements (adding or updating tests)
- [ ] 🔧 Build/CI changes (changes to build process or CI configuration)
- [ ] ♻️ Refactoring (code changes that neither fix bugs nor add features)
- [ ] ⚡ Performance improvement
- [ ] 🔒 Security fix
## Related Issues
<!-- Link to related issues using keywords -->
<!-- Examples: -->
<!-- Fixes #123 -->
<!-- Closes #456 -->
<!-- Related to #789 -->
## Changes Made
<!-- Describe the changes you made in detail -->
### Core Changes
<!-- List main functionality changes -->
-
### API Changes
<!-- List any API changes (breaking or non-breaking) -->
-
### CLI Changes
<!-- List any command-line interface changes -->
-
## Testing
<!-- Describe the testing you performed -->
### Test Coverage
- [ ] Added tests for new functionality
- [ ] Updated existing tests as needed
- [ ] All tests pass locally (`python -m pytest`)
- [ ] Code coverage is maintained or improved
### Manual Testing
<!-- Describe manual testing performed -->
- [ ] Tested on Windows
- [ ] Tested on macOS
- [ ] Tested on Linux
- [ ] Tested with Python 3.12
- [ ] Tested with Python 3.13
### Test Scenarios
<!-- List specific scenarios you tested -->
-
-
-
## Code Quality
<!-- Confirm code quality checks -->
- [ ] Code follows project style guidelines (`ruff check .`)
- [ ] Code is properly formatted (`ruff format --check .`)
- [ ] Type hints are added for new public APIs
- [ ] Docstrings are added/updated for public methods
- [ ] No new security vulnerabilities introduced
## Documentation
<!-- Mark documentation changes -->
- [ ] README.md updated (if needed)
- [ ] CHANGELOG.md updated (for user-facing changes)
- [ ] Code comments added for complex logic
- [ ] Docstrings updated for modified functions/classes
## Backwards Compatibility
<!-- Address compatibility concerns -->
- [ ] Changes are backwards compatible
- [ ] Breaking changes are documented and justified
- [ ] Migration guide provided (if applicable)
## Performance Impact
<!-- Describe any performance implications -->
- [ ] No performance regression
- [ ] Performance improvement (describe below)
- [ ] Performance impact assessed and documented
<!-- If there are performance changes, describe them -->
## Security Considerations
<!-- Address security aspects -->
- [ ] No security implications
- [ ] Security review completed
- [ ] Input validation added/updated
- [ ] Secure defaults maintained
## Platform Compatibility
<!-- Confirm platform testing -->
- [ ] Windows compatibility verified
- [ ] macOS compatibility verified
- [ ] Linux compatibility verified
- [ ] Cross-platform file path handling tested
## Dependencies
<!-- Note any dependency changes -->
- [ ] No new dependencies added
- [ ] New dependencies are justified and minimal
- [ ] Dependency versions are appropriately constrained
- [ ] Optional dependencies are properly marked
## Deployment
<!-- For maintainers - deployment considerations -->
- [ ] Version number updated (if applicable)
- [ ] Release notes prepared (if applicable)
- [ ] Migration steps documented (if applicable)
## Checklist
<!-- Final review checklist -->
- [ ] PR title follows conventional commit format
- [ ] All CI checks are passing
- [ ] Code has been self-reviewed
- [ ] Changes have been tested thoroughly
- [ ] Documentation is complete and accurate
- [ ] Ready for code review
## Additional Notes
<!-- Add any additional context, screenshots, or notes for reviewers -->
## Reviewer Notes
<!-- For reviewers - any specific areas to focus on -->
### Review Focus Areas
<!-- What should reviewers pay special attention to? -->
-
-
-
### Questions for Reviewers
<!-- Any specific questions for the review team -->
-
-
---
<!-- Thank you for contributing to tzst! -->
<!-- Please ensure all items above are completed before requesting review -->
+374
View File
@@ -0,0 +1,374 @@
# Contributing to tzst
Thank you for your interest in contributing to tzst! This document provides guidelines and information for contributors.
## Table of Contents
- [Code of Conduct](#code-of-conduct)
- [Getting Started](#getting-started)
- [Development Setup](#development-setup)
- [Project Structure](#project-structure)
- [Making Changes](#making-changes)
- [Testing](#testing)
- [Code Style](#code-style)
- [Submitting Changes](#submitting-changes)
- [Release Process](#release-process)
- [Getting Help](#getting-help)
## Code of Conduct
This project follows the principles of respectful collaboration. Please be kind, constructive, and professional in all interactions.
## Getting Started
### Prerequisites
- Python 3.12 or higher
- Git
- Basic knowledge of tar archives and compression
### Development Setup
1. **Fork and clone the repository:**
```bash
git clone https://github.com/your-username/tzst.git
cd tzst
```
2. **Create a virtual environment:**
```bash
python -m venv venv
# On Windows
venv\Scripts\activate
# On Unix/macOS
source venv/bin/activate
```
3. **Install the package in development mode:**
```bash
pip install -e .[dev]
```
4. **Verify the installation:**
```bash
python -m pytest tests/
```
## Project Structure
```
tzst/
├── src/tzst/ # Main package source code
│ ├── __init__.py # Package initialization and exports
│ ├── __main__.py # CLI entry point
│ ├── cli.py # Command-line interface
│ ├── core.py # Core archive functionality
│ └── exceptions.py # Custom exceptions
├── tests/ # Test suite
│ ├── conftest.py # Pytest configuration and fixtures
│ ├── test_core.py # Core functionality tests
│ ├── test_cli.py # CLI tests
│ └── test_*.py # Additional test modules
├── .github/ # GitHub workflows and templates
├── pyproject.toml # Project configuration
├── README.md # Project documentation
├── LICENSE # BSD 3-Clause License
└── CONTRIBUTING.md # This file
```
## Making Changes
### Types of Contributions
We welcome various types of contributions:
- **Bug fixes**: Fix issues in existing functionality
- **Features**: Add new capabilities to the library
- **Documentation**: Improve or add documentation
- **Tests**: Add or improve test coverage
- **Performance**: Optimize existing code
- **Security**: Address security vulnerabilities
### Branch Naming
Use descriptive branch names:
- `feature/add-streaming-mode`
- `fix/handle-corrupted-archives`
- `docs/improve-api-documentation`
- `test/add-compression-tests`
### Commit Messages
Follow conventional commit format:
```
type(scope): description
[optional body]
[optional footer]
```
Types:
- `feat`: New feature
- `fix`: Bug fix
- `docs`: Documentation changes
- `test`: Adding or modifying tests
- `refactor`: Code refactoring
- `perf`: Performance improvements
- `chore`: Build process or auxiliary tool changes
Examples:
```
feat(core): add streaming compression support
fix(cli): handle invalid archive paths gracefully
docs(readme): update installation instructions
```
## Testing
### Running Tests
```bash
# Run all tests
python -m pytest
# Run with coverage
python -m pytest --cov
# Run specific test file
python -m pytest tests/test_core.py
# Run with verbose output
python -m pytest -v
# Run integration tests only
python -m pytest -m integration
```
### Test Structure
- Unit tests: Test individual functions and methods
- Integration tests: Test component interactions
- CLI tests: Test command-line interface
- Platform-specific tests: Test OS-specific functionality
### Writing Tests
1. **Use descriptive test names:**
```python
def test_create_archive_with_compression_level_9():
```
2. **Use fixtures for common test data:**
```python
def test_extract_archive(sample_archive_path, temp_dir):
```
3. **Test edge cases:**
- Empty files
- Large files
- Invalid inputs
- Corrupted archives
4. **Add markers for test categorization:**
```python
@pytest.mark.integration
def test_full_archive_workflow():
```
## Code Style
This project uses [Ruff](https://docs.astral.sh/ruff/) for linting and formatting.
### Configuration
Settings are defined in `pyproject.toml`:
- Line length: 88 characters
- Target Python version: 3.12+
- Import sorting with isort
- Quote style: double quotes
### Running Code Style Tools
```bash
# Check code style
ruff check .
# Fix auto-fixable issues
ruff check --fix .
# Format code
ruff format .
# Check formatting without making changes
ruff format --check .
```
### Code Style Guidelines
1. **Follow PEP 8** with project-specific modifications
2. **Use type hints** for all public APIs
3. **Write docstrings** for classes and public methods
4. **Keep functions focused** and reasonably sized
5. **Use meaningful variable names**
6. **Add comments** for complex logic
### Documentation Strings
Use Google-style docstrings:
```python
def create_archive(
archive_path: str | Path,
files: Sequence[str | Path],
compression_level: int = 3,
) -> None:
"""Create a new tzst archive containing the specified files.
Args:
archive_path: Path where the archive will be created.
files: Sequence of file/directory paths to include.
compression_level: Zstandard compression level (1-22).
Raises:
TzstArchiveError: If archive creation fails.
FileNotFoundError: If input files don't exist.
"""
```
## Submitting Changes
### Pull Request Process
1. **Create a feature branch:**
```bash
git checkout -b feature/your-feature-name
```
2. **Make your changes** following the guidelines above
3. **Add tests** for new functionality
4. **Update documentation** if needed
5. **Run the test suite:**
```bash
python -m pytest
ruff check .
ruff format --check .
```
6. **Commit your changes:**
```bash
git add .
git commit -m "feat: add your feature description"
```
7. **Push to your fork:**
```bash
git push origin feature/your-feature-name
```
8. **Create a pull request** using the provided template
### Pull Request Guidelines
- **Fill out the PR template** completely
- **Link related issues** using keywords (fixes #123)
- **Keep PRs focused** - one feature/fix per PR
- **Update CHANGELOG.md** for user-facing changes
- **Ensure all CI checks pass**
- **Respond to review feedback** promptly
### Review Process
1. Automated checks must pass (CI/CD, code style)
2. Code review by maintainers
3. Address any feedback or requested changes
4. Final approval and merge by maintainers
## Release Process
Releases are handled by maintainers:
1. Update version in `src/tzst/__init__.py`
2. Update `CHANGELOG.md`
3. Create a release tag
4. Automated CI/CD publishes to PyPI
## Getting Help
### Resources
- **Issues**: [GitHub Issues](https://github.com/xixu-me/tzst/issues)
- **Discussions**: Use GitHub Discussions for questions
- **Documentation**: Check the README and code comments
### Reporting Issues
When reporting bugs:
1. **Use the bug report template**
2. **Provide a minimal reproduction case**
3. **Include system information** (OS, Python version)
4. **Attach relevant files** if possible (archives, logs)
### Suggesting Features
When suggesting features:
1. **Use the feature request template**
2. **Explain the use case** and motivation
3. **Consider backwards compatibility**
4. **Provide implementation ideas** if you have them
## Development Tips
### Performance Considerations
- Use streaming for large files
- Consider memory usage patterns
- Profile code for bottlenecks
- Test with various file sizes
### Security Considerations
- Validate all user inputs
- Use secure defaults (e.g., 'data' filter)
- Handle malicious archives safely
- Be cautious with file paths
### Compatibility
- Support Python 3.12+
- Test on multiple platforms (Windows, macOS, Linux)
- Consider different filesystem behaviors
- Maintain backwards compatibility when possible
## Recognition
Contributors are recognized in several ways:
- Listed in release notes for significant contributions
- Mentioned in README acknowledgments
- GitHub contributor statistics
Thank you for contributing to tzst! Your efforts help make this library better for everyone.
+1 -1
View File
@@ -1,6 +1,6 @@
"""tzst - A Python library for creating and manipulating .tzst/.tar.zst archives."""
__version__ = "1.0.1"
__version__ = "1.0.0"
from .core import (
TzstArchive,