password-generator-app 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.
Files changed (31) hide show
  1. password_generator_app-1.0.0/CHANGELOG.md +60 -0
  2. password_generator_app-1.0.0/LICENSE +17 -0
  3. password_generator_app-1.0.0/MANIFEST.in +5 -0
  4. password_generator_app-1.0.0/PKG-INFO +276 -0
  5. password_generator_app-1.0.0/README.md +257 -0
  6. password_generator_app-1.0.0/imgs/CLI.png +0 -0
  7. password_generator_app-1.0.0/imgs/GUI-Dark-Poweshell.png +0 -0
  8. password_generator_app-1.0.0/imgs/GUI-Dark.png +0 -0
  9. password_generator_app-1.0.0/imgs/GUI-Light-Poweshell.png +0 -0
  10. password_generator_app-1.0.0/imgs/GUI-Light.png +0 -0
  11. password_generator_app-1.0.0/imgs/GUI.png +0 -0
  12. password_generator_app-1.0.0/pyproject.toml +54 -0
  13. password_generator_app-1.0.0/setup.cfg +4 -0
  14. password_generator_app-1.0.0/src/password_generator_app/__init__.py +1 -0
  15. password_generator_app-1.0.0/src/password_generator_app/__main__.py +4 -0
  16. password_generator_app-1.0.0/src/password_generator_app/app.py +24 -0
  17. password_generator_app-1.0.0/src/password_generator_app/cli.py +101 -0
  18. password_generator_app-1.0.0/src/password_generator_app/core/console_color.py +45 -0
  19. password_generator_app-1.0.0/src/password_generator_app/core/password_generator.py +91 -0
  20. password_generator_app-1.0.0/src/password_generator_app/core/settings.py +120 -0
  21. password_generator_app-1.0.0/src/password_generator_app/core/theme.py +252 -0
  22. password_generator_app-1.0.0/src/password_generator_app/ui/main_window.py +416 -0
  23. password_generator_app-1.0.0/src/password_generator_app/ui/widgets.py +35 -0
  24. password_generator_app-1.0.0/src/password_generator_app.egg-info/PKG-INFO +276 -0
  25. password_generator_app-1.0.0/src/password_generator_app.egg-info/SOURCES.txt +29 -0
  26. password_generator_app-1.0.0/src/password_generator_app.egg-info/dependency_links.txt +1 -0
  27. password_generator_app-1.0.0/src/password_generator_app.egg-info/entry_points.txt +4 -0
  28. password_generator_app-1.0.0/src/password_generator_app.egg-info/requires.txt +1 -0
  29. password_generator_app-1.0.0/src/password_generator_app.egg-info/top_level.txt +1 -0
  30. password_generator_app-1.0.0/tests/test_cli.py +32 -0
  31. password_generator_app-1.0.0/tests/test_generator.py +132 -0
