dotz 0.3.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- dotz-0.3.0/CHANGELOG.md +175 -0
- dotz-0.3.0/CONTRIBUTING.md +363 -0
- dotz-0.3.0/LICENSE +674 -0
- dotz-0.3.0/MANIFEST.in +9 -0
- dotz-0.3.0/PKG-INFO +514 -0
- dotz-0.3.0/README.md +470 -0
- dotz-0.3.0/pyproject.toml +167 -0
- dotz-0.3.0/setup.cfg +4 -0
- dotz-0.3.0/src/dotz/__init__.py +33 -0
- dotz-0.3.0/src/dotz/cli.py +1437 -0
- dotz-0.3.0/src/dotz/core.py +1925 -0
- dotz-0.3.0/src/dotz/watcher.py +136 -0
- dotz-0.3.0/src/dotz.egg-info/PKG-INFO +514 -0
- dotz-0.3.0/src/dotz.egg-info/SOURCES.txt +24 -0
- dotz-0.3.0/src/dotz.egg-info/dependency_links.txt +1 -0
- dotz-0.3.0/src/dotz.egg-info/entry_points.txt +2 -0
- dotz-0.3.0/src/dotz.egg-info/requires.txt +15 -0
- dotz-0.3.0/src/dotz.egg-info/top_level.txt +1 -0
- dotz-0.3.0/tests/__init__.py +1 -0
- dotz-0.3.0/tests/conftest.py +142 -0
- dotz-0.3.0/tests/run_tests.py +32 -0
- dotz-0.3.0/tests/test_cli.py +827 -0
- dotz-0.3.0/tests/test_core.py +660 -0
- dotz-0.3.0/tests/test_integration.py +454 -0
- dotz-0.3.0/tests/test_progress.py +288 -0
- dotz-0.3.0/tests/test_watcher.py +406 -0
dotz-0.3.0/CHANGELOG.md
ADDED
|
@@ -0,0 +1,175 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
All notable changes to this project will be documented in this file.
|
|
4
|
+
|
|
5
|
+
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
|
6
|
+
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
|
+
|
|
8
|
+
> **Note**: This project was renamed from "dotkeep" to "dotz" starting with version 0.4.0.
|
|
9
|
+
> Historical entries below may reference the old "dotkeep" command name.
|
|
10
|
+
|
|
11
|
+
## [Unreleased]
|
|
12
|
+
|
|
13
|
+
- **BREAKING**: Project renamed from "dotkeep" to "dotz"
|
|
14
|
+
- Command changed from `dotkeep` to `dotz`
|
|
15
|
+
- Configuration directory changed from `~/.dotkeep` to `~/.dotz`
|
|
16
|
+
- Package name changed from `dotkeepctl` to `dotz`
|
|
17
|
+
|
|
18
|
+
- Future features will be listed here
|
|
19
|
+
|
|
20
|
+
## [0.3.0] - 2025-07-05
|
|
21
|
+
|
|
22
|
+
### Professional release with comprehensive improvements and modern packaging
|
|
23
|
+
|
|
24
|
+
### Added
|
|
25
|
+
|
|
26
|
+
- Comprehensive test suite with 73+ passing tests
|
|
27
|
+
- Environment isolation for robust testing
|
|
28
|
+
- Configuration management system with `dotkeep config` commands
|
|
29
|
+
- File pattern customization (include/exclude patterns)
|
|
30
|
+
- Search settings configuration (recursive, case-sensitive, follow-symlinks)
|
|
31
|
+
- Improved error handling and diagnostics
|
|
32
|
+
- Modern Python packaging with `pyproject.toml`
|
|
33
|
+
- GitHub Actions CI/CD pipeline
|
|
34
|
+
- Professional documentation (CONTRIBUTING.md, PUBLISHING.md)
|
|
35
|
+
- Development tooling (Makefile, setup-dev.sh)
|
|
36
|
+
|
|
37
|
+
### Changed
|
|
38
|
+
|
|
39
|
+
- Refactored path management for better testability
|
|
40
|
+
- Updated license field in pyproject.toml to modern SPDX string format
|
|
41
|
+
- Enhanced fixtures for test isolation
|
|
42
|
+
- Improved documentation with configuration examples
|
|
43
|
+
- Professional CLI output (removed unprofessional emojis, kept ✓ marks)
|
|
44
|
+
- Complete rewrite for robustness and maintainability
|
|
45
|
+
|
|
46
|
+
### Fixed
|
|
47
|
+
|
|
48
|
+
- Test pollution issues between test runs
|
|
49
|
+
- Path resolution in different environments
|
|
50
|
+
- Configuration persistence and cleanup
|
|
51
|
+
|
|
52
|
+
## [0.2.0] - 2025-07-05
|
|
53
|
+
|
|
54
|
+
### Highlights
|
|
55
|
+
|
|
56
|
+
#### **Recursive Directory Support**
|
|
57
|
+
|
|
58
|
+
- Add all dotfiles in a directory and its subdirectories with `dotkeep add <dir>`
|
|
59
|
+
- Use `--no-recursive` to restrict to top-level dotfiles only
|
|
60
|
+
|
|
61
|
+
#### **Tracked Directories & Watcher**
|
|
62
|
+
|
|
63
|
+
- Only explicitly added directories are monitored for new dotfiles
|
|
64
|
+
- `dotkeep watch` automatically adds new dotfiles created in tracked directories
|
|
65
|
+
|
|
66
|
+
#### **Diagnostics**
|
|
67
|
+
|
|
68
|
+
- New `dotkeep diagnose` command checks for common setup and git issues, providing actionable guidance
|
|
69
|
+
|
|
70
|
+
#### **Enhanced Git Integration**
|
|
71
|
+
|
|
72
|
+
- Improved error messages for common git issues (e.g., divergent branches, missing upstream, rejected pushes)
|
|
73
|
+
- Upstream branch is set automatically on first push if needed
|
|
74
|
+
|
|
75
|
+
#### **Improved CLI Experience**
|
|
76
|
+
|
|
77
|
+
- `--quiet` flag suppresses output for scripting and automation
|
|
78
|
+
- `--push` flag available for `add`, `delete`, and `restore` to immediately push changes
|
|
79
|
+
- `dotkeep version` displays the current version
|
|
80
|
+
- `dotkeep --install-completion` enables shell tab-completion for all commands and options
|
|
81
|
+
|
|
82
|
+
#### **Commit Efficiency**
|
|
83
|
+
|
|
84
|
+
- Adding multiple dotfiles in a directory now results in a single commit, improving repository clarity
|
|
85
|
+
|
|
86
|
+
### Improvements & Fixes
|
|
87
|
+
|
|
88
|
+
- Robust handling of symlinks and prevention of watcher loops
|
|
89
|
+
- Tracked directories are automatically removed from tracking when all dotfiles inside are deleted
|
|
90
|
+
- Consistent, user-friendly CLI output
|
|
91
|
+
- Expanded and improved test suite for CLI and core logic
|
|
92
|
+
|
|
93
|
+
### Requirements
|
|
94
|
+
|
|
95
|
+
- Python 3.8+
|
|
96
|
+
- Git
|
|
97
|
+
|
|
98
|
+
### Installation
|
|
99
|
+
|
|
100
|
+
```bash
|
|
101
|
+
git clone https://github.com/tTrmc/dotkeep.git
|
|
102
|
+
cd dotkeep
|
|
103
|
+
pip install -e .
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
### Getting Started
|
|
107
|
+
|
|
108
|
+
```bash
|
|
109
|
+
dotkeep init
|
|
110
|
+
dotkeep add .bashrc
|
|
111
|
+
dotkeep status
|
|
112
|
+
dotkeep push
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
See the README for full usage instructions and advanced features.
|
|
116
|
+
|
|
117
|
+
## [0.1.0] - First Public Release
|
|
118
|
+
|
|
119
|
+
### dotkeep is a minimal, Git-backed dotfiles manager for Linux
|
|
120
|
+
|
|
121
|
+
This is the first public release.
|
|
122
|
+
|
|
123
|
+
### Features
|
|
124
|
+
|
|
125
|
+
- **Easy setup:**
|
|
126
|
+
Initialize your dotfiles repo with `dotkeep init`.
|
|
127
|
+
The Git repository is stored in `~/.dotkeep/repo`.
|
|
128
|
+
|
|
129
|
+
- **Git-based versioning:**
|
|
130
|
+
All changes are tracked with Git.
|
|
131
|
+
Supports local history, branching, and remote sync.
|
|
132
|
+
|
|
133
|
+
- **Add and remove dotfiles:**
|
|
134
|
+
- `dotkeep add <file>`: Copies a file into the repo, commits it, and symlinks it from your home directory.
|
|
135
|
+
- `dotkeep delete <file>`: Removes the symlink and the file from the repo and Git.
|
|
136
|
+
|
|
137
|
+
- **Symlink management:**
|
|
138
|
+
Automatically replaces managed files in `$HOME` with symlinks to the repo.
|
|
139
|
+
|
|
140
|
+
- **Status overview:**
|
|
141
|
+
`dotkeep status` shows untracked, modified, and staged files in your dotkeep repo.
|
|
142
|
+
|
|
143
|
+
- **Remote sync:**
|
|
144
|
+
- `dotkeep push`: Push all local commits to your remote.
|
|
145
|
+
- `dotkeep pull`: Pull and merge changes from your remote.
|
|
146
|
+
|
|
147
|
+
- **Restore files:**
|
|
148
|
+
`dotkeep restore <file>`: Re-create the symlink for a managed file if it's missing.
|
|
149
|
+
|
|
150
|
+
- **List tracked files:**
|
|
151
|
+
`dotkeep list-files`: See all files currently managed by dotkeep.
|
|
152
|
+
|
|
153
|
+
### Requirements (v0.1.0)
|
|
154
|
+
|
|
155
|
+
- Python 3.8+
|
|
156
|
+
- Git
|
|
157
|
+
|
|
158
|
+
### Installation (v0.1.0)
|
|
159
|
+
|
|
160
|
+
```bash
|
|
161
|
+
git clone https://github.com/tTrmc/dotkeep.git
|
|
162
|
+
cd dotkeep
|
|
163
|
+
pip install -e .
|
|
164
|
+
```
|
|
165
|
+
|
|
166
|
+
### Getting Started (v0.1.0)
|
|
167
|
+
|
|
168
|
+
```bash
|
|
169
|
+
dotkeep init
|
|
170
|
+
dotkeep add .bashrc
|
|
171
|
+
dotkeep status
|
|
172
|
+
dotkeep push
|
|
173
|
+
```
|
|
174
|
+
|
|
175
|
+
See the README for full usage instructions.
|
|
@@ -0,0 +1,363 @@
|
|
|
1
|
+
# Contributing to dotz
|
|
2
|
+
|
|
3
|
+
Thank you for your interest in contributing to dotz! I welcome all pull requests, bug reports, and feature suggestions.
|
|
4
|
+
|
|
5
|
+
## Table of Contents
|
|
6
|
+
|
|
7
|
+
* [Getting Started](#getting-started)
|
|
8
|
+
* [Development Setup](#development-setup)
|
|
9
|
+
* [Development Tools](#development-tools)
|
|
10
|
+
* [Code Style](#code-style)
|
|
11
|
+
* [Testing](#testing)
|
|
12
|
+
* [Commit Guidelines](#commit-guidelines)
|
|
13
|
+
* [Pull Requests](#pull-requests)
|
|
14
|
+
* [Reporting Issues](#reporting-issues)
|
|
15
|
+
* [Feature Requests](#feature-requests)
|
|
16
|
+
|
|
17
|
+
## Getting Started
|
|
18
|
+
|
|
19
|
+
1. **Fork the repository** on GitHub
|
|
20
|
+
2. **Clone your fork** locally:
|
|
21
|
+
|
|
22
|
+
```bash
|
|
23
|
+
git clone https://github.com/yourusername/dotz.git
|
|
24
|
+
cd dotz
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
3. **Set up the development environment**:
|
|
28
|
+
|
|
29
|
+
```bash
|
|
30
|
+
./setup-dev.sh # This sets up virtual environment and installs dependencies
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
Or manually:
|
|
34
|
+
|
|
35
|
+
```bash
|
|
36
|
+
python -m venv .venv
|
|
37
|
+
source .venv/bin/activate # On Windows: .venv\Scripts\activate
|
|
38
|
+
pip install -e ".[dev,test]"
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
4. **Create a new branch** for your changes:
|
|
42
|
+
|
|
43
|
+
```bash
|
|
44
|
+
git checkout -b feature/my-new-feature
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
5. **Make your changes** locally in this new branch
|
|
48
|
+
6. **Test your changes** thoroughly
|
|
49
|
+
7. **Submit a pull request**
|
|
50
|
+
|
|
51
|
+
## Development Setup
|
|
52
|
+
|
|
53
|
+
### Prerequisites
|
|
54
|
+
|
|
55
|
+
* Python 3.9 or newer
|
|
56
|
+
* Git
|
|
57
|
+
* Virtual environment (recommended)
|
|
58
|
+
|
|
59
|
+
### Quick Setup
|
|
60
|
+
|
|
61
|
+
```bash
|
|
62
|
+
git clone https://github.com/yourusername/dotz.git
|
|
63
|
+
cd dotz
|
|
64
|
+
./setup-dev.sh
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
This will:
|
|
68
|
+
|
|
69
|
+
* Create a virtual environment
|
|
70
|
+
* Install development dependencies
|
|
71
|
+
* Set up pre-commit hooks (if available)
|
|
72
|
+
* Run initial tests to verify setup
|
|
73
|
+
|
|
74
|
+
## Development Tools
|
|
75
|
+
|
|
76
|
+
This project uses modern Python development tools:
|
|
77
|
+
|
|
78
|
+
* **pytest**: Testing framework with comprehensive coverage
|
|
79
|
+
* **black**: Code formatting for consistent style
|
|
80
|
+
* **isort**: Import sorting and organization
|
|
81
|
+
* **flake8**: Linting for code quality
|
|
82
|
+
* **mypy**: Static type checking
|
|
83
|
+
* **GitHub Actions**: Automated CI/CD pipeline
|
|
84
|
+
|
|
85
|
+
### Running Development Commands
|
|
86
|
+
|
|
87
|
+
```bash
|
|
88
|
+
make help # Show all available commands
|
|
89
|
+
make test # Run the complete test suite
|
|
90
|
+
make lint # Check code style and quality
|
|
91
|
+
make format # Auto-format code with black and isort
|
|
92
|
+
make type-check # Run mypy type checking
|
|
93
|
+
make build # Build distribution packages
|
|
94
|
+
make clean # Clean build artifacts
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
Run all quality checks:
|
|
98
|
+
|
|
99
|
+
```bash
|
|
100
|
+
make test lint type-check
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
## Code Style
|
|
104
|
+
|
|
105
|
+
### Python Code Guidelines
|
|
106
|
+
|
|
107
|
+
* Follow [PEP 8](https://peps.python.org/pep-0008/) guidelines
|
|
108
|
+
* Use type hints for function parameters and return values
|
|
109
|
+
* Write docstrings for public functions and classes
|
|
110
|
+
* Keep functions focused and reasonably sized
|
|
111
|
+
* Use descriptive variable and function names
|
|
112
|
+
|
|
113
|
+
### Formatting
|
|
114
|
+
|
|
115
|
+
Code is automatically formatted using **black** and **isort**:
|
|
116
|
+
|
|
117
|
+
```bash
|
|
118
|
+
make format # Auto-format all code
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
### Import Organization
|
|
122
|
+
|
|
123
|
+
* Standard library imports first
|
|
124
|
+
* Third-party imports second
|
|
125
|
+
* Local/project imports last
|
|
126
|
+
* Use absolute imports when possible
|
|
127
|
+
|
|
128
|
+
Example:
|
|
129
|
+
|
|
130
|
+
```python
|
|
131
|
+
import os
|
|
132
|
+
import sys
|
|
133
|
+
from pathlib import Path
|
|
134
|
+
|
|
135
|
+
import typer
|
|
136
|
+
from git import Repo
|
|
137
|
+
|
|
138
|
+
from dotz.core import DotzCore
|
|
139
|
+
```
|
|
140
|
+
|
|
141
|
+
## Testing
|
|
142
|
+
|
|
143
|
+
### Running Tests
|
|
144
|
+
|
|
145
|
+
```bash
|
|
146
|
+
# Run all tests
|
|
147
|
+
pytest
|
|
148
|
+
|
|
149
|
+
# Run with verbose output
|
|
150
|
+
pytest -v
|
|
151
|
+
|
|
152
|
+
# Run with coverage report
|
|
153
|
+
pytest --cov=dotz
|
|
154
|
+
|
|
155
|
+
# Run specific test file
|
|
156
|
+
pytest tests/test_core.py
|
|
157
|
+
|
|
158
|
+
# Run specific test
|
|
159
|
+
pytest tests/test_core.py::test_init_repo
|
|
160
|
+
```
|
|
161
|
+
|
|
162
|
+
### Writing Tests
|
|
163
|
+
|
|
164
|
+
When adding new features or fixing bugs:
|
|
165
|
+
|
|
166
|
+
* **Add tests** for new functionality
|
|
167
|
+
* **Follow existing patterns** in the test suite
|
|
168
|
+
* **Use descriptive test names** that explain what is being tested
|
|
169
|
+
* **Test both success and failure scenarios**
|
|
170
|
+
* **Ensure tests are isolated** and don't depend on external state
|
|
171
|
+
* **Mock external dependencies** when appropriate
|
|
172
|
+
|
|
173
|
+
Test file structure:
|
|
174
|
+
|
|
175
|
+
```python
|
|
176
|
+
import pytest
|
|
177
|
+
from unittest.mock import Mock, patch
|
|
178
|
+
|
|
179
|
+
from dotz.core import DotzCore
|
|
180
|
+
|
|
181
|
+
|
|
182
|
+
class TestFeatureName:
|
|
183
|
+
def test_successful_operation(self):
|
|
184
|
+
# Test the happy path
|
|
185
|
+
pass
|
|
186
|
+
|
|
187
|
+
def test_handles_error_condition(self):
|
|
188
|
+
# Test error handling
|
|
189
|
+
pass
|
|
190
|
+
```
|
|
191
|
+
|
|
192
|
+
### Test Environment
|
|
193
|
+
|
|
194
|
+
* Tests run in isolated temporary directories
|
|
195
|
+
* No interference with your actual dotz configuration
|
|
196
|
+
* Automatic cleanup after test completion
|
|
197
|
+
|
|
198
|
+
## Commit Guidelines
|
|
199
|
+
|
|
200
|
+
### Commit Message Format
|
|
201
|
+
|
|
202
|
+
Use clear, descriptive commit messages:
|
|
203
|
+
|
|
204
|
+
* **Use imperative mood**: "Add feature" not "Added feature"
|
|
205
|
+
* **Be specific**: Explain what changed and why
|
|
206
|
+
* **Keep first line under 72 characters**
|
|
207
|
+
* **Add detail in body if needed**
|
|
208
|
+
|
|
209
|
+
Good examples:
|
|
210
|
+
|
|
211
|
+
```text
|
|
212
|
+
Add support for encrypted backup storage
|
|
213
|
+
|
|
214
|
+
Fix symlink validation for broken links
|
|
215
|
+
|
|
216
|
+
Update documentation for new config options
|
|
217
|
+
|
|
218
|
+
Refactor file pattern matching for better performance
|
|
219
|
+
```
|
|
220
|
+
|
|
221
|
+
### Commit Organization
|
|
222
|
+
|
|
223
|
+
* **One logical change per commit**
|
|
224
|
+
* **Group related changes together**
|
|
225
|
+
* **Separate formatting changes from logic changes**
|
|
226
|
+
* **Include tests with the feature they test**
|
|
227
|
+
|
|
228
|
+
## Pull Requests
|
|
229
|
+
|
|
230
|
+
### Before Submitting
|
|
231
|
+
|
|
232
|
+
1. **Ensure all tests pass**:
|
|
233
|
+
|
|
234
|
+
```bash
|
|
235
|
+
make test
|
|
236
|
+
```
|
|
237
|
+
|
|
238
|
+
2. **Check code quality**:
|
|
239
|
+
|
|
240
|
+
```bash
|
|
241
|
+
make lint
|
|
242
|
+
```
|
|
243
|
+
|
|
244
|
+
3. **Format your code**:
|
|
245
|
+
|
|
246
|
+
```bash
|
|
247
|
+
make format
|
|
248
|
+
```
|
|
249
|
+
|
|
250
|
+
4. **Update documentation** if needed
|
|
251
|
+
|
|
252
|
+
### Submitting Your PR
|
|
253
|
+
|
|
254
|
+
1. **Push your branch** to your fork:
|
|
255
|
+
|
|
256
|
+
```bash
|
|
257
|
+
git push -u origin feature/my-new-feature
|
|
258
|
+
```
|
|
259
|
+
|
|
260
|
+
2. **Open a pull request** on GitHub with:
|
|
261
|
+
|
|
262
|
+
* Clear description of changes
|
|
263
|
+
* Link to related issues (if any)
|
|
264
|
+
* Screenshots or examples (if relevant)
|
|
265
|
+
* Testing instructions (if needed)
|
|
266
|
+
|
|
267
|
+
### PR Review Process
|
|
268
|
+
|
|
269
|
+
* I'll review PRs as soon as possible
|
|
270
|
+
* May request changes or ask questions
|
|
271
|
+
* Once approved, I'll merge the changes
|
|
272
|
+
* Your contribution will be acknowledged
|
|
273
|
+
|
|
274
|
+
## Reporting Issues
|
|
275
|
+
|
|
276
|
+
### Bug Reports
|
|
277
|
+
|
|
278
|
+
When reporting bugs, please include:
|
|
279
|
+
|
|
280
|
+
* **Clear description** of the problem
|
|
281
|
+
* **Steps to reproduce** the issue
|
|
282
|
+
* **Expected vs actual behavior**
|
|
283
|
+
* **Environment information**:
|
|
284
|
+
* Operating system and version
|
|
285
|
+
* Python version (`python --version`)
|
|
286
|
+
* dotz version (`dotz version`)
|
|
287
|
+
* Relevant configuration details
|
|
288
|
+
* **Error messages or logs** (if any)
|
|
289
|
+
* **Additional context** that might be helpful
|
|
290
|
+
|
|
291
|
+
### Issue Templates
|
|
292
|
+
|
|
293
|
+
Use the provided issue templates when available:
|
|
294
|
+
|
|
295
|
+
* **Bug Report**: For reporting problems
|
|
296
|
+
* **Feature Request**: For suggesting new features
|
|
297
|
+
* **Documentation**: For documentation improvements
|
|
298
|
+
|
|
299
|
+
## Feature Requests
|
|
300
|
+
|
|
301
|
+
When suggesting new features:
|
|
302
|
+
|
|
303
|
+
* **Describe the use case**: What problem does this solve?
|
|
304
|
+
* **Provide examples**: How would you use this feature?
|
|
305
|
+
* **Consider alternatives**: Are there existing ways to achieve this?
|
|
306
|
+
* **Think about implementation**: Any ideas on how it could work?
|
|
307
|
+
|
|
308
|
+
### Feature Discussion
|
|
309
|
+
|
|
310
|
+
* Features are discussed in GitHub issues
|
|
311
|
+
* Community input is welcome
|
|
312
|
+
* Implementation complexity is considered
|
|
313
|
+
* Backward compatibility is important
|
|
314
|
+
|
|
315
|
+
## Development Guidelines
|
|
316
|
+
|
|
317
|
+
### Project Goals
|
|
318
|
+
|
|
319
|
+
Keep these principles in mind:
|
|
320
|
+
|
|
321
|
+
* **Simplicity**: dotz should be easy to use and understand
|
|
322
|
+
* **Reliability**: Robust error handling and comprehensive testing
|
|
323
|
+
* **Performance**: Efficient operations, especially for large configurations
|
|
324
|
+
* **Compatibility**: Support for different Linux distributions and Python versions
|
|
325
|
+
* **Security**: Safe handling of sensitive configuration files
|
|
326
|
+
|
|
327
|
+
### Code Organization
|
|
328
|
+
|
|
329
|
+
* **Keep modules focused**: Each module should have a clear purpose
|
|
330
|
+
* **Minimize dependencies**: Only add dependencies when necessary
|
|
331
|
+
* **Document interfaces**: Clear function and class documentation
|
|
332
|
+
* **Handle errors gracefully**: Provide helpful error messages
|
|
333
|
+
|
|
334
|
+
## Getting Help
|
|
335
|
+
|
|
336
|
+
### Resources
|
|
337
|
+
|
|
338
|
+
* **README.md**: Project overview and basic usage
|
|
339
|
+
* **Issues**: Search existing issues for similar problems
|
|
340
|
+
* **Code**: Read the source code for implementation details
|
|
341
|
+
* **Tests**: Look at tests for usage examples
|
|
342
|
+
|
|
343
|
+
### Communication
|
|
344
|
+
|
|
345
|
+
* **GitHub Issues**: Primary communication channel
|
|
346
|
+
* **Pull Request discussions**: For code-specific questions
|
|
347
|
+
* **Email**: For security issues only (see SECURITY.md)
|
|
348
|
+
|
|
349
|
+
### Response Times
|
|
350
|
+
|
|
351
|
+
* I aim to respond to issues and PRs within a few days
|
|
352
|
+
* Complex changes may take longer to review
|
|
353
|
+
* Feel free to ping if you haven't heard back in a week
|
|
354
|
+
|
|
355
|
+
## Recognition
|
|
356
|
+
|
|
357
|
+
Contributors are acknowledged in:
|
|
358
|
+
|
|
359
|
+
* **README.md acknowledgments section**
|
|
360
|
+
* **Git commit history**
|
|
361
|
+
* **Release notes** (for significant contributions)
|
|
362
|
+
|
|
363
|
+
Thank you for helping make dotz better!
|