Fix tests

This commit is contained in:
Kylian Schmidt
2026-04-22 14:42:25 +02:00
parent 27ea17246c
commit bec86d0f07
8 changed files with 132 additions and 56 deletions
+41
View File
@@ -28,9 +28,50 @@ from gallery.config import (
)
from gallery.api import generate
# Export utility functions for testing and advanced usage
from gallery.utils.stats import (
calculate_directory_stats,
format_file_size,
)
from gallery.utils.processing import (
convert_pdf_to_png,
needs_update,
process_plot_files,
render_gallery_page,
)
from gallery.utils.metadata import (
load_folder_metadata,
merge_metadata,
save_metadata_cache,
load_metadata_file,
resolve_metadata_for_plot,
)
from gallery.utils.datetime_utils import (
datetime_from_timestamp,
strftime_filter,
)
from gallery.builder import build_gallery, get_template
__all__ = [
"generate",
"GalleryConfig",
"GallerySource",
"GalleryDefaults",
# Utilities
"calculate_directory_stats",
"format_file_size",
"convert_pdf_to_png",
"needs_update",
"process_plot_files",
"render_gallery_page",
"load_folder_metadata",
"merge_metadata",
"save_metadata_cache",
"load_metadata_file",
"resolve_metadata_for_plot",
"build_gallery",
"get_template",
"datetime_from_timestamp",
"strftime_filter",
]
+12 -12
View File
@@ -3,9 +3,13 @@
import shutil
from pathlib import Path
from typing import Dict, Any, Optional
from jinja2 import Environment, FileSystemLoader
from jinja2 import Environment, FileSystemLoader, Template
from gallery.config import GalleryConfig
from gallery.utils.datetime_utils import (
datetime_from_timestamp,
strftime_filter,
)
from gallery.utils.metadata import (
load_folder_metadata,
merge_metadata,
@@ -18,7 +22,7 @@ from gallery.utils.processing import (
)
def get_template(template_dir: Optional[Path] = None):
def get_template(template_dir: Optional[Path | str] = None):
"""
Get the Jinja2 template for gallery rendering.
@@ -29,6 +33,9 @@ def get_template(template_dir: Optional[Path] = None):
Returns:
Jinja2 Template object
"""
if isinstance(template_dir, str):
template_dir = Path(template_dir)
if template_dir is None:
# Use package-included template
import gallery
@@ -37,15 +44,6 @@ def get_template(template_dir: Optional[Path] = None):
env = Environment(loader=FileSystemLoader(str(template_dir)))
def datetime_from_timestamp(timestamp: float):
"""Convert a Unix timestamp to a datetime object."""
from datetime import datetime
return datetime.fromtimestamp(timestamp)
def strftime_filter(dt, fmt: str) -> str:
"""Format a datetime object using strftime."""
return dt.strftime(fmt)
env.filters['datetime_from_timestamp'] = datetime_from_timestamp
env.filters['strftime'] = strftime_filter
@@ -54,9 +52,9 @@ def get_template(template_dir: Optional[Path] = None):
def build_gallery(
config: GalleryConfig,
template,
source_dir: Path,
web_dir: Path,
template: Template = None,
relative_path: Path = None,
inherited_metadata: Optional[Dict[str, Any]] = None,
) -> None:
@@ -75,6 +73,8 @@ def build_gallery(
relative_path: Relative path from gallery root (for navigation)
inherited_metadata: Metadata inherited from parent directories
"""
if not template:
template = Template("./templates/gallery.html")
if relative_path is None:
relative_path = Path(".")
+30
View File
@@ -0,0 +1,30 @@
"""Date and time utility functions."""
from datetime import datetime
def datetime_from_timestamp(timestamp: float) -> datetime:
"""
Convert a Unix timestamp to a datetime object.
Args:
timestamp: Unix timestamp as float
Returns:
datetime object
"""
return datetime.fromtimestamp(timestamp)
def strftime_filter(dt: datetime, fmt: str) -> str:
"""
Format a datetime object using strftime.
Args:
dt: datetime object to format
fmt: strftime format string
Returns:
Formatted datetime string
"""
return dt.strftime(fmt)
+5 -1
View File
@@ -60,7 +60,11 @@ def load_folder_metadata(folder_path: Path) -> Dict[str, Any]:
"""
# Try YAML first, then JSON for backwards compatibility
for filename in ['metadata.yaml', 'metadata.yml', 'metadata.json']:
metadata_path = folder_path / filename
try:
metadata_path = folder_path / filename
except TypeError as e:
raise RuntimeError(f"DEBUG {folder_path=}, {filename=}")
if metadata_path.exists():
return load_metadata_file(metadata_path)