Skip to content
Open
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
10 changes: 5 additions & 5 deletions pynetdicom/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -42,15 +42,13 @@
# Convenience imports
# ruff: noqa: E402,F401
from pynetdicom import events as evt
from pynetdicom.ae import ApplicationEntity as AE
from pynetdicom.association import Association
from pynetdicom._globals import (
ALL_TRANSFER_SYNTAXES,
DEFAULT_TRANSFER_SYNTAXES,
)
from pynetdicom.ae import ApplicationEntity as AE
from pynetdicom.association import Association
from pynetdicom.presentation import (
build_context,
build_role,
AllStoragePresentationContexts,
ApplicationEventLoggingPresentationContexts,
BasicWorklistManagementPresentationContexts,
Expand All @@ -70,11 +68,13 @@
QueryRetrievePresentationContexts,
RelevantPatientInformationPresentationContexts,
RTMachineVerificationPresentationContexts,
StoragePresentationContexts,
StorageCommitmentPresentationContexts,
StoragePresentationContexts,
SubstanceAdministrationPresentationContexts,
UnifiedProcedurePresentationContexts,
VerificationPresentationContexts,
build_context,
build_role,
)
from pynetdicom.sop_class import register_uid

Expand Down
2 changes: 1 addition & 1 deletion pynetdicom/_config.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
"""pynetdicom configuration options"""

from typing import Any
from collections.abc import Callable
from typing import Any

from pynetdicom._validators import validate_ae, validate_ui

Expand Down
43 changes: 23 additions & 20 deletions pynetdicom/_handlers.py
Original file line number Diff line number Diff line change
@@ -1,54 +1,57 @@
"""Standard logging event handlers."""

import logging
from struct import unpack, calcsize
from typing import TYPE_CHECKING, cast, Any
from collections.abc import Sequence, Iterator
from collections.abc import Iterator, Sequence
from struct import calcsize, unpack
from typing import TYPE_CHECKING, Any, cast

from pydicom.dataset import Dataset
from pydicom.uid import UID

from pynetdicom.dimse_messages import (
C_STORE_RQ,
C_STORE_RSP,
C_CANCEL_RQ,
C_ECHO_RQ,
C_ECHO_RSP,
C_FIND_RQ,
C_FIND_RSP,
C_GET_RQ,
C_GET_RSP,
C_MOVE_RQ,
C_MOVE_RSP,
C_ECHO_RQ,
C_ECHO_RSP,
C_CANCEL_RQ,
N_EVENT_REPORT_RQ,
N_EVENT_REPORT_RSP,
N_GET_RQ,
N_GET_RSP,
N_SET_RQ,
N_SET_RSP,
C_STORE_RQ,
C_STORE_RSP,
N_ACTION_RQ,
N_ACTION_RSP,
N_CREATE_RQ,
N_CREATE_RSP,
N_DELETE_RQ,
N_DELETE_RSP,
N_EVENT_REPORT_RQ,
N_EVENT_REPORT_RSP,
N_GET_RQ,
N_GET_RSP,
N_SET_RQ,
N_SET_RSP,
)
from pynetdicom.pdu import (
A_ASSOCIATE_RQ,
A_ABORT_RQ,
A_ASSOCIATE_AC,
A_ASSOCIATE_RJ,
A_RELEASE_RQ,
A_ASSOCIATE_RQ,
A_RELEASE_RP,
A_ABORT_RQ,
A_RELEASE_RQ,
P_DATA_TF,
)
from pynetdicom.sop_class import uid_to_service_class
from pynetdicom.utils import pretty_bytes, decode_bytes
from pynetdicom.utils import decode_bytes, pretty_bytes

if TYPE_CHECKING: # pragma: no cover
from pynetdicom.events import Event
from pynetdicom.pdu_items import UserInformationItem, UserIdentitySubItemRQ
from pynetdicom.pdu_items import SOPClassCommonExtendedNegotiation
from pynetdicom.pdu_items import (
SOPClassCommonExtendedNegotiation,
UserIdentitySubItemRQ,
UserInformationItem,
)


LOGGER = logging.getLogger(__name__)
Expand Down
2 changes: 1 addition & 1 deletion pynetdicom/_version.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
"""Version information for pynetdicom based on PEP396 and 440"""

from importlib.metadata import version
import re
from importlib.metadata import version

# pynetdicom version
__version__: str = version("pynetdicom")
Expand Down
8 changes: 4 additions & 4 deletions pynetdicom/acse.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,21 +5,21 @@

