Skip to content

Commit 3678e53

Browse files
committed
Enforce standard conformance in file client
1 parent f867e1a commit 3678e53

File tree

1 file changed

+34
-0
lines changed

1 file changed

+34
-0
lines changed

src/dicomweb_client/file.py

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
from pathlib import Path
1515
from typing import (
1616
Any,
17+
Callable,
1718
Dict,
1819
Iterator,
1920
Iterable,
@@ -28,6 +29,7 @@
2829
import numpy as np
2930
from PIL import Image
3031
from PIL.ImageCms import ImageCmsProfile, createProfile
32+
from pydicom import config as pydicom_config
3133
from pydicom.datadict import dictionary_VR, keyword_for_tag, tag_for_keyword
3234
from pydicom.dataset import Dataset, FileMetaDataset
3335
from pydicom.encaps import encapsulate, get_frame_offsets
@@ -66,6 +68,37 @@
6668
_END_MARKERS = {_JPEG_EOI_MARKER, _JPEG2000_EOC_MARKER}
6769

6870

71+
def _enforce_standard_conformance(fn: Callable) -> Callable:
72+
"""Enforce standard conformance during a function call.
73+
74+
Parameters
75+
----------
76+
fn: Callable
77+
Function that should be wrapped
78+
79+
Returns
80+
-------
81+
Callable
82+
Wrapped function
83+
84+
"""
85+
def wrapper(*args, **kwargs):
86+
default_reading_mode = int(
87+
pydicom_config.settings.reading_validation_mode
88+
)
89+
default_writing_mode = int(
90+
pydicom_config.settings.writing_validation_mode
91+
)
92+
pydicom_config.settings.reading_validation_mode = pydicom_config.RAISE
93+
pydicom_config.settings.writing_validation_mode = pydicom_config.RAISE
94+
result = fn(*args, **kwargs)
95+
pydicom_config.settings.reading_validation_mode = default_reading_mode
96+
pydicom_config.settings.writing_validation_mode = default_writing_mode
97+
return result
98+
99+
return wrapper
100+
101+
69102
def _get_bot(fp: DicomFileLike, number_of_frames: int) -> List[int]:
70103
"""Read or build the Basic Offset Table (BOT).
71104
@@ -964,6 +997,7 @@ def _drop_db(self):
964997
cursor.execute('DROP TABLE IF EXISTS studies')
965998
cursor.close()
966999

1000+
@_enforce_standard_conformance
9671001
def _update_db(self):
9681002
"""Update database."""
9691003
all_attributes = (

0 commit comments

Comments
 (0)