fancygit 1.0.22__tar.gz → 1.0.23__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.
Files changed (72) hide show
  1. fancygit-1.0.23/.fancygit_config +4 -0
  2. {fancygit-1.0.22 → fancygit-1.0.23}/MANIFEST.in +0 -1
  3. {fancygit-1.0.22/fancygit.egg-info → fancygit-1.0.23}/PKG-INFO +44 -1
  4. {fancygit-1.0.22 → fancygit-1.0.23}/README.md +42 -0
  5. fancygit-1.0.23/VERSION +1 -0
  6. {fancygit-1.0.22 → fancygit-1.0.23}/command-list.txt +5 -2
  7. {fancygit-1.0.22 → fancygit-1.0.23/fancygit.egg-info}/PKG-INFO +44 -1
  8. {fancygit-1.0.22 → fancygit-1.0.23}/fancygit.egg-info/SOURCES.txt +4 -21
  9. fancygit-1.0.23/fancygit.egg-info/requires.txt +2 -0
  10. fancygit-1.0.23/fancygit.py +1627 -0
  11. {fancygit-1.0.22 → fancygit-1.0.23}/setup.py +1 -16
  12. {fancygit-1.0.22 → fancygit-1.0.23}/src/mermaid_export.py +2 -85
  13. fancygit-1.0.23/src/ollama_client.py +343 -0
  14. fancygit-1.0.23/src/quiz_html_generator.py +1854 -0
  15. fancygit-1.0.23/src/quiz_manager.py +305 -0
  16. fancygit-1.0.23/tests/conftest.py +61 -0
  17. {fancygit-1.0.22 → fancygit-1.0.23}/tests/test_conflict_parser_integration.py +4 -6
  18. {fancygit-1.0.22 → fancygit-1.0.23}/tests/test_fancygit_advanced.py +15 -16
  19. {fancygit-1.0.22 → fancygit-1.0.23}/tests/test_fancygit_commands.py +45 -42
  20. {fancygit-1.0.22 → fancygit-1.0.23}/tests/test_fancygit_integration.py +15 -20
  21. {fancygit-1.0.22 → fancygit-1.0.23}/tests/test_fancygit_workflows.py +33 -34
  22. {fancygit-1.0.22 → fancygit-1.0.23}/tests/test_git_error.py +2 -2
  23. fancygit-1.0.22/.fancygit_config +0 -30
  24. fancygit-1.0.22/VERSION +0 -1
  25. fancygit-1.0.22/fancygit.egg-info/requires.txt +0 -1
  26. fancygit-1.0.22/fancygit.py +0 -901
  27. fancygit-1.0.22/images/Logo.png +0 -0
  28. fancygit-1.0.22/images/Logo_with_name.png +0 -0
  29. fancygit-1.0.22/images/dark_background_logo.png +0 -0
  30. fancygit-1.0.22/images/light_background_logo.png +0 -0
  31. fancygit-1.0.22/images/overview.png +0 -0
  32. fancygit-1.0.22/src/ai_engine.py +0 -112
  33. fancygit-1.0.22/src/config_manager.py +0 -68
  34. fancygit-1.0.22/src/fancygit_config_dc.py +0 -41
  35. fancygit-1.0.22/src/model_provider.py +0 -25
  36. fancygit-1.0.22/src/providers/__init__.py +0 -1
  37. fancygit-1.0.22/src/providers/anthropic_model.py +0 -47
  38. fancygit-1.0.22/src/providers/base_model.py +0 -19
  39. fancygit-1.0.22/src/providers/ollama_model.py +0 -172
  40. fancygit-1.0.22/src/providers/openai_model.py +0 -66
  41. fancygit-1.0.22/src/repo_inspector.py +0 -3
  42. fancygit-1.0.22/tests/conftest.py +0 -139
  43. fancygit-1.0.22/tests/test_ai_engine.py +0 -181
  44. fancygit-1.0.22/tests/test_ai_integration.py +0 -168
  45. fancygit-1.0.22/tests/test_config_manager.py +0 -232
  46. fancygit-1.0.22/tests/test_model_provider.py +0 -204
  47. fancygit-1.0.22/tests/test_providers.py +0 -154
  48. {fancygit-1.0.22 → fancygit-1.0.23}/CD_GUIDE.md +0 -0
  49. {fancygit-1.0.22 → fancygit-1.0.23}/COLOR_SYSTEM_GUIDE.md +0 -0
  50. {fancygit-1.0.22 → fancygit-1.0.23}/EMAIL_SETUP_GUIDE.md +0 -0
  51. {fancygit-1.0.22 → fancygit-1.0.23}/LICENSE +0 -0
  52. {fancygit-1.0.22 → fancygit-1.0.23}/TESTING_GUIDE.md +0 -0
  53. {fancygit-1.0.22 → fancygit-1.0.23}/TESTING_SUMMARY.md +0 -0
  54. {fancygit-1.0.22 → fancygit-1.0.23}/fancygit.egg-info/dependency_links.txt +0 -0
  55. {fancygit-1.0.22 → fancygit-1.0.23}/fancygit.egg-info/entry_points.txt +0 -0
  56. {fancygit-1.0.22 → fancygit-1.0.23}/fancygit.egg-info/top_level.txt +0 -0
  57. {fancygit-1.0.22 → fancygit-1.0.23}/setup.cfg +0 -0
  58. {fancygit-1.0.22 → fancygit-1.0.23}/src/__init__.py +0 -0
  59. {fancygit-1.0.22 → fancygit-1.0.23}/src/colors.py +0 -0
  60. {fancygit-1.0.22 → fancygit-1.0.23}/src/git_error.py +0 -0
  61. {fancygit-1.0.22 → fancygit-1.0.23}/src/git_error_parser.py +0 -0
  62. {fancygit-1.0.22 → fancygit-1.0.23}/src/git_insights.py +0 -0
  63. {fancygit-1.0.22 → fancygit-1.0.23}/src/git_runner.py +0 -0
  64. {fancygit-1.0.22 → fancygit-1.0.23}/src/loading_animation.py +0 -0
  65. {fancygit-1.0.22 → fancygit-1.0.23}/src/merge_conflict.py +0 -0
  66. {fancygit-1.0.22 → fancygit-1.0.23}/src/output_colorizer.py +0 -0
  67. {fancygit-1.0.22 → fancygit-1.0.23}/src/repo_state.py +0 -0
  68. {fancygit-1.0.22 → fancygit-1.0.23}/src/utils.py +0 -0
  69. {fancygit-1.0.22 → fancygit-1.0.23}/tests/__init__.py +0 -0
  70. {fancygit-1.0.22 → fancygit-1.0.23}/tests/test_git_error_parser.py +0 -0
  71. {fancygit-1.0.22 → fancygit-1.0.23}/tests/test_git_runner.py +0 -0
  72. {fancygit-1.0.22 → fancygit-1.0.23}/welcome.py +0 -0
