Skip to content

Commit bbcfdb8

Browse files
authored
Merge pull request #88 from overwrite00/develop
Release 2.0.7: Python 3.13 migration + beta/stable CI pipeline
2 parents f896f2b + 4bb3103 commit bbcfdb8

15 files changed

Lines changed: 90 additions & 56 deletions

.github/workflows/beta-release.yml

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ jobs:
3030
- name: Set up Python
3131
uses: actions/setup-python@v6
3232
with:
33-
python-version: '3.12'
33+
python-version: '3.13'
3434
cache: 'pip'
3535

3636
- name: Install System Dependencies (Linux)
@@ -49,6 +49,13 @@ jobs:
4949
shell: bash
5050
run: mypy NullifyPDF.py --ignore-missing-imports --no-error-summary 2>&1 | head -50 || true
5151

52+
- name: Resolve beta suffix from tag
53+
if: startsWith(github.ref, 'refs/tags/')
54+
shell: bash
55+
run: |
56+
TAG="${GITHUB_REF#refs/tags/}"
57+
echo "NULLIFYPDF_BETA_SUFFIX=${TAG#*-}" >> "$GITHUB_ENV"
58+
5259
- name: Build
5360
run: python build_local.py
5461

.github/workflows/release.yml

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,17 @@ jobs:
5656
--pattern "NullifyPDF_v*_Ubuntu.deb" \
5757
--pattern "NullifyPDF_v*_Fedora.rpm"
5858
59+
- name: Strip beta suffix from filenames
60+
run: |
61+
cd stable-assets
62+
for f in *; do
63+
new="$(echo "$f" | sed -E 's/-beta\.[0-9]+//')"
64+
if [ "$f" != "$new" ]; then
65+
mv "$f" "$new"
66+
fi
67+
done
68+
ls -la
69+
5970
- name: Create Stable Release
6071
uses: softprops/action-gh-release@v3
6172
with:

.github/workflows/test_build.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ jobs:
3030
- name: Set up Python
3131
uses: actions/setup-python@v6
3232
with:
33-
python-version: '3.12'
33+
python-version: '3.13'
3434
cache: 'pip' # CACHE RIPRISTINATA!
3535

3636
- name: Install System Dependencies (Linux)

ARCHITECTURE.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -140,7 +140,7 @@ doc.save("output.pdf", deflate=True)
140140

141141
**Key Constraints:**
142142

143-
- ✅ PyMuPDF wheels are pre-compiled → **requires Python 3.12**
143+
- ✅ PyMuPDF wheels are pre-compiled → **requires Python 3.13**
144144
-`doc.get_text()` is CPU-bound → run in worker thread
145145
- ✅ Metadata destruction is binary-level → cannot undo after export
146146
- ✅ Digital signatures invalidated after redaction
@@ -435,7 +435,7 @@ python NullifyPDF.py
435435

436436
# macOS/Linux (Bash)
437437
export NULLIFYPDF_DEBUG=true
438-
python3.12 NullifyPDF.py
438+
python3.13 NullifyPDF.py
439439
```
440440

441441
**Effect:** Log level changes from `INFO` to `DEBUG`, includes full stack traces.
@@ -457,7 +457,7 @@ python3.12 NullifyPDF.py
457457
**Steps:**
458458

459459
1. Detect OS (Windows/macOS/Linux)
460-
2. Create virtual environment with Python 3.12
460+
2. Create virtual environment with Python 3.13
461461
3. Upgrade pip, setuptools, wheel
462462
4. Install requirements.txt dependencies
463463
5. Download spaCy models (EN + IT)
@@ -619,7 +619,7 @@ NullifyPDF/
619619
1. **Enable debug mode:**
620620
```bash
621621
export NULLIFYPDF_DEBUG=true
622-
python3.12 NullifyPDF.py
622+
python3.13 NullifyPDF.py
623623
```
624624

625625
2. **Check logs:** `~/.nullifypdf/logs/nullifypdf.log`

CHANGELOG.md

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,15 @@ e questo progetto aderisce a [Semantic Versioning](https://semver.org/spec/v2.0.
77

88
## [Unreleased]
99

10+
## [2.0.7] - 2026-07-14
11+
12+
### 🔧 Internals
13+
14+
- **Migrazione a Python 3.13**: Il runtime richiesto passa da Python 3.12 a Python 3.13. PyMuPDF 1.28.0 pubblica wheel `abi3` (`cp310-abi3`) forward-compatibili che coprono nativamente Python 3.13, rimuovendo il precedente vincolo di compatibilità.
15+
- Aggiornati i workflow CI/CD (`test_build.yml`, `beta-release.yml`) per compilare con Python 3.13.
16+
- Aggiornata tutta la documentazione (README, DEVELOPMENT, ARCHITECTURE, CONTRIBUTING, TROUBLESHOOTING, USER_GUIDE, GUIDA_UTENTE) e `setup_env.py` per riflettere il nuovo requisito.
17+
- Verificata l'intera suite di test (11/11) e una build completa (PyInstaller) su Python 3.13 in ambiente isolato prima del merge.
18+
1019
## [2.0.6] - 2026-07-06
1120

1221
### ⚡ Optimized (Dependencies)

CONTRIBUTING.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -194,7 +194,7 @@ git commit -m "feat(ai): add IBAN detection to Presidio pipeline"
194194
git commit -m "fix(export): resolve memory doubling in forensic scrubbing"
195195

196196
# Documentation
197-
git commit -m "docs: update installation guide for Python 3.12"
197+
git commit -m "docs: update installation guide for Python 3.13"
198198

199199
# Performance
200200
git commit -m "perf(allowlist): implement O(1) exact-match lookup"
@@ -279,7 +279,7 @@ python NullifyPDF.py
279279

280280
# macOS/Linux (Bash)
281281
export NULLIFYPDF_DEBUG=true
282-
python3.12 NullifyPDF.py
282+
python3.13 NullifyPDF.py
283283
```
284284

