Skip to content

Commit cf4e554

Browse files
authored
Merge 1a79912 into b1247cd
2 parents b1247cd + 1a79912 commit cf4e554

File tree

2 files changed

+34
-2
lines changed

2 files changed

+34
-2
lines changed

notecard/notecard.py

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -111,10 +111,11 @@ class Notecard:
111111

112112
def __init__(self, debug=False):
113113
"""Initialize the Notecard object."""
114+
self.__version__ = self._fetch_version()
114115
self._user_agent_app = None
115116
self._user_agent_sent = False
116117
self._user_agent = {
117-
'agent': 'note-python',
118+
'agent': f'note-python {self.__version__}'.strip(),
118119
'os_name': sys.implementation.name,
119120
'os_platform': sys.platform,
120121
'os_version': sys.version
@@ -129,6 +130,22 @@ def __init__(self, debug=False):
129130
self._card_supports_crc = False
130131
self._reset_required = True
131132

133+
def _fetch_version(self):
134+
"""Fetch the version of the note-python library."""
135+
try:
136+
# Check development version
137+
import tomllib
138+
with open('pyproject.toml', 'rb') as f:
139+
data = tomllib.load(f)
140+
return data['project']['version']
141+
except Exception:
142+
# Check installed version
143+
try:
144+
import importlib.metadata
145+
return importlib.metadata.version('note-python')
146+
except Exception:
147+
return ''
148+
132149
def _crc_add(self, req_string, seq_number):
133150
"""Add a CRC field to the request.
134151

test/test_notecard.py

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -442,12 +442,27 @@ def test_get_user_agent(self):
442442
card = notecard.Notecard()
443443
userAgent = card.GetUserAgent()
444444

445-
assert userAgent['agent'] == 'note-python'
445+
expected_agent = f'note-python {card.__version__}'.strip()
446+
assert userAgent['agent'] == expected_agent
446447
assert userAgent['os_name'] is not None
447448
assert userAgent['os_platform'] is not None
448449
assert userAgent['os_version'] is not None
449450
assert userAgent['os_family'] is not None
450451

452+
def test_get_user_agent_with_custom_version(self):
453+
with patch.object(notecard.Notecard, '_fetch_version', return_value='1.1.1'):
454+
card = notecard.Notecard()
455+
userAgent = card.GetUserAgent()
456+
457+
assert userAgent['agent'] == 'note-python 1.1.1'
458+
459+
def test_get_user_agent_with_missing_version(self):
460+
with patch.object(notecard.Notecard, '_fetch_version', return_value=''):
461+
card = notecard.Notecard()
462+
userAgent = card.GetUserAgent()
463+
464+
assert userAgent['agent'] == 'note-python'
465+
451466
# SetAppUserAgent tests.
452467
def set_user_agent_info(self, info=None):
453468
card = notecard.Notecard()

0 commit comments

Comments
 (0)