@@ -0,0 +1,4 @@
1
+ confirmation_enabled=False
2
+ ai_analysis_enabled=False
3
+ output_coloring_enabled=True
4
+ loading_animation=dots
@@ -7,6 +7,5 @@ include welcome.py
7
7
  include fancygit.py
8
8
  recursive-include src *.py
9
9
  recursive-include tests *.py
10
- recursive-include images *.png *.jpg *.jpeg *.gif
11
10
  global-exclude *.pyc
12
11
  global-exclude __pycache__
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: fancygit
3
- Version: 1.0.22
3
+ Version: 1.0.23
4
4
  Summary: A smart CLI tool that provides intelligent recommendations and helps solve merge conflicts
5
5
  Author: Youssif Ashmawy
6
6
  Author-email: ashmawyyoussif@gmail.com
@@ -15,6 +15,7 @@ Requires-Python: >=3.6
15
15
  Description-Content-Type: text/markdown
16
16
  License-File: LICENSE
17
17
  Requires-Dist: requests>=2.25.0
18
+ Requires-Dist: prompt_toolkit>=3.0.0
18
19
  Dynamic: author
19
20
  Dynamic: author-email
20
21
  Dynamic: classifier
@@ -134,6 +135,48 @@ fancygit insights [--days=N] [--format=console|json] [--output=filename]
134
135
  fancygit visualize [directory] [--max-commits=N] [--no-open]