from pydicom.uid import UID

from pynetdicom import evt, _config
from pynetdicom import _config, evt
from pynetdicom._globals import APPLICATION_CONTEXT_NAME
from pynetdicom.pdu_primitives import (
A_ASSOCIATE,
A_RELEASE,
A_ABORT,
A_ASSOCIATE,
A_P_ABORT,
A_RELEASE,
AsynchronousOperationsWindowNegotiation,
SOPClassCommonExtendedNegotiation,
SOPClassExtendedNegotiation,
UserIdentityNegotiation,
)
from pynetdicom.presentation import (
negotiate_as_requestor,
negotiate_as_acceptor,
negotiate_as_requestor,
negotiate_unrestricted,
)

Expand Down
32 changes: 16 additions & 16 deletions pynetdicom/ae.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,39 +2,39 @@
The main user class, represents a DICOM Application Entity
"""

from copy import deepcopy
from datetime import datetime
import logging
import socket
from ssl import SSLContext
import threading
import warnings
from collections.abc import Sequence
from copy import deepcopy
from datetime import datetime
from ssl import SSLContext
from typing import (
cast,
TypeVar,
Any,
TypeVar,
cast,
)
from collections.abc import Sequence
import warnings

from pydicom.uid import UID

from pynetdicom import _config
from pynetdicom._globals import (
DEFAULT_MAX_LENGTH,
DEFAULT_TRANSFER_SYNTAXES,
MODE_REQUESTOR,
)
from pynetdicom.association import Association
from pynetdicom.events import EventHandlerType
from pynetdicom.presentation import PresentationContext
from pynetdicom.pdu_primitives import _UI
from pynetdicom.presentation import PresentationContext
from pynetdicom.transport import (
AssociationSocket,
AddressInformation,
AssociationServer,
AssociationSocket,
ThreadedAssociationServer,
AddressInformation,
)
from pynetdicom.utils import make_target, set_ae, decode_bytes, set_uid
from pynetdicom._globals import (
MODE_REQUESTOR,
DEFAULT_MAX_LENGTH,
DEFAULT_TRANSFER_SYNTAXES,
)
from pynetdicom.utils import decode_bytes, make_target, set_ae, set_uid

LOGGER = logging.getLogger(__name__)

Expand Down
2 changes: 1 addition & 1 deletion pynetdicom/apps/common.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
from struct import pack

from pydicom import dcmread
from pydicom.datadict import tag_for_keyword, repeater_has_keyword, get_entry
from pydicom.datadict import get_entry, repeater_has_keyword, tag_for_keyword
from pydicom.dataset import Dataset
from pydicom.tag import Tag
from pydicom.uid import DeflatedExplicitVRLittleEndian
Expand Down
4 changes: 2 additions & 2 deletions pynetdicom/apps/echoscp/echoscp.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,14 +5,14 @@
import sys

from pydicom.uid import (
ExplicitVRBigEndian,
ExplicitVRLittleEndian,
ImplicitVRLittleEndian,
ExplicitVRBigEndian,
)

from pynetdicom import AE, evt
from pynetdicom.apps.common import setup_logging
from pynetdicom._globals import ALL_TRANSFER_SYNTAXES, DEFAULT_MAX_LENGTH
from pynetdicom.apps.common import setup_logging
from pynetdicom.sop_class import Verification

__version__ = "0.7.0"
Expand Down
6 changes: 3 additions & 3 deletions pynetdicom/apps/echoscu/echoscu.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,15 +9,15 @@
import sys

from pydicom.uid import (
DeflatedExplicitVRLittleEndian,
ExplicitVRBigEndian,
ExplicitVRLittleEndian,
ImplicitVRLittleEndian,
ExplicitVRBigEndian,
DeflatedExplicitVRLittleEndian,
)

from pynetdicom import AE
from pynetdicom.apps.common import setup_logging
from pynetdicom._globals import DEFAULT_MAX_LENGTH
from pynetdicom.apps.common import setup_logging
from pynetdicom.sop_class import Verification

__version__ = "0.7.0"
Expand Down
10 changes: 5 additions & 5 deletions pynetdicom/apps/findscu/findscu.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,22 +13,22 @@

from pynetdicom import (
AE,
BasicWorklistManagementPresentationContexts,
QueryRetrievePresentationContexts,
PYNETDICOM_IMPLEMENTATION_UID,
PYNETDICOM_IMPLEMENTATION_VERSION,
PYNETDICOM_UID_PREFIX,
BasicWorklistManagementPresentationContexts,
QueryRetrievePresentationContexts,
UnifiedProcedurePresentationContexts,
)
from pynetdicom.apps.common import create_dataset, setup_logging
from pynetdicom._globals import DEFAULT_MAX_LENGTH
from pynetdicom.apps.common import create_dataset, setup_logging
from pynetdicom.pdu_primitives import SOPClassExtendedNegotiation
from pynetdicom.sop_class import (
ModalityWorklistInformationFind,
UnifiedProcedureStepPull,
PatientRootQueryRetrieveInformationModelFind,
StudyRootQueryRetrieveInformationModelFind,
PatientStudyOnlyQueryRetrieveInformationModelFind,
StudyRootQueryRetrieveInformationModelFind,
UnifiedProcedureStepPull,
)

__version__ = "0.2.0"
Expand Down
6 changes: 3 additions & 3 deletions pynetdicom/apps/getscu/getscu.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,17 +9,17 @@

from pynetdicom import (
AE,
StoragePresentationContexts,
build_role,
evt,
StoragePresentationContexts,
)
from pynetdicom.apps.common import setup_logging, create_dataset, handle_store
from pynetdicom._globals import DEFAULT_MAX_LENGTH
from pynetdicom.apps.common import create_dataset, handle_store, setup_logging
from pynetdicom.pdu_primitives import SOPClassExtendedNegotiation
from pynetdicom.sop_class import (
PatientRootQueryRetrieveInformationModelGet,
StudyRootQueryRetrieveInformationModelGet,
PatientStudyOnlyQueryRetrieveInformationModelGet,
StudyRootQueryRetrieveInformationModelGet,
)

__version__ = "0.4.0"
Expand Down
8 changes: 4 additions & 4 deletions pynetdicom/apps/movescu/movescu.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,17 +9,17 @@

from pynetdicom import (
AE,
evt,
QueryRetrievePresentationContexts,
AllStoragePresentationContexts,
QueryRetrievePresentationContexts,
evt,
)
from pynetdicom.apps.common import setup_logging, create_dataset, handle_store
from pynetdicom._globals import ALL_TRANSFER_SYNTAXES, DEFAULT_MAX_LENGTH
from pynetdicom.apps.common import create_dataset, handle_store, setup_logging
from pynetdicom.pdu_primitives import SOPClassExtendedNegotiation
from pynetdicom.sop_class import (
PatientRootQueryRetrieveInformationModelMove,
StudyRootQueryRetrieveInformationModelMove,
PatientStudyOnlyQueryRetrieveInformationModelMove,
StudyRootQueryRetrieveInformationModelMove,
)

__version__ = "0.4.0"
Expand Down
11 changes: 5 additions & 6 deletions pynetdicom/apps/qrscp/db.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,26 +17,25 @@
* Required keys shall not be in a C-GET or C-MOVE request's Identifier
"""