@@ -0,0 +1,60 @@
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:
6
+ https://keepachangelog.com/en/1.1.0/
7
+
8
+ This project follows Semantic Versioning:
9
+ https://semver.org/
10
+
11
+ ---
12
+
13
+ ## [1.0.0] - 2026-05-24
14
+
15
+ ### Added
16
+ - Modern Material-style graphical user interface built with PySide6
17
+ - Full command-line interface (CLI)
18
+ - `passgen` executable command support
19
+ - Password generation with configurable:
20
+ - length
21
+ - lowercase characters
22
+ - uppercase characters
23
+ - digits
24
+ - punctuation symbols
25
+ - Clipboard copy support
26
+ - Password strength indicator
27
+ - Persistent local settings storage
28
+ - Light and dark theme support
29
+ - Accent color customization
30
+ - Settings reset functionality
31
+ - Cross-platform Python package structure
32
+ - PyPI-ready packaging configuration
33
+ - GitHub-ready project structure
34
+ - README screenshots and usage examples
35
+ - Batch launcher for Windows (`passgen.bat`)
36
+
37
+ ### Improved
38
+ - Refactored application architecture using:
39
+ - `core/`
40
+ - `ui/`
41
+ - `src/` package layout
42
+ - Improved UI sizing and spacing
43
+ - Improved theme consistency across widgets
44
+ - Improved button and textbox styling
45
+ - Improved CLI usability and argument handling
46
+ - Improved packaging metadata
47
+
48
+ ### Fixed
49
+ - Fixed GUI theme rendering issues
50
+ - Fixed dark/light mode text color inconsistencies
51
+ - Fixed PySide6 icon compatibility issues
52
+ - Fixed `QProgressBar` import issues
53
+ - Fixed relative import execution problems
54
+ - Fixed CLI module discovery issues
55
+ - Fixed settings persistence bugs
56
+ - Fixed widget sizing inconsistencies
57
+ - Fixed multiple startup crashes
58
+
59
+ ### Security
60
+ - Secure password generation using Python's `secrets` module
@@ -0,0 +1,17 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Vahed MamGhaderi
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.
@@ -0,0 +1,5 @@
1
+ include README.md
2
+ include LICENSE
3
+ include CHANGELOG.md
4
+
5
+ recursive-include imgs *.png
@@ -0,0 +1,276 @@
1
+ Metadata-Version: 2.4
2
+ Name: password-generator-app
3
+ Version: 1.0.0
4
+ Summary: A lightweight password generator with a PySide6 GUI and CLI.
5
+ Author: Vahed MamGhaderi
6
+ License-Expression: MIT
7
+ Keywords: password,password-generator,pyside6,gui,cli,security,material-design
8
+ Classifier: Development Status :: 5 - Production/Stable
9
+ Classifier: Intended Audience :: End Users/Desktop
10
+ Classifier: Operating System :: OS Independent
11
+ Classifier: Programming Language :: Python :: 3
12
+ Classifier: Topic :: Security
13
+ Classifier: Topic :: Utilities
14
+ Requires-Python: >=3.10
15
+ Description-Content-Type: text/markdown
16
+ License-File: LICENSE
17
+ Requires-Dist: PySide6>=6.7.0
18
+ Dynamic: license-file
19
+
20
+ # Password Generator App
21
+
22
+ A clean and lightweight password generator built with **PySide6** and Python.
23
+ The project provides both a graphical user interface and a command-line interface.
24
+
25
+ ## Features
26
+
27
+ - Simple Material-style GUI
28
+ - Dark and light themes
29
+ - Accent color selection
30
+ - Password generation with configurable character groups
31
+ - Clipboard copy
32
+ - Persistent local settings stored beside the project
33
+ - CLI support for terminal-based use
34
+ - Small, readable UI with responsive spacing
35
+
36
+ ## Screenshots
37
+
38
+ ### CLI
39
+
40
+ ![CLI screenshot](imgs/CLI.png)
41
+
42
+ ### GUI
43
+
44
+ ![GUI screenshot](imgs/GUI.png)
45
+
46
+ ## Installation
47
+
48
+ ### From source
49
+
50
+ ```powershell
51
+ pip install -r requirements.txt
52
+ pip install -e .
53
+ ```
54
+
55
+ ### From PyPI
56
+
57
+ ```powershell
58
+ pip install password-generator-app
59
+ ```
60
+
61
+ ## Run the application
62
+
63
+ The main command is `passgen`.
64
+ The alias `password-generator` is also available after installation.
65
+
66
+ ### From a local source checkout without installation
67
+
68
+ ```powershell
69
+ $env:PYTHONPATH = "src"
70
+ python -m password_generator_app.cli gui
71
+ python -m password_generator_app.cli --length 32 --copy
72
+ ```
73
+
74
+ ### After installation
75
+
76
+ ```powershell
77
+ passgen gui
78
+ passgen --length 32 --copy
79
+ password-generator gui
80
+ password-generator --length 32 --copy
81
+ ```
82
+
83
+ ### Direct module execution
84
+
85
+ ```powershell
86
+ python -m password_generator_app.cli gui
87
+ python -m password_generator_app.cli --length 32 --copy
88
+ ```
89
+
90
+ ## GUI usage
91
+
92
+ Launch the graphical interface:
93
+
94
+ ```powershell
95
+ passgen gui
96
+ ```
97
+
98
+ Or:
99
+
100
+ ```powershell
101
+ password-generator gui
102
+ ```
103
+
104
+ The GUI allows you to:
105
+
106
+ - Generate secure passwords visually
107
+ - Configure character groups
108
+ - Set minimum character counts
109
+ - Switch between dark and light themes
110
+ - Customize accent colors
111
+ - Copy passwords directly to the clipboard
112
+
113
+ ## CLI usage
114
+
115
+ Generate a password with default settings:
116
+
117
+ ```powershell
118
+ passgen
119
+ ```
120
+
121
+ Generate a password with a custom length and copy it to the clipboard:
122
+
123
+ ```powershell
124
+ passgen --length 32 --copy
125
+ ```
126
+
127
+ Show help:
128
+
129
+ ```powershell
130
+ passgen -h
131
+ ```
132
+
133
+ The same CLI commands can also be executed with:
134
+
135
+ ```powershell
136
+ password-generator
137
+ ```
138
+
139
+ ## CLI options
140
+
141
+ - `--length`, `-l` — password length
142
+ - `--lowercase / --no-lowercase`
143
+ - `--uppercase / --no-uppercase`
144
+ - `--digits / --no-digits`
145
+ - `--punctuation / --no-punctuation`
146
+ - `--min-lowercase`
147
+ - `--min-uppercase`
148
+ - `--min-digits`
149
+ - `--min-punctuation`
150
+ - `--copy`, `-c` — copy the generated password to the clipboard
151
+
152
+ ## Python API
153
+
154
+ You can also use the generator directly from Python code:
155
+
156
+ ```python
157
+ from password_generator_app.core.password_generator import (
158
+ PasswordGenerator,
159
+ PasswordConfig,
160
+ )
161
+
162
+ config = PasswordConfig(
163
+ length=18,
164
+ include_lowercase=True,
165
+ include_uppercase=True,
166
+ include_digits=True,
167
+ include_punctuation=True,
168
+ min_lowercase=3,
169
+ min_uppercase=3,
170
+ min_digits=3,
171
+ min_punctuation=3,
172
+ )
173
+
174
+ password = PasswordGenerator(config)
175
+
176
+ for _ in range(5):
177
+ print(password.generate())
178
+ ```
179
+
180
+ ## Settings
181
+
182
+ The application stores its settings in the project directory as `settings.json`.
183
+
184
+ Saved values include:
185
+
186
+ - theme
187
+ - accent color
188
+ - window size
189
+ - password generation options
190
+
191
+ ## Project Structure
192
+
193
+ ```text
194
+ password_generator_app_v1/
195
+ ├── imgs/
196
+ ├── scripts/
197
+ │ ├── cleanup.ps1
198
+ │ ├── build.ps1
199
+ │ ├── rebuild.ps1
200
+ │ └── rebuild.bat
201
+ ├── src/
202
+ │ └── password_generator_app/
203
+ ├── tests/
204
+ ├── CHANGELOG.md
205
+ ├── LICENSE
206
+ ├── MANIFEST.in
207
+ ├── pyproject.toml
208
+ └── README.md
209
+ ```
210
+
211
+ ## Windows Batch Launcher
212
+
213
+ You can place `passgen.bat` inside your `commands` folder and update the project path in the file.
214
+ After that, the app can be launched directly from the terminal without installing the package.
215
+
216
+ ```powershell
217
+ passgen gui
218
+ passgen --length 32 --copy
219
+ password-generator gui
220
+ password-generator --length 32 --copy
221
+ ```
222
+
223
+ ## Running Tests
224
+
225
+ Install pytest:
226
+
227
+ ```bash
228
+ pip install pytest
229
+ ```
230
+
231
+ Run all tests:
232
+
233
+ ```bash
234
+ pytest -v
235
+ ```
236
+
237
+ The project includes:
238
+
239
+ - Core password generator tests
240
+ - Validation tests
241
+ - CLI tests
242
+
243
+ ## Development Utilities
244
+
245
+ ### Rebuild local package
246
+
247
+ Run the complete local development workflow:
248
+
249
+ ```powershell
250
+ powershell -ExecutionPolicy Bypass -File .\scripts\rebuild.ps1
251
+ ```
252
+
253
+ Or:
254
+
255
+ ```powershell
256
+ .\scripts\rebuild.bat
257
+ ```
258
+
259
+ This process will:
260
+
261
+ - Clean the project
262
+ - Remove old local installations
263
+ - Run tests
264
+ - Build package distributions
265
+ - Validate distributions using Twine
266
+ - Reinstall the latest local build
267
+
268
+ ## Author
269
+
270
+ Developed by Vahed MamGhaderi
271
+
272
+ ## License
273
+
274
+ This project is licensed under the MIT License.
275
+
276
+ See the [LICENSE](LICENSE) file for details.
@@ -0,0 +1,257 @@
1
+ # Password Generator App
2
+
3
+ A clean and lightweight password generator built with **PySide6** and Python.
4
+ The project provides both a graphical user interface and a command-line interface.
5
+
6
+ ## Features
7
+
8
+ - Simple Material-style GUI
9
+ - Dark and light themes
10
+ - Accent color selection
11
+ - Password generation with configurable character groups
12
+ - Clipboard copy
13
+ - Persistent local settings stored beside the project
14
+ - CLI support for terminal-based use
15
+ - Small, readable UI with responsive spacing
16
+
17
+ ## Screenshots
18
+
19
+ ### CLI
20
+
21
+ ![CLI screenshot](imgs/CLI.png)
22
+
23
+ ### GUI
24
+
25
+ ![GUI screenshot](imgs/GUI.png)
26
+
27
+ ## Installation
28
+
29
+ ### From source
30
+
31
+ ```powershell
32
+ pip install -r requirements.txt
33
+ pip install -e .
34
+ ```
35
+
36
+ ### From PyPI
37
+
38
+ ```powershell
39
+ pip install password-generator-app
40
+ ```
41
+
42
+ ## Run the application
43
+
44
+ The main command is `passgen`.
45
+ The alias `password-generator` is also available after installation.
46
+
47
+ ### From a local source checkout without installation
48
+
49
+ ```powershell
50
+ $env:PYTHONPATH = "src"
51
+ python -m password_generator_app.cli gui
52
+ python -m password_generator_app.cli --length 32 --copy
53
+ ```
54
+
55
+ ### After installation
56
+
57
+ ```powershell
58
+ passgen gui
59
+ passgen --length 32 --copy
60
+ password-generator gui
61
+ password-generator --length 32 --copy
62
+ ```
63
+
64
+ ### Direct module execution
65
+
66
+ ```powershell
67
+ python -m password_generator_app.cli gui
68
+ python -m password_generator_app.cli --length 32 --copy
69
+ ```
70
+
71
+ ## GUI usage
72
+
73
+ Launch the graphical interface:
74
+
75
+ ```powershell
76
+ passgen gui
77
+ ```
78
+
79
+ Or:
80
+
81
+ ```powershell
82
+ password-generator gui
83
+ ```
84
+
85
+ The GUI allows you to:
86
+
87
+ - Generate secure passwords visually
88
+ - Configure character groups
89
+ - Set minimum character counts
90
+ - Switch between dark and light themes
91
+ - Customize accent colors
92
+ - Copy passwords directly to the clipboard
93
+
94
+ ## CLI usage
95
+
96
+ Generate a password with default settings:
97
+
98
+ ```powershell
99
+ passgen
100
+ ```
101
+
102
+ Generate a password with a custom length and copy it to the clipboard:
103
+
104
+ ```powershell
105
+ passgen --length 32 --copy
106
+ ```
107
+
108
+ Show help:
109
+
110
+ ```powershell
111
+ passgen -h
112
+ ```
113
+
114
+ The same CLI commands can also be executed with:
115
+
116
+ ```powershell
117
+ password-generator
118
+ ```
119
+
120
+ ## CLI options
121
+
122
+ - `--length`, `-l` — password length
123
+ - `--lowercase / --no-lowercase`
124
+ - `--uppercase / --no-uppercase`
125
+ - `--digits / --no-digits`
126
+ - `--punctuation / --no-punctuation`
127
+ - `--min-lowercase`
128
+ - `--min-uppercase`
129
+ - `--min-digits`
130
+ - `--min-punctuation`
131
+ - `--copy`, `-c` — copy the generated password to the clipboard
132
+
133
+ ## Python API
134
+
135
+ You can also use the generator directly from Python code:
136
+
137
+ ```python
138
+ from password_generator_app.core.password_generator import (
139
+ PasswordGenerator,
140
+ PasswordConfig,
141
+ )
142
+
143
+ config = PasswordConfig(
144
+ length=18,
145
+ include_lowercase=True,
146
+ include_uppercase=True,
147
+ include_digits=True,
148
+ include_punctuation=True,
149
+ min_lowercase=3,
150
+ min_uppercase=3,
151
+ min_digits=3,
152
+ min_punctuation=3,
153
+ )
154
+
155
+ password = PasswordGenerator(config)
156
+
157
+ for _ in range(5):
158
+ print(password.generate())
159
+ ```
160
+
161
+ ## Settings
162
+
163
+ The application stores its settings in the project directory as `settings.json`.
164
+
165
+ Saved values include:
166
+
167
+ - theme
168
+ - accent color
169
+ - window size
170
+ - password generation options
171
+
172
+ ## Project Structure
173
+
174
+ ```text
175
+ password_generator_app_v1/
176
+ ├── imgs/
177
+ ├── scripts/
178
+ │ ├── cleanup.ps1
179
+ │ ├── build.ps1
180
+ │ ├── rebuild.ps1
181
+ │ └── rebuild.bat
182
+ ├── src/
183
+ │ └── password_generator_app/
184
+ ├── tests/
185
+ ├── CHANGELOG.md
186
+ ├── LICENSE
187
+ ├── MANIFEST.in
188
+ ├── pyproject.toml
189
+ └── README.md
190
+ ```
191
+
192
+ ## Windows Batch Launcher
193
+
194
+ You can place `passgen.bat` inside your `commands` folder and update the project path in the file.
195
+ After that, the app can be launched directly from the terminal without installing the package.
196
+
197
+ ```powershell
198
+ passgen gui
199
+ passgen --length 32 --copy
200
+ password-generator gui
201
+ password-generator --length 32 --copy
202
+ ```
203
+
204
+ ## Running Tests
205
+
206
+ Install pytest:
207
+
208
+ ```bash
209
+ pip install pytest
210
+ ```
211
+
212
+ Run all tests:
213
+
214
+ ```bash
215
+ pytest -v
216
+ ```
217
+
218
+ The project includes:
219
+
220
+ - Core password generator tests
221
+ - Validation tests
222
+ - CLI tests
223
+
224
+ ## Development Utilities
225
+
226
+ ### Rebuild local package
227
+
228
+ Run the complete local development workflow:
229
+
230
+ ```powershell
231
+ powershell -ExecutionPolicy Bypass -File .\scripts\rebuild.ps1
232
+ ```
233
+
234
+ Or:
235
+
236
+ ```powershell
237
+ .\scripts\rebuild.bat
238
+ ```
239
+
240
+ This process will:
241
+
242
+ - Clean the project
243
+ - Remove old local installations
244
+ - Run tests
245
+ - Build package distributions
246
+ - Validate distributions using Twine
247
+ - Reinstall the latest local build
248
+
249
+ ## Author
250
+
251
+ Developed by Vahed MamGhaderi
252
+
253
+ ## License
254
+
255
+ This project is licensed under the MIT License.
256
+
257
+ See the [LICENSE](LICENSE) file for details.
@@ -0,0 +1,54 @@
1
+ [build-system]
2
+ requires = ["setuptools>=68", "wheel"]
3
+ build-backend = "setuptools.build_meta"
4
+
5
+ [project]
6
+ name = "password-generator-app"
7
+ version = "1.0.0"
8
+ description = "A lightweight password generator with a PySide6 GUI and CLI."
9
+ readme = { file = "README.md", content-type = "text/markdown" }
10
+ requires-python = ">=3.10"
11
+ license = "MIT"
12
+ authors = [
13
+ { name = "Vahed MamGhaderi" }
14
+ ]
15
+
16
+ keywords = [
17
+ "password",
18
+ "password-generator",
19
+ "pyside6",
20
+ "gui",
21
+ "cli",
22
+ "security",
23
+ "material-design"
24
+ ]
25
+
26
+ classifiers = [
27
+ "Development Status :: 5 - Production/Stable",
28
+ "Intended Audience :: End Users/Desktop",
29
+ "Operating System :: OS Independent",
30
+ "Programming Language :: Python :: 3",
31
+ "Topic :: Security",
32
+ "Topic :: Utilities",
33
+ ]
34
+
35
+ dependencies = [
36
+ "PySide6>=6.7.0"
37
+ ]
38
+
39
+ [project.scripts]
40
+ passgen = "password_generator_app.cli:main"
41
+ password-generator = "password_generator_app.cli:main"
42
+ password-generator-app = "password_generator_app.cli:main"
43
+
44
+ [tool.setuptools]
45
+ package-dir = { "" = "src" }
46
+ include-package-data = true
47
+
48
+ [tool.setuptools.packages.find]
49
+ where = ["src"]
50
+
51
+ [tool.setuptools.package-data]
52
+ password_generator_app = [
53
+ "resources/styles/*.qss"
54
+ ]
@@ -0,0 +1,4 @@
1
+ [egg_info]
2
+ tag_build =
3
+ tag_date = 0
4
+
@@ -0,0 +1 @@
1
+ __version__ = "1.0.0"
@@ -0,0 +1,4 @@
1
+ from .app import main
2
+
3
+ if __name__ == "__main__":
4
+ raise SystemExit(main())