135
136
  ```
136
137
 
138
+ #### **🚀 Complete Push Workflow**
139
+ ```bash
140
+ # Interactive complete push workflow (pull → stage → commit → push)
141
+ fancygit complete-push
142
+
143
+ # With specific files
144
+ fancygit complete-push file1.py file2.py
145
+
146
+ # Skip pull or push
147
+ fancygit complete-push --no-pull --no-push
148
+
149
+ # With custom commit message (still asks for confirmation)
150
+ fancygit complete-push --message="Fix bug"
151
+
152
+ # With AI commit message suggestions (automatically generated, Press Enter to use)
153
+ fancygit complete-push
154
+ ```
155
+
156
+ **Complete Push Features:**
157
+ - **Branch Selection**: Shows current branch and allows switching before operations
158
+ - **Interactive File Selection**: Displays available files with status (staged/modified/untracked)
159
+ - **Smart Defaults**: Press Enter for all files, stay on current branch
160
+ - **AI Commit Suggestions**: Automatically generated AI commit messages (Press Enter to use, requires Ollama)
161
+ - **Dry Run Preview**: Shows all planned operations before execution
162
+ - **User Confirmation**: Must confirm before any git operations run
163
+ - **Continuous Commit Message Prompt**: Re-asks until non-empty message provided
164
+
165
+ **AI Commit Message Features:**
166
+ - **Context-Aware**: Analyzes git diff and repository state
167
+ - **Conventional Commits**: Follows feat/fix/docs/style/refactor/test/chore format
168
+ - **Smart Suggestions**: Based on actual changes being committed
169
+ - **Optional**: Can accept or reject AI suggestions
170
+ - **Fallback**: Works even if AI is unavailable
171
+
172
+ **Workflow Steps:**
173
+ 1. 🌿 Select/confirm branch
174
+ 2. 📋 Choose files to stage (interactive)
175
+ 3. 📝 Enter commit message (required)
176
+ 4. 🔍 Review dry run of all operations
177
+ 5. ❓ Confirm execution
178
+ 6. 🚀 Execute: pull → add → commit → push
179
+
137
180
  ### How It Works
138
181
 
139
182
  1. **Command Execution**: Runs the actual git command
@@ -106,6 +106,48 @@ fancygit insights [--days=N] [--format=console|json] [--output=filename]
106
106
  fancygit visualize [directory] [--max-commits=N] [--no-open]
107
107
  ```
108
108
 
109
+ #### **🚀 Complete Push Workflow**
110
+ ```bash
111
+ # Interactive complete push workflow (pull → stage → commit → push)
112
+ fancygit complete-push
113
+
114
+ # With specific files
115
+ fancygit complete-push file1.py file2.py
116
+
117
+ # Skip pull or push
118
+ fancygit complete-push --no-pull --no-push
119
+
120
+ # With custom commit message (still asks for confirmation)
121
+ fancygit complete-push --message="Fix bug"
122
+
123
+ # With AI commit message suggestions (automatically generated, Press Enter to use)
124
+ fancygit complete-push
125
+ ```
126
+
127
+ **Complete Push Features:**
128
+ - **Branch Selection**: Shows current branch and allows switching before operations
129
+ - **Interactive File Selection**: Displays available files with status (staged/modified/untracked)
130
+ - **Smart Defaults**: Press Enter for all files, stay on current branch
131
+ - **AI Commit Suggestions**: Automatically generated AI commit messages (Press Enter to use, requires Ollama)
132
+ - **Dry Run Preview**: Shows all planned operations before execution
133
+ - **User Confirmation**: Must confirm before any git operations run
134
+ - **Continuous Commit Message Prompt**: Re-asks until non-empty message provided
135
+
136
+ **AI Commit Message Features:**
137
+ - **Context-Aware**: Analyzes git diff and repository state
138
+ - **Conventional Commits**: Follows feat/fix/docs/style/refactor/test/chore format
139
+ - **Smart Suggestions**: Based on actual changes being committed
140
+ - **Optional**: Can accept or reject AI suggestions
141
+ - **Fallback**: Works even if AI is unavailable
142
+
143
+ **Workflow Steps:**
144
+ 1. 🌿 Select/confirm branch
145
+ 2. 📋 Choose files to stage (interactive)
146
+ 3. 📝 Enter commit message (required)
147
+ 4. 🔍 Review dry run of all operations
148
+ 5. ❓ Confirm execution
149
+ 6. 🚀 Execute: pull → add → commit → push
150
+
109
151
  ### How It Works
110
152
 
111
153
  1. **Command Execution**: Runs the actual git command
@@ -0,0 +1 @@
1
+ 1.0.23
@@ -13,10 +13,10 @@ clean
13
13
  clone
14
14
  colors
15
15
  commit
16
+ ship
16
17
  confirmation
17
18
  describe
18
19
  diff
19
- explain
20
20
  fetch
21
21
  format-patch
22
22
  gc
@@ -32,21 +32,24 @@ mv
32
32
  notes
33
33
  pull
34
34
  push
35
+ quiz
35
36
  range-diff
36
37
  rebase
38
+ redo
37
39
  reset
38
40
  restore
39
41
  revert
40
42
  rm
41
43
  shortlog
42
44
  show
45
+ ship
43
46
  sparse-checkout
44
47
  stash
45
48
  status
46
49
  submodule
47
50
  switch
48
- sync
49
51
  tag
50
52
  welcome
51
53
  worktree
54
+ undo
52
55
  visualize
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: fancygit
3
- Version: 1.0.22
3
+ Version: 1.0.23
4
4
  Summary: A smart CLI tool that provides intelligent recommendations and helps solve merge conflicts
5
5
  Author: Youssif Ashmawy
6
6
  Author-email: ashmawyyoussif@gmail.com
@@ -15,6 +15,7 @@ Requires-Python: >=3.6
15
15
  Description-Content-Type: text/markdown
16
16
  License-File: LICENSE
17
17
  Requires-Dist: requests>=2.25.0