from collections import OrderedDict
import sys
from collections import OrderedDict

try:
from sqlalchemy import create_engine, Column, ForeignKey, Integer, String
from sqlalchemy import Column, ForeignKey, Integer, String, create_engine
except ImportError:
sys.exit("qrscp requires the sqlalchemy package")

from sqlalchemy.orm import declarative_base

from pydicom.dataset import Dataset
from sqlalchemy.orm import declarative_base

from pynetdicom import build_context
from pynetdicom.sop_class import (
PatientRootQueryRetrieveInformationModelFind,
PatientRootQueryRetrieveInformationModelMove,
PatientRootQueryRetrieveInformationModelGet,
PatientRootQueryRetrieveInformationModelMove,
StudyRootQueryRetrieveInformationModelFind,
StudyRootQueryRetrieveInformationModelMove,
StudyRootQueryRetrieveInformationModelGet,
StudyRootQueryRetrieveInformationModelMove,
)


Expand Down
3 changes: 1 addition & 2 deletions pynetdicom/apps/qrscp/handlers.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,10 @@
import os

from pydicom import dcmread

from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker

from pynetdicom.apps.qrscp.db import add_instance, search, InvalidIdentifier, Instance
from pynetdicom.apps.qrscp.db import Instance, InvalidIdentifier, add_instance, search


def handle_echo(event, cli_config, logger):
Expand Down
Loading