Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
17 changes: 8 additions & 9 deletions .github/workflows/python-app.yml
Original file line number Diff line number Diff line change
Expand Up @@ -21,16 +21,15 @@ jobs:
- uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: '3.11'
- name: Install Libreoffice and uno dependencies
- name: Install LibreOffice and uno dependencies
run: |
sudo apt-get install libreoffice python3-uno imagemagick python3.11 python3.11-venv
- name: Install python environment ${{ matrix.python-version }}
sudo apt-get update
sudo apt-get install -y libreoffice python3-uno imagemagick # Removed explicit python3.10 and python3.10-venv
- name: Install python environment
run: |
sudo python3.11 -m venv .python3.11 --system-site-packages
sudo .python3.11/bin/pip install .
sudo .python3.11/bin/pip install pytest
python -m venv .venv --system-site-packages # Use 'python' and remove 'sudo'
.venv/bin/pip install . # Remove 'sudo'
.venv/bin/pip install pytest # Remove 'sudo'
- name: Run Tests
run: |
sudo .python3.11/bin/pytest -v
.venv/bin/pytest -v # Correct venv path and remove 'sudo'
4 changes: 4 additions & 0 deletions .vscode/settings.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
{
"python-envs.defaultEnvManager": "ms-python.python:poetry",
"python-envs.defaultPackageManager": "ms-python.python:poetry"
}
2,286 changes: 1,375 additions & 911 deletions poetry.lock

Large diffs are not rendered by default.

62 changes: 34 additions & 28 deletions pyproject.toml
Original file line number Diff line number Diff line change
@@ -1,35 +1,42 @@
[tool.poetry]
[project]
name = "unogenerator"
version = "1.0.0"
description = "Libreoffice files generator programmatically with python and Libreoffice server instances"
authors = ["turulomio <turulomio@yahoo.es>"]
license = "GPL-3.0 license"
authors = [
{ name = "turulomio", email = "turulomio@yahoo.es" }
]
license = { text = "GPL-3.0-or-later" }
readme = "README.md"
requires-python = ">=3.10,<4"
dependencies = [
"tqdm>=4.67.3",
"humanize>=4.15.0",
"colorama>=0.4.6",
"polib>=1.2.0",
"psutil>=7.2.2",
"pydicts>=1.1.0",
]

[tool.poetry.dependencies]
python = ">3.9,<4"
tqdm = ">=4.66.5"
humanize = ">=4.11.0"
colorama = ">=0.4.6"
polib = ">=1.2.0"
psutil = ">=6.0.0"
pydicts = ">=0.16.0"
[project.urls]
homepage = "https://github.com/turulomio/unogenerator/"
repository = "https://github.com/turulomio/unogenerator/"
changelog = "https://github.com/turulomio/unogenerator#changelog"

[tool.poetry.group.dev.dependencies]
poetry = ">=1.8.3"
poethepoet = ">=0.29.0"
pytest = ">=8.3.3"
coverage = ">=7.6.1"
[project.scripts]
unogenerator_demo = "unogenerator.demo:demo"
unogenerator_cleaner = "unogenerator.monitor:cleaner"
unogenerator_monitor = "unogenerator.monitor:monitor"
unogenerator_translation = "unogenerator.translation:translation"

[build-system]
requires = ["poetry-core"]
build-backend = "poetry.core.masonry.api"
[tool.poetry]
# Only Poetry-specific configuration stays here
packages = [{ include = "unogenerator" }]

[tool.poetry.scripts]
unogenerator_demo='unogenerator.demo:demo'
unogenerator_cleaner='unogenerator.monitor:cleaner'
unogenerator_monitor='unogenerator.monitor:monitor'
unogenerator_translation='unogenerator.translation:translation'
[tool.poetry.group.dev.dependencies]
poetry = ">=2.3.4"
poethepoet = ">=0.44.0"
pytest = ">=9.0.3"
coverage = ">=7.13.5"

[tool.poe.tasks]
coverage = { script = "unogenerator.poethepoet:coverage" }
Expand All @@ -41,7 +48,6 @@ translate = { script = "unogenerator.poethepoet:translate" }
docker = { script = "unogenerator.poethepoet:docker" }
docker_build = { script = "unogenerator.poethepoet:docker_build" }

[project.urls]
homepage = "https://github.com/turulomio/unogenerator/"
repository = "https://github.com/turulomio/unogenerator/"
changelog = "https://github.com/turulomio/unogenerator#changelog"
[build-system]
requires = ["poetry-core>=2.0.0"]
build-backend = "poetry.core.masonry.api"
8 changes: 8 additions & 0 deletions tests/test_unogenerator.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
from os import remove, path
from pytest import raises
from pydicts import casts, currency, percentage, lod
from importlib.resources import files

from unogenerator import can_import_uno
if can_import_uno():
Expand Down Expand Up @@ -344,3 +345,10 @@ def test_ods_toDictionaryOfDetailedValues(libreoffice_server):
assert detailed_values["sheets"][0]["rows"]==3
assert detailed_values["dictionary"][("One", "A3")]["is_formula"]==True
assert detailed_values["dictionary"][("One", "A3")]["value"]==4


def test_ods_template_with_importlib_resources_files():
with ODS(files("unogenerator")/"templates/colored.ods") as doc:
doc.addCell("A1", "Hola")
doc.export_pdf("test_ods_template_with_importlib_resources_files.pdf")
remove("test_ods_template_with_importlib_resources_files.pdf")
153 changes: 0 additions & 153 deletions unogenerator.epj

This file was deleted.

21 changes: 17 additions & 4 deletions unogenerator/monitor.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,11 +5,13 @@
from gettext import translation
from pydicts import lod
from importlib.resources import files
from os import scandir, remove # Removed 'system', added 'remove'
from humanize import naturalsize
from psutil import process_iter
from unogenerator import __version__
from unogenerator import __version__ # Added 'run' for subprocess, 'rmtree' for directory removal
from unogenerator.commons import argparse_epilog, addDebugSystem, green, red, yellow, white
from os import system, scandir
from shutil import rmtree
from subprocess import run
from pydicts.percentage import Percentage
from time import sleep

Expand Down Expand Up @@ -133,5 +135,16 @@ def cleaner():
## @param restart boolean. To restart unogenerator server when idle and used memory above recommended memory
## @param recommended. Integer. Recomended memory in Mb
def command_cleaner():
system("killall -9 soffice.bin")
system("rm -Rf /tmp/unogenerator*")
# Kill all soffice.bin processes
# Using check=False because killall might exit with 1 if no processes are found,
# which is not necessarily an error in this context.
run(['killall', '-9', 'soffice.bin'], check=False)

# Remove /tmp/unogenerator* directories/files
for entry in scandir("/tmp"):
if entry.name.startswith("unogenerator"):
full_path = f"/tmp/{entry.name}"
if entry.is_dir():
rmtree(full_path, ignore_errors=True)
else:
remove(full_path)
Loading
Loading