18
+ Requires-Dist: prompt_toolkit>=3.0.0
18
19
  Dynamic: author
19
20
  Dynamic: author-email
20
21
  Dynamic: classifier
@@ -134,6 +135,48 @@ fancygit insights [--days=N] [--format=console|json] [--output=filename]
134
135
  fancygit visualize [directory] [--max-commits=N] [--no-open]
135
136
  ```
136
137
 
138
+ #### **🚀 Complete Push Workflow**
139
+ ```bash
140
+ # Interactive complete push workflow (pull → stage → commit → push)
141
+ fancygit complete-push
142
+
143
+ # With specific files
144
+ fancygit complete-push file1.py file2.py
145
+
146
+ # Skip pull or push
147
+ fancygit complete-push --no-pull --no-push
148
+
149
+ # With custom commit message (still asks for confirmation)
150
+ fancygit complete-push --message="Fix bug"
151
+
152
+ # With AI commit message suggestions (automatically generated, Press Enter to use)
153
+ fancygit complete-push
154
+ ```
155
+
156
+ **Complete Push Features:**
157
+ - **Branch Selection**: Shows current branch and allows switching before operations
158
+ - **Interactive File Selection**: Displays available files with status (staged/modified/untracked)
159
+ - **Smart Defaults**: Press Enter for all files, stay on current branch
160
+ - **AI Commit Suggestions**: Automatically generated AI commit messages (Press Enter to use, requires Ollama)
161
+ - **Dry Run Preview**: Shows all planned operations before execution
162
+ - **User Confirmation**: Must confirm before any git operations run
163
+ - **Continuous Commit Message Prompt**: Re-asks until non-empty message provided
164
+
165
+ **AI Commit Message Features:**
166
+ - **Context-Aware**: Analyzes git diff and repository state
167
+ - **Conventional Commits**: Follows feat/fix/docs/style/refactor/test/chore format
168
+ - **Smart Suggestions**: Based on actual changes being committed
169
+ - **Optional**: Can accept or reject AI suggestions
170
+ - **Fallback**: Works even if AI is unavailable
171
+
172
+ **Workflow Steps:**
173
+ 1. 🌿 Select/confirm branch
174
+ 2. 📋 Choose files to stage (interactive)
175
+ 3. 📝 Enter commit message (required)
176
+ 4. 🔍 Review dry run of all operations
177
+ 5. ❓ Confirm execution
178
+ 6. 🚀 Execute: pull → add → commit → push
179
+
137
180
  ### How It Works
138
181
 
139
182
  1. **Command Execution**: Runs the actual git command
@@ -18,16 +18,8 @@ fancygit.egg-info/dependency_links.txt
18
18
  fancygit.egg-info/entry_points.txt
19
19
  fancygit.egg-info/requires.txt
20
20
  fancygit.egg-info/top_level.txt
21
- images/Logo.png
22
- images/Logo_with_name.png
23
- images/dark_background_logo.png
24
- images/light_background_logo.png
25
- images/overview.png
26
21
  src/__init__.py
27
- src/ai_engine.py
28
22
  src/colors.py
29
- src/config_manager.py
30
- src/fancygit_config_dc.py
31
23
  src/git_error.py
32
24
  src/git_error_parser.py
33
25
  src/git_insights.py
@@ -35,21 +27,14 @@ src/git_runner.py
35
27
  src/loading_animation.py
36
28
  src/merge_conflict.py
37
29
  src/mermaid_export.py
38
- src/model_provider.py
30
+ src/ollama_client.py
39
31
  src/output_colorizer.py
40
- src/repo_inspector.py
32
+ src/quiz_html_generator.py
33
+ src/quiz_manager.py
41
34
  src/repo_state.py
42
35
  src/utils.py
43
- src/providers/__init__.py
44
- src/providers/anthropic_model.py
45
- src/providers/base_model.py
46
- src/providers/ollama_model.py
47
- src/providers/openai_model.py
48
36
  tests/__init__.py
49
37
  tests/conftest.py
50
- tests/test_ai_engine.py
51
- tests/test_ai_integration.py
52
- tests/test_config_manager.py
53
38
  tests/test_conflict_parser_integration.py
54
39
  tests/test_fancygit_advanced.py
55
40
  tests/test_fancygit_commands.py
@@ -57,6 +42,4 @@ tests/test_fancygit_integration.py
57
42
  tests/test_fancygit_workflows.py
58
43
  tests/test_git_error.py
59
44
  tests/test_git_error_parser.py
60
- tests/test_git_runner.py
61
- tests/test_model_provider.py
62
- tests/test_providers.py
45
+ tests/test_git_runner.py
@@ -0,0 +1,2 @@
1
+ requests>=2.25.0
2
+ prompt_toolkit>=3.0.0