Skip to content
Draft
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
22 changes: 19 additions & 3 deletions pynats/client.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,6 @@
from typing import BinaryIO, Callable, Dict, Match, Optional, Pattern, Tuple, Union
from urllib.parse import urlparse

import pkg_resources

from pynats.exceptions import (
NATSInvalidResponse,
NATSInvalidSchemeError,
Expand All @@ -21,6 +19,9 @@

__all__ = ("NATSSubscription", "NATSMessage", "NATSClient")

DISTRIBUTION_NAME = "nats-python"
DEFAULT_CLIENT_VERSION = "0.9.0-alpha.0"


INFO_OP = b"INFO"
CONNECT_OP = b"CONNECT"
Expand Down Expand Up @@ -57,6 +58,21 @@
INBOX_PREFIX = bytearray(b"_INBOX.")


def _get_client_version() -> str:
try:
from importlib.metadata import PackageNotFoundError, version
except ImportError: # pragma: no cover
try:
from importlib_metadata import PackageNotFoundError, version
except ImportError:
return DEFAULT_CLIENT_VERSION

try:
return version(DISTRIBUTION_NAME)
except PackageNotFoundError:
return DEFAULT_CLIENT_VERSION


@dataclass
class NATSSubscription:
sid: int
Expand Down Expand Up @@ -96,7 +112,7 @@ class NATSConnOptions:
tls_client_key: Optional[str] = None
tls_hostname: Optional[str] = None
tls_verify: bool = False
version: str = pkg_resources.get_distribution("nats-python").version
version: str = _get_client_version()
verbose: bool = False
pedantic: bool = False

Expand Down