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
5 changes: 1 addition & 4 deletions .github/PULL_REQUEST_TEMPLATE.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,4 @@
<!--
Please prefix your PR title with [WIP] for PRs that are in
progress and [MRG] when you consider them ready for review.
-->
<!-- Please use Github's 'Draft Pull Request' for PRs that are in-progress -->
#### Reference issue
The issue describing the bug or feature that this PR addresses.

Expand Down
1 change: 1 addition & 0 deletions docs/changelog/index.rst
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ Release Notes
.. toctree::
:maxdepth: 1

v3.0.0
v2.1.1
v2.1.0
v2.0.1
Expand Down
11 changes: 0 additions & 11 deletions docs/changelog/v2.2.0.rst

This file was deleted.

14 changes: 11 additions & 3 deletions docs/changelog/v3.0.0.rst
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,14 @@

The major breaking changes with the version 3.0 release are:

* Support for pydicom v3
* Changed ``StoragePresentationContexts`` to match DCMTK implementation
* Some presentation contexts were replaced
* Minimum required pydicom version is 3.0
* Changed :attr:`~pynetdicom.presentation.StoragePresentationContexts` to match DCMTK
implementation

Changes
-------

* Move and Get SCPs are now limited to a maximum of 65535 matches (:issue:`982`)
* Minimum supported pydicom version is 3.0 (:issue:`981`)
* Added support for Python 3.13
* Updated SOP classes to version 2025b of the DICOM Standard
5 changes: 5 additions & 0 deletions docs/reference/sop_classes.rst
Original file line number Diff line number Diff line change
Expand Up @@ -286,13 +286,15 @@ Storage
General32bitECGWaveformStorage
GrayscalePlanarMPRVolumetricPresentationStateStorage
GrayscaleSoftcopyPresentationStateStorage
HeightMapSegmentationStorage
HemodynamicWaveformStorage
ImplantationPlanSRStorage
IntraocularLensCalculationsStorage
IntravascularOpticalCoherenceTomographyImageStorageForPresentation
IntravascularOpticalCoherenceTomographyImageStorageForProcessing
KeratometryMeasurementsStorage
KeyObjectSelectionDocumentStorage
LabelMapSegmentationStorage
LegacyConvertedEnhancedCTImageStorage
LegacyConvertedEnhancedMRImageStorage
LegacyConvertedEnhancedPETImageStorage
Expand Down Expand Up @@ -381,6 +383,9 @@ Storage
VLSlideCoordinatesMicroscopicImageStorage
VLWholeSlideMicroscopyImageStorage
VolumeRenderingVolumetricPresentationStateStorage
WaveformAcquisitionPresentationStateStorage
WaveformAnnotationSRStorage
WaveformPresentationStateStorage
WideFieldOphthalmicPhotography3DCoordinatesImageStorage
WideFieldOphthalmicPhotographyStereographicProjectionImageStorage
XAPerformedProcedureProtocolStorage
Expand Down
40 changes: 40 additions & 0 deletions pynetdicom/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -81,3 +81,43 @@ def debug_logger() -> None:
formatter = logging.Formatter("%(levelname).1s: %(message)s")
handler.setFormatter(formatter)
logger.addHandler(handler)


__all__ = [
"__version__",
"PYNETDICOM_UID_PREFIX",
"PYNETDICOM_IMPLEMENTATION_VERSION",
"PYNETDICOM_IMPLEMENTATION_UID",
"evt",
"AE",
"ALL_TRANSFER_SYNTAXES",
"DEFAULT_TRANSFER_SYNTAXES",
"build_context",
"build_role",
"AllStoragePresentationContexts",
"ApplicationEventLoggingPresentationContexts",
"BasicWorklistManagementPresentationContexts",
"ColorPalettePresentationContexts",
"DefinedProcedureProtocolPresentationContexts",
"DisplaySystemPresentationContexts",
"HangingProtocolPresentationContexts",
"ImplantTemplatePresentationContexts",
"InstanceAvailabilityPresentationContexts",
"MediaCreationManagementPresentationContexts",
"MediaStoragePresentationContexts",
"ModalityPerformedPresentationContexts",
"NonPatientObjectPresentationContexts",
"PrintManagementPresentationContexts",
"ProcedureStepPresentationContexts",
"ProtocolApprovalPresentationContexts",
"QueryRetrievePresentationContexts",
"RelevantPatientInformationPresentationContexts",
"RTMachineVerificationPresentationContexts",
"StoragePresentationContexts",
"StorageCommitmentPresentationContexts",
"SubstanceAdministrationPresentationContexts",
"UnifiedProcedurePresentationContexts",
"VerificationPresentationContexts",
"register_uid",
"debug_logger",
]
12 changes: 6 additions & 6 deletions pynetdicom/_config.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
"""pynetdicom configuration options"""

from typing import Optional, Tuple, Dict, Callable, Any
from typing import Callable, Any

