|
1 | | -### On development stage. |
2 | | -## Documentation for macOS_application_speedtest_for_python |
3 | | - |
4 | | -### Project Description |
5 | | -`macOS_application_speedtest_for_python` is a modern macOS application for testing your internet connection speed using Python. The app features a beautiful dark UI (ttkbootstrap), asynchronous and thread-based architecture for maximum responsiveness, and advanced UX with toast notifications and smooth progress animations. |
6 | | - |
7 | | -### What's New in Version 4.0.0 |
8 | | -- Fully asynchronous and thread-based architecture: all heavy operations (speedtest, network info, plotting) run in background threads. |
9 | | -- Modern, dark, and airy UI using ttkbootstrap. |
10 | | -- Toast notifications for test completion and errors. |
11 | | -- Smooth progress bar animations and non-blocking interface. |
12 | | -- Improved error handling and logging. |
13 | | -- Refactored codebase: all comments and docstrings in English, modular structure. |
14 | | -- Enhanced test history and export features. |
15 | | -- More robust PyInstaller build and troubleshooting section. |
16 | | - |
17 | | -### Installation |
18 | | - |
19 | | -#### System Requirements |
20 | | -- macOS (version 10.14 or later) |
21 | | -- Python 3.8 or higher (with Tkinter support) |
22 | | -- All dependencies from `requirements.txt` |
23 | | - |
24 | | -#### Installing Dependencies |
| 1 | +## 🚀 Internet Speed Test for macOS |
| 2 | + |
| 3 | +A modern, beautiful, and fast macOS app to check your internet speed! Powered by Python, with a dark UI, smooth animations, and instant results. |
| 4 | + |
| 5 | +--- |
| 6 | + |
| 7 | +### ✨ Features |
| 8 | +- ⚡ **One-click Speed Test** — Check your download, upload, and ping in seconds |
| 9 | +- 🌙 **Modern Dark UI** — Stylish, easy on the eyes (ttkbootstrap) |
| 10 | +- 🔔 **Toast Notifications** — Instant feedback for test results and errors |
| 11 | +- 📊 **History & Graphs** — View, export, and plot your speed test history |
| 12 | +- 🖥️ **Network Info** — See your active network adapter details |
| 13 | +- 📝 **Logging** — All actions are logged for easy troubleshooting |
| 14 | +- 🧪 **Fully Tested** — 100% passing unit tests, CI-ready |
| 15 | + |
| 16 | +--- |
| 17 | + |
| 18 | +### 🛠️ Installation |
| 19 | +**Requirements:** |
| 20 | +- macOS 10.14+ |
| 21 | +- Python 3.8+ (with Tkinter) |
| 22 | + |
25 | 23 | ```bash |
26 | | -# Clone repository |
| 24 | +# Clone the repo |
27 | 25 | git clone https://github.com/AlexTkDev/macOS_application_speedtest_for_python.git |
28 | 26 | cd macOS_application_speedtest_for_python |
29 | 27 | python3 -m venv .venv |
30 | 28 | source .venv/bin/activate |
31 | 29 | pip install -r requirements.txt |
32 | 30 | ``` |
33 | 31 |
|
34 | | -### Usage |
35 | | -Run the application: |
| 32 | +--- |
| 33 | + |
| 34 | +### ▶️ Usage |
| 35 | +Run the app: |
36 | 36 | ```bash |
37 | 37 | python main.py |
38 | 38 | ``` |
39 | | -Or build the .app: |
| 39 | +Or build a native `.app`: |
40 | 40 | ```bash |
41 | 41 | pyinstaller main.spec |
42 | 42 | open dist/Alex_SpeedTest.app |
43 | 43 | ``` |
44 | 44 |
|
45 | | -#### Features |
46 | | -- **Asynchronous Speed Test**: Download, upload, and ping tests run in a background thread. |
47 | | -- **Modern Dark UI**: Built with ttkbootstrap for a beautiful, modern look. |
48 | | -- **Toast Notifications**: Non-blocking popups for test completion and errors. |
49 | | -- **Network Adapter Info**: Asynchronously fetches and displays active network adapter details. |
50 | | -- **Interactive History & Graphs**: View and export your test history, plot interactive graphs. |
51 | | -- **Export to CSV**: Export your test history for further analysis. |
52 | | -- **Logging**: All actions are logged for troubleshooting. |
| 45 | +--- |
53 | 46 |
|
54 | | -#### Project Structure |
| 47 | +### 🧩 Project Structure |
55 | 48 | ``` |
56 | 49 | macOS_application_speedtest_for_python/ |
57 | | -├── speedtest_app/ # Main package |
58 | | -│ ├── __init__.py # Package initialization |
59 | | -│ ├── alexs_speedtest.py # Main application module (async, threads) |
60 | | -│ ├── network_adapter_information.py # Async network info |
61 | | -│ ├── test_history.py # Async history and plotting |
62 | | -│ ├── gui/ # GUI components (ttkbootstrap) |
63 | | -│ │ └── __init__.py |
64 | | -│ ├── utils/ # Utility functions |
65 | | -│ │ └── __init__.py |
66 | | -│ └── tests/ # Unit tests |
67 | | -│ ├── __init__.py |
68 | | -│ ├── test_network_adapter.py |
69 | | -│ └── test_test_history.py |
70 | | -├── main.py # Entry point |
71 | | -├── main.spec # PyInstaller config |
72 | | -├── requirements.txt # Dependencies |
73 | | -├── setup.py # Installation script |
74 | | -├── README.md # This documentation |
| 50 | +├── speedtest_app/ # Main package |
| 51 | +│ ├── alexs_speedtest.py # Main app (async, threads) |
| 52 | +│ ├── network_adapter_information.py |
| 53 | +│ ├── test_history.py |
| 54 | +│ ├── gui/ |
| 55 | +│ ├── utils/ |
| 56 | +│ └── tests/ |
| 57 | +├── main.py # Entry point |
| 58 | +├── main.spec # PyInstaller config |
| 59 | +├── requirements.txt # Dependencies |
| 60 | +├── setup.py # Installer |
| 61 | +├── README.md # Docs |
75 | 62 | ``` |
76 | 63 |
|
77 | | -### How It Works |
78 | | -1. Click **Start Speed Test** to run a speed test in a background thread. |
79 | | -2. The app finds the best server, runs the test, and updates the UI with smooth progress. |
80 | | -3. Results are shown instantly; you can repeat the test, view/export history, or plot interactive graphs. |
81 | | -4. All network info and history operations are also asynchronous. |
82 | | -5. Toast notifications inform you of completion or errors. |
| 64 | +--- |
83 | 65 |
|
84 | | -### Building the Application |
85 | | -To build the application in `.app` format: |
86 | | -```bash |
87 | | -pyinstaller main.spec |
88 | | -``` |
89 | | -The `.app` will appear in the `dist` directory. |
| 66 | +### 💡 How It Works |
| 67 | +1. Click **Start Speed Test** — everything runs in the background, UI stays responsive |
| 68 | +2. See your results instantly, repeat as needed |
| 69 | +3. View/export your test history, plot interactive graphs |
| 70 | +4. All network info and history are fetched asynchronously |
| 71 | +5. Toasts notify you of completion or errors |
90 | 72 |
|
91 | | -#### Troubleshooting PyInstaller/macOS |
92 | | -- If the app does not open, run the binary from terminal to see errors: |
93 | | - ```bash |
94 | | - dist/Alex_SpeedTest.app/Contents/MacOS/alexs_speedtest |
95 | | - ``` |
96 | | -- If you see `ModuleNotFoundError: No module named '_tkinter'`, ensure your Python has Tkinter support and rebuild the venv. |
97 | | -- If macOS blocks the app, run: |
| 73 | +--- |
| 74 | + |
| 75 | +### 🐞 Troubleshooting |
| 76 | +- App won't open? Try: |
98 | 77 | ```bash |
99 | 78 | xattr -dr com.apple.quarantine dist/Alex_SpeedTest.app |
| 79 | + dist/Alex_SpeedTest.app/Contents/MacOS/alexs_speedtest |
100 | 80 | ``` |
101 | | -- For other issues, check the log file in `~/Documents/SpeedTest_Logs/speedtest_log.log`. |
| 81 | +- Missing Tkinter? Reinstall Python with Tk support |
| 82 | +- More help: check `~/Documents/SpeedTest_Logs/speedtest_log.log` |
102 | 83 |
|
103 | | -### Running Tests |
| 84 | +--- |
| 85 | + |
| 86 | +### 🧪 Tests |
104 | 87 | ```bash |
105 | 88 | python -m unittest discover |
106 | 89 | ``` |
107 | 90 |
|
108 | | -### License |
109 | | -MIT License. See `LICENSE` for details. |
| 91 | +--- |
| 92 | + |
| 93 | +### 📄 License |
| 94 | +MIT — see `LICENSE` |
| 95 | + |
| 96 | +--- |
| 97 | + |
| 98 | +### 🤝 Contributing |
| 99 | +PRs welcome! See CONTRIBUTING in the repo. |
110 | 100 |
|
111 | | -### Contribution |
112 | | -Pull requests are welcome! See CONTRIBUTING section in the old README for workflow. |
| 101 | +--- |
113 | 102 |
|
114 | | -### Contact |
115 | | -For questions or suggestions, reach out via [GitHub](https://github.com/AlexTkDev). |
| 103 | +### 💬 Contact |
| 104 | +Questions or ideas? [Open an issue or reach out on GitHub](https://github.com/AlexTkDev) |
0 commit comments