issuedb 1.0.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.
- issuedb-1.0.0/LICENSE +21 -0
- issuedb-1.0.0/PKG-INFO +414 -0
- issuedb-1.0.0/README.md +384 -0
- issuedb-1.0.0/issuedb/__init__.py +9 -0
- issuedb-1.0.0/issuedb/cli.py +520 -0
- issuedb-1.0.0/issuedb/database.py +194 -0
- issuedb-1.0.0/issuedb/models.py +136 -0
- issuedb-1.0.0/issuedb/py.typed +0 -0
- issuedb-1.0.0/issuedb/repository.py +467 -0
- issuedb-1.0.0/issuedb.egg-info/PKG-INFO +414 -0
- issuedb-1.0.0/issuedb.egg-info/SOURCES.txt +18 -0
- issuedb-1.0.0/issuedb.egg-info/dependency_links.txt +1 -0
- issuedb-1.0.0/issuedb.egg-info/entry_points.txt +2 -0
- issuedb-1.0.0/issuedb.egg-info/top_level.txt +1 -0
- issuedb-1.0.0/pyproject.toml +93 -0
- issuedb-1.0.0/setup.cfg +4 -0
- issuedb-1.0.0/tests/test_cli.py +236 -0
- issuedb-1.0.0/tests/test_database.py +187 -0
- issuedb-1.0.0/tests/test_models.py +180 -0
- issuedb-1.0.0/tests/test_repository.py +278 -0
issuedb-1.0.0/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2025 IssueDB Contributors
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
issuedb-1.0.0/PKG-INFO
ADDED
|
@@ -0,0 +1,414 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: issuedb
|
|
3
|
+
Version: 1.0.0
|
|
4
|
+
Summary: A command-line issue tracking system for software development projects
|
|
5
|
+
Author-email: Farshid Ashouri <farsheed.ashouri@gmail.com>
|
|
6
|
+
Maintainer-email: Farshid Ashouri <farsheed.ashouri@gmail.com>
|
|
7
|
+
License-Expression: MIT
|
|
8
|
+
Project-URL: Homepage, https://github.com/rodmena-limited/issue-queue
|
|
9
|
+
Project-URL: Bug Tracker, https://github.com/rodmena-limited/issue-queue/issues
|
|
10
|
+
Project-URL: Source, https://github.com/rodmena-limited/issue-queue
|
|
11
|
+
Keywords: issue tracking,task management,cli,project management
|
|
12
|
+
Classifier: Development Status :: 5 - Production/Stable
|
|
13
|
+
Classifier: Intended Audience :: Developers
|
|
14
|
+
Classifier: Operating System :: OS Independent
|
|
15
|
+
Classifier: Programming Language :: Python :: 3
|
|
16
|
+
Classifier: Programming Language :: Python :: 3.8
|
|
17
|
+
Classifier: Programming Language :: Python :: 3.9
|
|
18
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
19
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
20
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
21
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
22
|
+
Classifier: Programming Language :: Python :: 3.14
|
|
23
|
+
Classifier: Topic :: Software Development :: Bug Tracking
|
|
24
|
+
Classifier: Topic :: Utilities
|
|
25
|
+
Classifier: Environment :: Console
|
|
26
|
+
Requires-Python: >=3.8
|
|
27
|
+
Description-Content-Type: text/markdown
|
|
28
|
+
License-File: LICENSE
|
|
29
|
+
Dynamic: license-file
|
|
30
|
+
|
|
31
|
+
# IssueDB
|
|
32
|
+
|
|
33
|
+
A command-line issue tracking system for software development projects. IssueDB provides a simple yet concrete way to manage issues, bugs, and tasks directly from your terminal.
|
|
34
|
+
|
|
35
|
+
## Features
|
|
36
|
+
|
|
37
|
+
- **Simple Issue Management**: Create, update, delete, and list issues
|
|
38
|
+
- **Project-based Organization**: Group issues by project
|
|
39
|
+
- **Priority Levels**: Categorize issues as low, medium, high, or critical
|
|
40
|
+
- **Status Tracking**: Track issues through open, in-progress, and closed states
|
|
41
|
+
- **FIFO Queue Management**: Get the next issue to work on based on priority and creation date
|
|
42
|
+
- **Full-text Search**: Search issues by keyword in title and description
|
|
43
|
+
- **Audit Logging**: Complete immutable history of all changes
|
|
44
|
+
- **JSON Output**: Machine-readable output for scripting and automation
|
|
45
|
+
- **Local Storage**: SQLite database stored locally with no external dependencies
|
|
46
|
+
|
|
47
|
+
## Installation
|
|
48
|
+
|
|
49
|
+
### From PyPI (when published)
|
|
50
|
+
|
|
51
|
+
```bash
|
|
52
|
+
pip install issuedb
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
### From Source
|
|
56
|
+
|
|
57
|
+
```bash
|
|
58
|
+
git clone https://github.com/rodmena-limited/issue-queue
|
|
59
|
+
cd issuedb
|
|
60
|
+
pip install -e .
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
## Quick Start
|
|
64
|
+
|
|
65
|
+
### Create your first issue
|
|
66
|
+
|
|
67
|
+
```bash
|
|
68
|
+
issuedb-cli create --title "Fix login bug" --project MyApp --description "Users cannot log in with special characters" --priority high
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
### List all open issues
|
|
72
|
+
|
|
73
|
+
```bash
|
|
74
|
+
issuedb-cli list --status open
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
### Get the next issue to work on
|
|
78
|
+
|
|
79
|
+
```bash
|
|
80
|
+
issuedb-cli get-next --project MyApp
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
## Usage
|
|
84
|
+
|
|
85
|
+
### Creating Issues
|
|
86
|
+
|
|
87
|
+
Create a new issue with required title and project:
|
|
88
|
+
|
|
89
|
+
```bash
|
|
90
|
+
issuedb-cli create -t "Add user authentication" -p WebApp
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
With additional details:
|
|
94
|
+
|
|
95
|
+
```bash
|
|
96
|
+
issuedb-cli create \
|
|
97
|
+
--title "Implement OAuth2" \
|
|
98
|
+
--project WebApp \
|
|
99
|
+
--description "Add Google and GitHub OAuth providers" \
|
|
100
|
+
--priority high \
|
|
101
|
+
--status open
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
### Listing Issues
|
|
105
|
+
|
|
106
|
+
List all issues:
|
|
107
|
+
|
|
108
|
+
```bash
|
|
109
|
+
issuedb-cli list
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
Filter by project:
|
|
113
|
+
|
|
114
|
+
```bash
|
|
115
|
+
issuedb-cli list --project WebApp
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
Filter by status and priority:
|
|
119
|
+
|
|
120
|
+
```bash
|
|
121
|
+
issuedb-cli list --status open --priority high
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
Limit results:
|
|
125
|
+
|
|
126
|
+
```bash
|
|
127
|
+
issuedb-cli list --limit 10
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
### Getting Issue Details
|
|
131
|
+
|
|
132
|
+
View a specific issue:
|
|
133
|
+
|
|
134
|
+
```bash
|
|
135
|
+
issuedb-cli get 42
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
### Updating Issues
|
|
139
|
+
|
|
140
|
+
Update issue status:
|
|
141
|
+
|
|
142
|
+
```bash
|
|
143
|
+
issuedb-cli update 42 --status in-progress
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
Update multiple fields:
|
|
147
|
+
|
|
148
|
+
```bash
|
|
149
|
+
issuedb-cli update 42 \
|
|
150
|
+
--title "Updated title" \
|
|
151
|
+
--priority critical \
|
|
152
|
+
--status in-progress
|
|
153
|
+
```
|
|
154
|
+
|
|
155
|
+
### Deleting Issues
|
|
156
|
+
|
|
157
|
+
Delete an issue (with audit trail preserved):
|
|
158
|
+
|
|
159
|
+
```bash
|
|
160
|
+
issuedb-cli delete 42
|
|
161
|
+
```
|
|
162
|
+
|
|
163
|
+
### Getting Next Issue
|
|
164
|
+
|
|
165
|
+
Get the highest priority oldest issue:
|
|
166
|
+
|
|
167
|
+
```bash
|
|
168
|
+
issuedb-cli get-next
|
|
169
|
+
```
|
|
170
|
+
|
|
171
|
+
For a specific project:
|
|
172
|
+
|
|
173
|
+
```bash
|
|
174
|
+
issuedb-cli get-next --project WebApp
|
|
175
|
+
```
|
|
176
|
+
|
|
177
|
+
### Searching Issues
|
|
178
|
+
|
|
179
|
+
Search by keyword:
|
|
180
|
+
|
|
181
|
+
```bash
|
|
182
|
+
issuedb-cli search --keyword "login" --project WebApp
|
|
183
|
+
```
|
|
184
|
+
|
|
185
|
+
### Clearing Project Issues
|
|
186
|
+
|
|
187
|
+
Clear all issues for a project (requires confirmation):
|
|
188
|
+
|
|
189
|
+
```bash
|
|
190
|
+
issuedb-cli clear --project OldProject --confirm
|
|
191
|
+
```
|
|
192
|
+
|
|
193
|
+
### Viewing Audit Logs
|
|
194
|
+
|
|
195
|
+
View all changes for an issue:
|
|
196
|
+
|
|
197
|
+
```bash
|
|
198
|
+
issuedb-cli audit --issue 42
|
|
199
|
+
```
|
|
200
|
+
|
|
201
|
+
View all changes in a project:
|
|
202
|
+
|
|
203
|
+
```bash
|
|
204
|
+
issuedb-cli audit --project WebApp
|
|
205
|
+
```
|
|
206
|
+
|
|
207
|
+
### Database Information
|
|
208
|
+
|
|
209
|
+
Get database statistics:
|
|
210
|
+
|
|
211
|
+
```bash
|
|
212
|
+
issuedb-cli info
|
|
213
|
+
```
|
|
214
|
+
|
|
215
|
+
## JSON Output
|
|
216
|
+
|
|
217
|
+
All commands support JSON output for scripting and automation:
|
|
218
|
+
|
|
219
|
+
```bash
|
|
220
|
+
issuedb-cli list --project WebApp --json | jq '.[].title'
|
|
221
|
+
```
|
|
222
|
+
|
|
223
|
+
```bash
|
|
224
|
+
issuedb-cli get-next --json | jq '.id'
|
|
225
|
+
```
|
|
226
|
+
|
|
227
|
+
## Command Reference
|
|
228
|
+
|
|
229
|
+
### Commands
|
|
230
|
+
|
|
231
|
+
- `create` - Create a new issue
|
|
232
|
+
- `list` - List issues with optional filters
|
|
233
|
+
- `get` - Get details of a specific issue
|
|
234
|
+
- `update` - Update issue fields
|
|
235
|
+
- `delete` - Delete an issue
|
|
236
|
+
- `get-next` - Get the next issue to work on
|
|
237
|
+
- `search` - Search issues by keyword
|
|
238
|
+
- `clear` - Clear all issues for a project
|
|
239
|
+
- `audit` - View audit logs
|
|
240
|
+
- `info` - Get database information
|
|
241
|
+
|
|
242
|
+
### Global Options
|
|
243
|
+
|
|
244
|
+
- `--db PATH` - Use a custom database file (default: ~/.issuedb/issuedb.sqlite)
|
|
245
|
+
- `--json` - Output results in JSON format
|
|
246
|
+
|
|
247
|
+
### Priority Levels
|
|
248
|
+
|
|
249
|
+
- `low` - Low priority
|
|
250
|
+
- `medium` - Medium priority (default)
|
|
251
|
+
- `high` - High priority
|
|
252
|
+
- `critical` - Critical priority
|
|
253
|
+
|
|
254
|
+
### Status Values
|
|
255
|
+
|
|
256
|
+
- `open` - Issue is open (default)
|
|
257
|
+
- `in-progress` - Issue is being worked on
|
|
258
|
+
- `closed` - Issue is resolved
|
|
259
|
+
|
|
260
|
+
## Examples
|
|
261
|
+
|
|
262
|
+
### Example Workflow
|
|
263
|
+
|
|
264
|
+
```bash
|
|
265
|
+
# Create a new project's issues
|
|
266
|
+
issuedb-cli create -t "Setup CI/CD pipeline" -p DevOps --priority high
|
|
267
|
+
issuedb-cli create -t "Add unit tests" -p DevOps --priority medium
|
|
268
|
+
issuedb-cli create -t "Update documentation" -p DevOps --priority low
|
|
269
|
+
|
|
270
|
+
# Get the next issue to work on
|
|
271
|
+
issuedb-cli get-next -p DevOps
|
|
272
|
+
|
|
273
|
+
# Start working on it
|
|
274
|
+
issuedb-cli update 1 --status in-progress
|
|
275
|
+
|
|
276
|
+
# Complete the issue
|
|
277
|
+
issuedb-cli update 1 --status closed
|
|
278
|
+
|
|
279
|
+
# Check remaining open issues
|
|
280
|
+
issuedb-cli list -p DevOps --status open
|
|
281
|
+
```
|
|
282
|
+
|
|
283
|
+
### Integration with Scripts
|
|
284
|
+
|
|
285
|
+
```bash
|
|
286
|
+
#!/bin/bash
|
|
287
|
+
# Get next issue ID and mark it as in-progress
|
|
288
|
+
ISSUE_ID=$(issuedb-cli get-next --project MyApp --json | jq -r '.id')
|
|
289
|
+
if [ "$ISSUE_ID" != "null" ]; then
|
|
290
|
+
echo "Working on issue $ISSUE_ID"
|
|
291
|
+
issuedb-cli update $ISSUE_ID --status in-progress
|
|
292
|
+
fi
|
|
293
|
+
```
|
|
294
|
+
|
|
295
|
+
### LLM Agent Integration
|
|
296
|
+
|
|
297
|
+
IssueDB is designed to be easily used by LLM agents:
|
|
298
|
+
|
|
299
|
+
```python
|
|
300
|
+
import subprocess
|
|
301
|
+
import json
|
|
302
|
+
|
|
303
|
+
def get_next_issue(project):
|
|
304
|
+
result = subprocess.run(
|
|
305
|
+
["issuedb-cli", "get-next", "--project", project, "--json"],
|
|
306
|
+
capture_output=True,
|
|
307
|
+
text=True
|
|
308
|
+
)
|
|
309
|
+
return json.loads(result.stdout) if result.returncode == 0 else None
|
|
310
|
+
|
|
311
|
+
def create_issue(title, project, description=None, priority="medium"):
|
|
312
|
+
cmd = ["issuedb-cli", "create",
|
|
313
|
+
"--title", title,
|
|
314
|
+
"--project", project,
|
|
315
|
+
"--priority", priority,
|
|
316
|
+
"--json"]
|
|
317
|
+
if description:
|
|
318
|
+
cmd.extend(["--description", description])
|
|
319
|
+
|
|
320
|
+
result = subprocess.run(cmd, capture_output=True, text=True)
|
|
321
|
+
return json.loads(result.stdout) if result.returncode == 0 else None
|
|
322
|
+
```
|
|
323
|
+
|
|
324
|
+
## Database
|
|
325
|
+
|
|
326
|
+
IssueDB uses a local SQLite database stored at `~/.issuedb/issuedb.sqlite`. The database includes:
|
|
327
|
+
|
|
328
|
+
- **issues** table - Stores all issue data
|
|
329
|
+
- **audit_logs** table - Immutable audit trail of all changes
|
|
330
|
+
- Comprehensive indexes for optimal query performance
|
|
331
|
+
|
|
332
|
+
The database is automatically created on first use.
|
|
333
|
+
|
|
334
|
+
## Testing
|
|
335
|
+
|
|
336
|
+
Run the test suite:
|
|
337
|
+
|
|
338
|
+
```bash
|
|
339
|
+
pytest
|
|
340
|
+
```
|
|
341
|
+
|
|
342
|
+
Run with coverage:
|
|
343
|
+
|
|
344
|
+
```bash
|
|
345
|
+
pytest --cov=issuedb
|
|
346
|
+
```
|
|
347
|
+
|
|
348
|
+
## Development
|
|
349
|
+
|
|
350
|
+
### Setup Development Environment
|
|
351
|
+
|
|
352
|
+
```bash
|
|
353
|
+
# Clone the repository
|
|
354
|
+
git clone https://github.com/yourusername/issuedb
|
|
355
|
+
cd issuedb
|
|
356
|
+
|
|
357
|
+
# Create virtual environment
|
|
358
|
+
python -m venv venv
|
|
359
|
+
source venv/bin/activate # On Windows: venv\Scripts\activate
|
|
360
|
+
|
|
361
|
+
# Install in development mode
|
|
362
|
+
pip install -e .
|
|
363
|
+
pip install pytest pytest-cov ruff
|
|
364
|
+
```
|
|
365
|
+
|
|
366
|
+
### Code Formatting and Linting
|
|
367
|
+
|
|
368
|
+
```bash
|
|
369
|
+
# Format code
|
|
370
|
+
ruff format .
|
|
371
|
+
|
|
372
|
+
# Check linting
|
|
373
|
+
ruff check .
|
|
374
|
+
```
|
|
375
|
+
|
|
376
|
+
### Running Tests
|
|
377
|
+
|
|
378
|
+
```bash
|
|
379
|
+
# Run all tests
|
|
380
|
+
pytest
|
|
381
|
+
|
|
382
|
+
# Run specific test file
|
|
383
|
+
pytest tests/test_repository.py
|
|
384
|
+
|
|
385
|
+
# Run with verbose output
|
|
386
|
+
pytest -v
|
|
387
|
+
```
|
|
388
|
+
|
|
389
|
+
## License
|
|
390
|
+
|
|
391
|
+
MIT License - See LICENSE file for details
|
|
392
|
+
|
|
393
|
+
## Contributing
|
|
394
|
+
|
|
395
|
+
1. Fork the repository
|
|
396
|
+
2. Create a feature branch (`git checkout -b feature/amazing-feature`)
|
|
397
|
+
3. Commit your changes (`git commit -m 'Add amazing feature'`)
|
|
398
|
+
4. Push to the branch (`git push origin feature/amazing-feature`)
|
|
399
|
+
5. Open a Pull Request
|
|
400
|
+
|
|
401
|
+
## Support
|
|
402
|
+
|
|
403
|
+
For issues, questions, or suggestions, please open an issue on GitHub.
|
|
404
|
+
|
|
405
|
+
## Roadmap
|
|
406
|
+
|
|
407
|
+
- [ ] Export/import functionality
|
|
408
|
+
- [ ] Issue templates
|
|
409
|
+
- [ ] Tags/labels support
|
|
410
|
+
- [ ] Due dates
|
|
411
|
+
- [ ] Issue relationships (blocks, depends on)
|
|
412
|
+
- [ ] Statistics and reporting
|
|
413
|
+
- [ ] Web UI (optional)
|
|
414
|
+
- [ ] Backup and restore utilities
|