285285
---
@@ -351,7 +351,7 @@ feature/your-feature (your work)
351351

352352
## 🎓 Learning Resources
353353

354-
- **Python 3.12**[docs.python.org](https://docs.python.org/3.12/)
354+
- **Python 3.13**[docs.python.org](https://docs.python.org/3.13/)
355355
- **PySide6**[doc.qt.io/qtforpython](https://doc.qt.io/qtforpython/)
356356
- **PyMuPDF**[pymupdf.io](https://pymupdf.io/)
357357
- **spaCy**[spacy.io](https://spacy.io/)

DEVELOPMENT.md

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
Complete guide for developers setting up a local development environment and contributing to NullifyPDF.
44

55
> [!IMPORTANT]
6-
> Requires **Python 3.12**. Older versions are not compatible with PyMuPDF wheels.
6+
> Requires **Python 3.13**. Older versions are not compatible with PyMuPDF wheels.
77
88
---
99

@@ -13,7 +13,7 @@ Before starting, verify you have:
1313

1414
| 📦 Requirement | 💾 Space | 📝 Notes |
1515
| ----------------------- | ------- | --------------------------------------------- |
16-
| **Python 3.12** | 150 MB | [Download](https://www.python.org/downloads/) |
16+
| **Python 3.13** | 150 MB | [Download](https://www.python.org/downloads/) |
1717
| **Git** | 50 MB | [Download](https://git-scm.com/) |
1818
| **Virtual Environment** | 2 GB | `.venv/` auto-created by setup script |
1919
| **Disk Space** | 3 GB | Dependencies + spaCy models |
@@ -30,17 +30,17 @@ git clone https://github.com/overwrite00/NullifyPDF.git
3030
cd NullifyPDF
3131
```
3232

33-
### 2️⃣ Verify Python 3.12
33+
### 2️⃣ Verify Python 3.13
3434

3535
```bash
3636
# Windows
37-
py -3.12 --version
37+
py -3.13 --version
3838

3939
# macOS/Linux
40-
python3.12 --version
40+
python3.13 --version
4141
```
4242

43-
Should output: `Python 3.12.x`
43+
Should output: `Python 3.13.x`
4444

4545
### 3️⃣ Run Automated Setup
4646

@@ -338,7 +338,7 @@ python NullifyPDF.py
338338

339339
# macOS/Linux
340340
export NULLIFYPDF_DEBUG=true
341-
python3.12 NullifyPDF.py
341+
python3.13 NullifyPDF.py
342342
```
343343

344344
**Effect:** Logs verbose output to `~/.nullifypdf/logs/nullifypdf.log`

GUIDA_UTENTE.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -116,7 +116,7 @@ python NullifyPDF.py
116116
### macOS/Linux (Bash)
117117
```bash
118118
export NULLIFYPDF_DEBUG=true
119-
python3.12 NullifyPDF.py
119+
python3.13 NullifyPDF.py
120120
```
121121

122122
**Effetto**: Il programma creerà log più dettagliati con stacktrace completi in:

NullifyPDF.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@
4444
)
4545
from PySide6.QtCore import Qt, QThread, QObject, Signal, Slot, QRectF, QPointF, QMutex, QMutexLocker
4646

47-
__version__ = "2.0.6"
47+
__version__ = "2.0.7"
4848

4949

5050
def setup_logging() -> logging.Logger:

README.md

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
![GitHub Release](https://img.shields.io/github/v/release/overwrite00/NullifyPDF?style=flat-square&color=1fb2e0)
44
![GitHub Actions Workflow Status](https://img.shields.io/github/actions/workflow/status/overwrite00/NullifyPDF/release.yml?style=flat-square&label=build)
55
![GitHub License](https://img.shields.io/github/license/overwrite00/NullifyPDF?style=flat-square&color=blue)
6-
![Python Version](https://img.shields.io/badge/python-3.12-blue?style=flat-square&logo=python)
6+
![Python Version](https://img.shields.io/badge/python-3.13-blue?style=flat-square&logo=python)
77

88
<p align="center">
99
<img src="images/NullifyPDF.png" alt="NullifyPDF Logo" width="500">
@@ -63,7 +63,7 @@ To keep NullifyPDF lightweight, 100% offline, and secure, be aware of these tech
6363
### 📋 System Requirements
6464

6565
```
66-
✅ Python 3.12 (required for PyMuPDF wheel compatibility)
66+
✅ Python 3.13 (required for PyMuPDF wheel compatibility)
6767
✅ 2 GB disk space (dependencies + spaCy models)
6868
✅ 4 GB RAM minimum (8 GB recommended for large PDFs)
6969
```
@@ -80,9 +80,9 @@ To keep NullifyPDF lightweight, 100% offline, and secure, be aware of these tech
8080

8181
Download the latest pre-compiled executable from [Releases](https://github.com/overwrite00/NullifyPDF/releases):
8282

83-
- **Windows:** `NullifyPDF_v2.0.6_Windows.exe`
84-
- **macOS:** `NullifyPDF_v2.0.6_macOS.app`
85-
- **Linux:** `nullifypdf_2.0.6_amd64.deb` or `.rpm`
83+
- **Windows:** `NullifyPDF_v2.0.7_Windows.exe`
84+
- **macOS:** `NullifyPDF_v2.0.7_macOS.app`
85+
- **Linux:** `nullifypdf_2.0.7_amd64.deb` or `.rpm`
8686

8787
No installation needed on Windows/macOS — just run. Linux users: `sudo dpkg -i nullifypdf_*.deb`
8888

@@ -98,14 +98,14 @@ No installation needed on Windows/macOS — just run. Linux users: `sudo dpkg -i
9898
cd NullifyPDF
9999
```
100100

101-
2. **Verify Python 3.12**
101+
2. **Verify Python 3.13**
102102

103103
```bash
104104
# Windows
105-
py -3.12 --version
105+
py -3.13 --version
106106

107107
# macOS/Linux
108-
python3.12 --version
108+
python3.13 --version
109109
```
110110

111111
3. **Run automated setup** (recommended)
@@ -128,7 +128,7 @@ No installation needed on Windows/macOS — just run. Linux users: `sudo dpkg -i
128128

129129
# macOS/Linux (Bash)
130130
source .venv/bin/activate
131-
python3.12 NullifyPDF.py
131+
python3.13 NullifyPDF.py
132132
```
133133

134134
</details>
@@ -140,22 +140,22 @@ The repository includes cross-platform Python scripts for developers:
140140
<details>
141141
<summary><strong>🔧 setup_env.py — Environment Setup</strong></summary>
142142

143-
Configures development environment with Python 3.12, virtual environment, and NLP models.
143+
Configures development environment with Python 3.13, virtual environment, and NLP models.
144144

145145
```bash
146146
python setup_env.py
147147
```
148148

149149
**What it does:**
150150
- Detects OS (Windows/macOS/Linux)
151-
- Creates `.venv` with Python 3.12
151+
- Creates `.venv` with Python 3.13
152152
- Installs `requirements.txt` dependencies
153153
- Downloads spaCy models (English, Italian, both)
154154
- Runs smoke tests to verify installation
155155

156156
**Automatic OS detection:**
157-
- Windows: Uses `py -3.12` launcher
158-
- macOS/Linux: Uses `python3.12` directly
157+
- Windows: Uses `py -3.13` launcher
158+
- macOS/Linux: Uses `python3.13` directly
159159

160160
</details>
161161

@@ -172,7 +172,7 @@ python build_local.py
172172
- Cleans temporary directories
173173
- Auto-detects your OS
174174
- Reads version dynamically from code
175-
- Generates named executable: `NullifyPDF_v2.0.6_Windows.exe`
175+
- Generates named executable: `NullifyPDF_v2.0.7_Windows.exe`
176176

177177
**Linux bonus:** On Ubuntu/Fedora, automatically builds `.deb` and `.rpm` packages in `dist/`
178178

@@ -229,7 +229,7 @@ See [SECURITY.md](./SECURITY.md) for responsible disclosure and privacy details.
229229

230230
| Technology | Purpose |
231231
| ---------------------- | --------------------------------------------------- |
232-
| **Python 3.12** | Core language (required for PyMuPDF compatibility) |
232+
| **Python 3.13** | Core language (required for PyMuPDF compatibility) |
233233
| **PySide6 (Qt6)** | Modern dark-mode GUI with multi-threading |
234234
| **PyMuPDF (fitz)** | High-performance PDF manipulation |
235235
| **Microsoft Presidio** | PII (Personally Identifiable Information) detection |

0 commit comments

Comments
 (0)