Skip to content

Commit f20c031

Browse files
"feat: add comprehensive testing infrastructure and GitHub templates"
1 parent eaff941 commit f20c031

79 files changed

Lines changed: 6201 additions & 357 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.commitlintrc.json

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
{
2+
"extends": ["@commitlint/config-conventional"],
3+
"rules": {
4+
"type-enum": [
5+
2,
6+
"always",
7+
[
8+
"feat",
9+
"fix",
10+
"docs",
11+
"style",
12+
"refactor",
13+
"perf",
14+
"test",
15+
"build",
16+
"ci",
17+
"chore",
18+
"revert"
19+
]
20+
],
21+
"subject-case": [0],
22+
"header-max-length": [2, "always", 100]
23+
}
24+
}

.coveragerc

Lines changed: 92 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,92 @@
1+
# Coverage.py configuration file
2+
# https://coverage.readthedocs.io/
3+
4+
[run]
5+
# Measure branch coverage in addition to statement coverage
6+
branch = True
7+
8+
# Source directories to measure
9+
source = plotsense
10+
11+
# Files to omit from coverage
12+
omit =
13+
*/tests/*
14+
*/test_*.py
15+
*/__pycache__/*
16+
*/venv/*
17+
*/env/*
18+
*/.venv/*
19+
setup.py
20+
*/site-packages/*
21+
22+
# Parallel mode for running tests in parallel
23+
parallel = False
24+
25+
[report]
26+
# Precision for coverage percentage
27+
precision = 2
28+
29+
# Show lines that weren't executed
30+
show_missing = True
31+
32+
# Don't skip covered files in the report
33+
skip_covered = False
34+
35+
# Skip files with no statements
36+
skip_empty = True
37+
38+
# Sort report by coverage percentage
39+
sort = Cover
40+
41+
# Fail if coverage is below this percentage (can be overridden in CI)
42+
# fail_under = 80
43+
44+
# Regexes for lines to exclude from consideration
45+
exclude_lines =
46+
# Have to re-enable the standard pragma
47+
pragma: no cover
48+
49+
# Don't complain about missing debug-only code:
50+
def __repr__
51+
def __str__
52+
53+
# Don't complain if tests don't hit defensive assertion code:
54+
raise AssertionError
55+
raise NotImplementedError
56+
raise ValueError
57+
58+
# Don't complain if non-runnable code isn't run:
59+
if __name__ == .__main__.:
60+
if 0:
61+
if False:
62+
63+
# Type checking only code
64+
if TYPE_CHECKING:
65+
if typing.TYPE_CHECKING:
66+
67+
# Abstract methods
68+
@abstractmethod
69+
@abc.abstractmethod
70+
71+
# Overloaded functions
72+
@overload
73+
74+
# Protocol methods
75+
@protocol
76+
\.\.\.
77+
78+
[html]
79+
# Directory for HTML report
80+
directory = htmlcov
81+
82+
# Title for HTML report
83+
title = PlotSense Test Coverage Report
84+
85+
[xml]
86+
# Output file for XML report (for CI/CD tools)
87+
output = coverage.xml
88+
89+
[json]
90+
# Output file for JSON report
91+
output = coverage.json
92+
show_contexts = True
Lines changed: 85 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,85 @@
1+
---
2+
name: Bug Report
3+
about: Create a report to help us improve
4+
title: '[BUG] '
5+
labels: bug
6+
assignees: ''
7+
---
8+
9+
## Bug Description
10+
11+
<!-- A clear and concise description of what the bug is -->
12+
13+
## To Reproduce
14+
15+
Steps to reproduce the behavior:
16+
17+
1.
18+
2.
19+
3.
20+
4.
21+
22+
**Minimal Reproducible Example:**
23+
24+
```python
25+
# Paste your code here
26+
import plotsense as ps
27+
import pandas as pd
28+
29+
# Your code that reproduces the issue
30+
```
31+
32+
## Expected Behavior
33+
34+
<!-- A clear and concise description of what you expected to happen -->
35+
36+
## Actual Behavior
37+
38+
<!-- What actually happened -->
39+
40+
## Error Messages
41+
42+
```
43+
# Paste the full error traceback here
44+
```
45+
46+
## Environment
47+
48+
**System Information:**
49+
- OS: <!-- e.g., Windows 11, Ubuntu 22.04, macOS 14 -->
50+
- Python Version: <!-- e.g., 3.11.5 -->
51+
- PlotSense Version: <!-- e.g., 0.1.3 -->
52+
53+
**Dependencies:**
54+
```bash
55+
# Paste output of: pip list | grep -E "plotsense|pandas|matplotlib|groq"
56+
```
57+
58+
## Screenshots
59+
60+
<!-- If applicable, add screenshots to help explain your problem -->
61+
62+
## Additional Context
63+
64+
<!-- Add any other context about the problem here -->
65+
66+
**Data Sample (if applicable):**
67+
68+
```python
69+
# If the bug is data-related, provide a small sample DataFrame
70+
df = pd.DataFrame({
71+
# Your data
72+
})
73+
```
74+
75+
## Workaround
76+
77+
<!-- If you found a temporary workaround, describe it here -->
78+
79+
## Checklist
80+
81+
- [ ] I have searched existing issues to ensure this bug hasn't been reported
82+
- [ ] I have tested with the latest version of PlotSense
83+
- [ ] I have provided a minimal reproducible example
84+
- [ ] I have included the full error traceback
85+
- [ ] I have checked that my GROQ_API_KEY is valid (if applicable)
Lines changed: 83 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,83 @@
1+
---
2+
name: Feature Request
3+
about: Suggest an idea for PlotSense
4+
title: '[FEATURE] '
5+
labels: enhancement
6+
assignees: ''
7+
---
8+
9+
## Feature Description
10+
11+
<!-- A clear and concise description of the feature you'd like -->
12+
13+
## Problem Statement
14+
15+
<!-- Is your feature request related to a problem? Please describe. -->
16+
<!-- Example: "I'm always frustrated when..." -->
17+
18+
## Proposed Solution
19+
20+
<!-- Describe the solution you'd like -->
21+
22+
**Example Usage:**
23+
24+
```python
25+
# How you envision using this feature
26+
import plotsense as ps
27+
28+
# Your proposed API/usage
29+
```
30+
31+
## Alternatives Considered
32+
33+
<!-- Describe any alternative solutions or features you've considered -->
34+
35+
## Benefits
36+
37+
<!-- Why would this feature be useful? Who would benefit from it? -->
38+
39+
- **For Data Scientists:**
40+
- **For Analysts:**
41+
- **For the Project:**
42+
43+
## Implementation Ideas
44+
45+
<!-- If you have ideas about how this could be implemented, share them here -->
46+
47+
**Affected Components:**
48+
- [ ] Recommendation Engine
49+
- [ ] Plot Generator
50+
- [ ] Explanation System
51+
- [ ] Web Interface
52+
- [ ] Documentation
53+
- [ ] Tests
54+
- [ ] Other: <!-- specify -->
55+
56+
**Potential Challenges:**
57+
58+
## Mockups/Examples
59+
60+
<!-- If applicable, add mockups, diagrams, or examples from other tools -->
61+
62+
## Additional Context
63+
64+
<!-- Add any other context or screenshots about the feature request here -->
65+
66+
## Would you like to work on this?
67+
68+
- [ ] Yes, I'd like to contribute this feature
69+
- [ ] No, but I'm happy to help test it
70+
- [ ] Just suggesting the idea
71+
72+
## Related Features/Issues
73+
74+
<!-- Link to related issues or features -->
75+
76+
Related to #
77+
78+
## Checklist
79+
80+
- [ ] I have searched existing issues/PRs for similar feature requests
81+
- [ ] I have provided a clear use case for this feature
82+
- [ ] I have considered how this fits with PlotSense's mission
83+
- [ ] I have provided example usage code

.github/ISSUE_TEMPLATE/question.md

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
---
2+
name: Question
3+
about: Ask a question about using PlotSense
4+
title: '[QUESTION] '
5+
labels: question
6+
assignees: ''
7+
---
8+
9+
## Question
10+
11+
<!-- Ask your question here -->
12+
13+
## Context
14+
15+
<!-- Provide context about what you're trying to accomplish -->
16+
17+
**What I'm trying to do:**
18+
19+
**What I've tried:**
20+
21+
```python
22+
# Your code attempts
23+
```
24+
25+
## Environment
26+
27+
- PlotSense Version: <!-- e.g., 0.1.3 -->
28+
- Python Version: <!-- e.g., 3.11 -->
29+
30+
## Expected Outcome
31+
32+
<!-- What result are you hoping to achieve? -->
33+
34+
## Resources Checked
35+
36+
<!-- Have you checked these resources? -->
37+
38+
- [ ] README.md
39+
- [ ] TESTING.md
40+
- [ ] [Documentation/Examples](<!-- link if available -->)
41+
- [ ] Existing issues
42+
43+
## Additional Information
44+
45+
<!-- Any other details that might help answer your question -->

.github/pull_request_template.md

Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
# Pull Request
2+
3+
## Description
4+
5+
<!-- Provide a brief description of the changes in this PR -->
6+
7+
### Type of Change
8+
9+
<!-- Mark the relevant option with an "x" -->
10+
11+
- [ ] Bug fix (non-breaking change which fixes an issue)
12+
- [ ] New feature (non-breaking change which adds functionality)
13+
- [ ] Breaking change (fix or feature that would cause existing functionality to not work as expected)
14+
- [ ] Documentation update
15+
- [ ] Code refactoring (no functional changes)
16+
- [ ] Performance improvement
17+
- [ ] Test additions/improvements
18+
- [ ] CI/CD changes
19+
- [ ] Dependencies update
20+
21+
## Related Issues
22+
23+
<!-- Link to related issues using #issue_number -->
24+
25+
Closes #
26+
Related to #
27+
28+
## Changes Made
29+
30+
<!-- Provide a detailed list of changes -->
31+
32+
-
33+
-
34+
-
35+
36+
## Documentation
37+
38+
- [ ] I have updated the README.md (if needed)
39+
- [ ] I have updated TESTING.md (if test-related changes)
40+
- [ ] I have added/updated docstrings for new functions/classes
41+
- [ ] I have updated type hints/annotations
42+
- [ ] I have added comments for complex logic
43+
44+
45+
## Checklist
46+
47+
<!-- Final checklist before submitting -->
48+
49+
- [ ] I have read the [CONTRIBUTING](../CONTRIBUTING.md) guidelines
50+
- [ ] My branch is up to date with the target branch
51+
- [ ] I have resolved all merge conflicts
52+
- [ ] All CI/CD checks pass
53+
- [ ] Code has been reviewed by me
54+
- [ ] I have tested this on my local environment
55+
- [ ] Documentation is updated
56+
- [ ] Commit messages follow [Conventional Commits](https://www.conventionalcommits.org/)
57+
58+
<!--
59+
Thank you for contributing to PlotSense! 🎉
60+
Please ensure all checklist items are completed before requesting a review.
61+
-->

0 commit comments

Comments
 (0)