from pynetdicom._validators import validate_ae, validate_ui

Expand Down Expand Up @@ -170,7 +170,7 @@
"""


WINDOWS_TIMER_RESOLUTION: Optional[float] = 1
WINDOWS_TIMER_RESOLUTION: float | None = 1
"""Set the minimum timer resolution for Microsoft Windows.

.. versionadded:: 2.0
Expand All @@ -195,7 +195,7 @@
"""


CODECS: Tuple[str, ...] = ("ascii",)
CODECS: tuple[str, ...] = ("ascii",)
"""Customise the codecs used to decode text values.

.. versionadded:: 2.0
Expand Down Expand Up @@ -260,7 +260,7 @@
"""


VALIDATORS: Dict[str, Callable[[Any], Tuple[bool, str]]] = {
VALIDATORS: dict[str, Callable[[Any], tuple[bool, str]]] = {
"AE": validate_ae,
"UI": validate_ui,
}
Expand All @@ -269,7 +269,7 @@
.. versionadded:: 2.0

**AE**
Function signature: ``def func(value: str) -> Tuple[bool, str]``
Function signature: ``def func(value: str) -> tuple[bool, str]``

Where `value` is the AE title to be validated as a :class:`str`.

Expand All @@ -279,7 +279,7 @@
about why validation has failed.

**UI**
Function signature: ``def func(value: pydicom.uid.UID) -> Tuple[bool, str]``
Function signature: ``def func(value: pydicom.uid.UID) -> tuple[bool, str]``

Where `value` is the :class:`~pydicom.uid.UID` to be validated.

Expand Down
15 changes: 15 additions & 0 deletions pynetdicom/_globals.py
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,7 @@
"1.2.840.10008.1.2.4.94", # JPIP Referenced
"1.2.840.10008.1.2.4.95", # JPIP Referenced Deflate
"1.2.840.10008.1.2.4.100", # MPEG2 Main Profile / Main Level
"1.2.840.10008.1.2.4.100.1", # Fragmentable MPEG2 Main Profile / Main Level
"1.2.840.10008.1.2.4.101", # MPEG2 Main Profile / High Level
"1.2.840.10008.1.2.4.101.1", # Fragmentable MPEG2 Main Profile / High Level
"1.2.840.10008.1.2.4.102", # MPEG-4 AVC/H.264 High Profile / Level 4.1
Expand All @@ -59,12 +60,19 @@
"1.2.840.10008.1.2.4.106.1", # Fragmentable MPEG-4 AVC/H.264 Stereo High Profile
"1.2.840.10008.1.2.4.107", # HEVC/H.265 Main Profile / Level 5.1
"1.2.840.10008.1.2.4.108", # HEVC/H.265 Main 10 Profile / Level 5.1
"1.2.840.10008.1.2.4.110", # JPEG XL Lossless
"1.2.840.10008.1.2.4.111", # JPEG XL JPEG Recompression
"1.2.840.10008.1.2.4.112", # JPEG XL
"1.2.840.10008.1.2.4.201", # High-Throughput JPEG 2000 Lossless
"1.2.840.10008.1.2.4.202", # High-Throughput JPEG 2000 RPCL
"1.2.840.10008.1.2.4.203", # High-Throughput JPEG 2000
"1.2.840.10008.1.2.4.204", # JPIP HT2K Referenced
"1.2.840.10008.1.2.4.205", # JPIP HTJ2k Referenced Deflate
"1.2.840.10008.1.2.5", # RLE Lossless
"1.2.840.10008.1.2.7.1", # SMPTE ST 2110-20 Uncompressed Progressive Active Video
"1.2.840.10008.1.2.7.2", # SMPTE ST 2110-20 Uncompressed Interlaced Active Video
"1.2.840.10008.1.2.7.3", # SMPTE ST 2110-30 PCM Digital Audio
"1.2.840.10008.1.2.8.1", # Deflated Image Frame Compression
]
"""All current transfer syntaxes and explicit VR big endian.

Expand Down Expand Up @@ -100,12 +108,19 @@
* Fragmentable MPEG-4 AVC/H.264 Stereo High Profile
* HEVC/H.265 Main Profile / Level 5.1
* HEVC/H.265 Main 10 Profile / Level 5.1
* JPEG XL Lossless
* JPEG XL JPEG Recompression
* JPEG XL
* High-Throughput JPEG 2000 Lossless
* High-Throughput JPEG 2000 with RPCL Lossless
* High-Throughput JPEG 2000
* JPIP HTK2K Referenced
* JPIP HTK2K Referenced Deflate
* RLE Lossless
* SMPTE ST 2110-20 Uncompressed Progressive Active Video
* SMPTE ST 2110-20 Uncompressed Interlaced Active Video
* SMPTE ST 2110-30 PCM Digital Audio
* Deflated Image Frame Compression
"""

# The association operation modes
Expand Down
Loading